MODULE = Git::Raw PACKAGE = Git::Raw::Object
INCLUDE: const-xs-object.inc
SV *
id(self)
Object self
CODE:
RETVAL = git_oid_to_sv(git_object_id(self));
OUTPUT: RETVAL
SV *
lookup(class, repo, id)
SV *class
SV *repo
SV *id
PREINIT:
int rc;
git_oid oid;
git_object *obj;
STRLEN len;
const char *id_str;
Repository repo_ptr = NULL;
CODE:
id_str = git_ensure_pv_with_len(id, "id", &len);
rc = git_oid_fromstrn(&oid, id_str, len);
git_check_error(rc);
repo_ptr = GIT_SV_TO_PTR(Repository, repo);
rc = git_object_lookup_prefix(
&obj, repo_ptr -> repository, &oid, len, GIT_OBJ_ANY
);
if (rc == GIT_ENOTFOUND)
XSRETURN_UNDEF;
git_check_error(rc);
GIT_NEW_OBJ_WITH_MAGIC(
RETVAL, "Git::Raw::Object",
obj, repo
);
OUTPUT: RETVAL
SV *
type(self)
Object self
CODE:
RETVAL = newSViv(git_object_type(self));
OUTPUT: RETVAL
void
DESTROY(self)
SV *self
CODE:
git_object_free(GIT_SV_TO_PTR(Object, self));
SvREFCNT_dec(GIT_SV_TO_MAGIC(self));