From 1881f0783b6dd23fb40ba0b43a4ec98bb08a637c Mon Sep 17 00:00:00 2001 From: Vicent Marti Date: Mon, 21 Mar 2011 20:28:02 +0200 Subject: [PATCH] Add getters for `git_odb_object` --- include/git2/odb.h | 42 ++++++++++++++++++++++++++++++++++++++++++ src/odb.c | 20 ++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/include/git2/odb.h b/include/git2/odb.h index 8926b446c..1a0f0e64c 100644 --- a/include/git2/odb.h +++ b/include/git2/odb.h @@ -235,6 +235,48 @@ GIT_EXTERN(int) git_odb_hash(git_oid *id, const void *data, size_t len, git_otyp */ GIT_EXTERN(void) git_odb_object_close(git_odb_object *object); +/** + * Return the OID of an ODB object + * + * This is the OID from which the object was read from + * + * @param object the object + * @return a pointer to the OID + */ +GIT_EXTERN(const git_oid *) git_odb_object_id(git_odb_object *object); + +/** + * Return the data of an ODB object + * + * This is the uncompressed, raw data as read from the ODB, + * without the leading header. + * + * This pointer is owned by the object and shall not be free'd. + * + * @param object the object + * @return a pointer to the data + */ +GIT_EXTERN(const void *) git_odb_object_data(git_odb_object *object); + +/** + * Return the size of an ODB object + * + * This is the real size of the `data` buffer, not the + * actual size of the object. + * + * @param object the object + * @return the size + */ +GIT_EXTERN(size_t) git_odb_object_size(git_odb_object *object); + +/** + * Return the type of an ODB object + * + * @param object the object + * @return the type + */ +GIT_EXTERN(git_otype) git_odb_object_type(git_odb_object *object); + /** @} */ GIT_END_DECL #endif diff --git a/src/odb.c b/src/odb.c index 9aeaa8a23..d825fd95c 100644 --- a/src/odb.c +++ b/src/odb.c @@ -109,6 +109,26 @@ static void free_odb_object(void *o) } } +const git_oid *git_odb_object_id(git_odb_object *object) +{ + return &object->cached.oid; +} + +const void *git_odb_object_data(git_odb_object *object) +{ + return object->raw.data; +} + +size_t git_odb_object_size(git_odb_object *object) +{ + return object->raw.len; +} + +git_otype git_odb_object_type(git_odb_object *object) +{ + return object->raw.type; +} + void git_odb_object_close(git_odb_object *object) { git_cached_obj_decref((git_cached_obj *)object, &free_odb_object);