summaryrefslogtreecommitdiff
path: root/src/repository.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/repository.h')
-rw-r--r--src/repository.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/repository.h b/src/repository.h
index c8e4186b3..2e8d187b0 100644
--- a/src/repository.h
+++ b/src/repository.h
@@ -15,6 +15,8 @@
#define GIT_OBJECTS_DIR "objects/"
#define GIT_INDEX_FILE "index"
+#define GIT_OBJECT_INCREF(ob) ++(((git_object *)(ob))->refcount)
+
typedef struct {
git_rawobj raw;
void *write_ptr;
@@ -26,13 +28,16 @@ struct git_object {
git_oid id;
git_repository *repo;
git_odb_source source;
- int in_memory:1, modified:1;
+ unsigned short refcount;
+ short in_memory:1, modified:1;
};
struct git_repository {
git_odb *db;
git_index *index;
+
git_hashtable *objects;
+ git_vector memory_objects;
git_refcache references;
@@ -47,6 +52,10 @@ struct git_repository {
int git_object__source_open(git_object *object);
void git_object__source_close(git_object *object);
+/* fully free the object; internal method, do not
+ * export */
+void git_object__free(git_object *object);
+
int git__source_printf(git_odb_source *source, const char *format, ...);
int git__source_write(git_odb_source *source, const void *bytes, size_t len);