Git-Raw
view release on metacpan or search on metacpan
xs/Walker.xs view on Meta::CPAN
Walker self
char* ref
PREINIT:
int rc;
CODE:
rc = git_revwalk_hide_ref(self, ref);
git_check_error(rc);
void
hide_head(self)
Walker self
PREINIT:
int rc;
CODE:
rc = git_revwalk_hide_head(self);
git_check_error(rc);
SV *
next(self)
SV *self
PREINIT:
int rc;
SV *repo;
Walker walk;
git_oid oid;
Commit commit = NULL;
CODE:
repo = GIT_SV_TO_MAGIC(self);
walk = GIT_SV_TO_PTR(Walker, self);
rc = git_revwalk_next(&oid, walk);
if (rc == GIT_ITEROVER)
XSRETURN_UNDEF;
git_check_error(rc);
rc = git_commit_lookup(&commit, git_revwalk_repository(walk), &oid);
git_check_error(rc);
GIT_NEW_OBJ_WITH_MAGIC(
RETVAL, "Git::Raw::Commit", commit, repo
);
OUTPUT: RETVAL
void
all(self)
SV *self
PREINIT:
int ctx;
PPCODE:
ctx = GIMME_V;
if (ctx != G_VOID) {
int rc;
git_oid oid;
size_t count = 0;
SV *repo = GIT_SV_TO_MAGIC(self);
Walker walk = GIT_SV_TO_PTR(Walker, self);
while ((rc = git_revwalk_next(&oid, walk)) != GIT_ITEROVER) {
git_check_error(rc);
if (ctx == G_ARRAY) {
Commit commit = NULL;
SV *tmp;
rc = git_commit_lookup(&commit, git_revwalk_repository(walk), &oid);
git_check_error(rc);
GIT_NEW_OBJ_WITH_MAGIC(
tmp, "Git::Raw::Commit", commit, repo
);
mXPUSHs(tmp);
}
++count;
}
if (ctx == G_ARRAY) {
XSRETURN((int) count);
} else {
mXPUSHs(newSViv((int) count));
XSRETURN(1);
}
} else
XSRETURN_EMPTY;
void
reset(self)
Walker self
CODE:
git_revwalk_reset(self);
void
DESTROY(self)
SV *self
CODE:
git_revwalk_free(GIT_SV_TO_PTR(Walker, self));
SvREFCNT_dec(GIT_SV_TO_MAGIC(self));
( run in 0.607 second using v1.01-cache-2.11-cpan-5511b514fd6 )