diff options
Diffstat (limited to 'src/repository.h')
| -rw-r--r-- | src/repository.h | 11 |
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); |
