summaryrefslogtreecommitdiff
path: root/include/git2/object.h
diff options
context:
space:
mode:
authornulltoken <emeric.fermas@gmail.com>2012-07-15 11:06:15 +0200
committernulltoken <emeric.fermas@gmail.com>2012-07-17 20:32:40 +0200
commitdb9be9457d74a683916f107b39cad05a347b4c2c (patch)
treee315b7dd7b7c629c8a651a588ea8aec9543ed3bb /include/git2/object.h
parentb8748c1217445a95d3b29b361b467eb66992f8a7 (diff)
downloadlibgit2-db9be9457d74a683916f107b39cad05a347b4c2c.tar.gz
object: introduce git_object_peel()
Partially fix #530
Diffstat (limited to 'include/git2/object.h')
-rw-r--r--include/git2/object.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/include/git2/object.h b/include/git2/object.h
index 414325121..d9e653fd4 100644
--- a/include/git2/object.h
+++ b/include/git2/object.h
@@ -167,6 +167,23 @@ GIT_EXTERN(int) git_object_typeisloose(git_otype type);
*/
GIT_EXTERN(size_t) git_object__size(git_otype type);
+/**
+ * Recursively peel an object until an object of the specified
+ * type is met
+ *
+ * The retrieved `peeled` object is owned by the repository
+ * and should be closed with the `git_object_free` method.
+ *
+ * @param peeled Pointer to the peeled git_object
+ * @param object The object to be processed
+ * @param target_type The type of the requested object
+ * @return 0 or an error code
+ */
+GIT_EXTERN(int) git_object_peel(
+ git_object **peeled,
+ git_object *object,
+ git_otype target_type);
+
/** @} */
GIT_END_DECL