The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
MODULE = Git::Raw			PACKAGE = Git::Raw::Diff::Stats

SV *
deletions(self)
	Diff_Stats self

	CODE:
		RETVAL = newSVuv(git_diff_stats_deletions(self));

	OUTPUT: RETVAL

SV *
insertions(self)
	Diff_Stats self

	CODE:
		RETVAL = newSVuv(git_diff_stats_insertions(self));

	OUTPUT: RETVAL

SV *
files_changed(self)
	Diff_Stats self

	CODE:
		RETVAL = newSVuv(git_diff_stats_files_changed(self));

	OUTPUT: RETVAL

SV *
buffer(self, ...)
	Diff_Stats self

	PROTOTYPE: $;$
	PREINIT:
		int rc;
		size_t width = 0;

		git_buf buf = GIT_BUF_INIT_CONST(NULL, 0);

		git_diff_stats_format_t format = GIT_DIFF_STATS_NONE;

	CODE:
		if (items == 2) {
			HV *opts = git_ensure_hv(ST(1), "options");
			HV *flags;

			if ((flags = git_hv_hash_entry(opts, "flags"))) {
				unsigned out = 0;

				git_flag_opt(flags, "full", GIT_DIFF_STATS_FULL, &out);
				git_flag_opt(flags, "short", GIT_DIFF_STATS_SHORT, &out);
				git_flag_opt(flags, "number", GIT_DIFF_STATS_NUMBER, &out);
				git_flag_opt(flags, "summary", GIT_DIFF_STATS_INCLUDE_SUMMARY, &out);

				format = out;
			}
		}

		rc = git_diff_stats_to_buf(&buf, self, format, width);
		git_check_error(rc);

		RETVAL = newSVpv(buf.ptr, buf.size);

		git_buf_free(&buf);

	OUTPUT: RETVAL

void
DESTROY(self)
	SV *self

	CODE:
		git_diff_stats_free(GIT_SV_TO_PTR(Diff::Stats, self));
		SvREFCNT_dec(GIT_SV_TO_MAGIC(self));