Git-Raw
view release on metacpan or search on metacpan
xs/Blame.xs view on Meta::CPAN
MODULE = Git::Raw PACKAGE = Git::Raw::Blame
SV *
hunk_count(self)
Blame self
CODE:
RETVAL = newSVuv(git_blame_get_hunk_count(self));
OUTPUT: RETVAL
void
hunks(self, ...)
SV *self
PROTOTYPE: $;$
PREINIT:
size_t start = 0, end, num_hunks;
PPCODE:
num_hunks = git_blame_get_hunk_count(GIT_SV_TO_PTR(Blame, self));
if (items == 2) {
SV *index = ST(1);
if (!SvIOK(index) || SvIV(index) < 0)
croak_usage("Invalid type for 'index'");
start = SvUV(index);
if (start >= num_hunks)
croak_usage("index %" PRIuZ " out of range", start);
num_hunks = 1;
}
end = start + num_hunks;
for (; start < end; ++start) {
SV *hunk;
const git_blame_hunk *h =
git_blame_get_hunk_byindex(GIT_SV_TO_PTR(Blame, self),
start);
GIT_NEW_OBJ_WITH_MAGIC(
hunk, "Git::Raw::Blame::Hunk",
(Blame_Hunk) h, SvRV(self)
);
mXPUSHs(hunk);
}
XSRETURN(num_hunks);
SV *
buffer(self, buffer)
SV *self
SV *buffer
PREINIT:
int rc;
Blame blame;
const char *text;
STRLEN len;
CODE:
text = git_ensure_pv_with_len(buffer, "buffer", &len);
rc = git_blame_buffer(
&blame, GIT_SV_TO_PTR(Blame, self),
text, len);
git_check_error(rc);
GIT_NEW_OBJ_WITH_MAGIC(
RETVAL, "Git::Raw::Blame",
blame, SvRV(self));
OUTPUT: RETVAL
( run in 0.595 second using v1.01-cache-2.11-cpan-5511b514fd6 )