MODULE = Git::Raw PACKAGE = Git::Raw::RefSpec
RefSpec
parse(class, input, is_fetch)
SV *class
SV *input
SV *is_fetch
PREINIT:
int rc;
git_refspec *s = NULL;
RefSpec spec = NULL;
CODE:
rc = git_refspec_parse(&s, git_ensure_pv(input, "input"),
git_ensure_iv(is_fetch, "is_fetch"));
git_check_error(rc);
Newxz(spec, 1, git_raw_refspec);
spec -> refspec = s;
spec -> owned = 1;
RETVAL = spec;
OUTPUT: RETVAL
SV *
dst(self)
RefSpec self
CODE:
RETVAL = newSVpv(git_refspec_dst(self -> refspec), 0);
OUTPUT: RETVAL
SV *
dst_matches(self, ref)
RefSpec self
SV *ref
PREINIT:
const char *ref_name;
CODE:
ref_name = git_ensure_pv(ref, "name");
RETVAL = newSViv(git_refspec_dst_matches(self -> refspec, ref_name));
OUTPUT: RETVAL
SV *
src(self)
RefSpec self
CODE:
RETVAL = newSVpv(git_refspec_src(self -> refspec), 0);
OUTPUT: RETVAL
SV *
src_matches(self, ref)
RefSpec self
SV *ref
PREINIT:
const char *ref_name;
CODE:
ref_name = git_ensure_pv(ref, "name");
RETVAL = newSViv(git_refspec_src_matches(self -> refspec, ref_name));
OUTPUT: RETVAL
SV *
string(self)
RefSpec self
CODE:
RETVAL = newSVpv(git_refspec_string(self -> refspec), 0);
OUTPUT: RETVAL
SV *
direction(self)
RefSpec self
PREINIT:
git_direction dir;
CODE:
dir = git_refspec_direction(self -> refspec);
if (dir == GIT_DIRECTION_FETCH)
RETVAL = newSVpv("fetch", 0);
else if (dir == GIT_DIRECTION_PUSH)
RETVAL = newSVpv("push", 0);
else
RETVAL = &PL_sv_undef;
OUTPUT: RETVAL
SV *
transform(self, ref)
RefSpec self
SV *ref
PREINIT:
int rc;
const char *ref_name;
git_buf buf = GIT_BUF_INIT_CONST(NULL, 0);
CODE:
RETVAL = &PL_sv_undef;
ref_name = git_ensure_pv(ref, "name");
rc = git_refspec_transform(&buf, self -> refspec, ref_name);
if (rc == GIT_OK)
RETVAL = newSVpv(buf.ptr, buf.size);
git_buf_dispose(&buf);
git_check_error(rc);
OUTPUT: RETVAL
SV *
rtransform(self, ref)
RefSpec self
SV *ref
PREINIT:
int rc;
const char *ref_name;
git_buf buf = GIT_BUF_INIT_CONST(NULL, 0);
CODE:
RETVAL = &PL_sv_undef;
ref_name = git_ensure_pv(ref, "name");
rc = git_refspec_rtransform(&buf, self -> refspec, ref_name);
if (rc == GIT_OK)
RETVAL = newSVpv(buf.ptr, buf.size);
git_buf_dispose(&buf);
git_check_error(rc);
OUTPUT: RETVAL
SV *
is_force(self)
RefSpec self
CODE:
RETVAL = newSViv(git_refspec_force(self -> refspec));
OUTPUT: RETVAL
void
DESTROY(self)
SV *self
PREINIT:
RefSpec spec;
CODE:
spec = GIT_SV_TO_PTR(RefSpec, self);
if (spec -> owned)
git_refspec_free(spec -> refspec);
else
SvREFCNT_dec(GIT_SV_TO_MAGIC(self));
Safefree(spec);