diff options
| author | Vicent Marti <tanoku@gmail.com> | 2010-09-19 03:21:06 +0300 |
|---|---|---|
| committer | Vicent Marti <tanoku@gmail.com> | 2010-09-19 03:21:06 +0300 |
| commit | f49a2e4981d747f96246bc0c8e75e618419f4eee (patch) | |
| tree | cae3615bb5d0f94a4ac7dadbb53fbe20f4a52c8f /src/repository.c | |
| parent | a7a7ddbe0f097923feb9ed31502857891e02824f (diff) | |
| download | libgit2-f49a2e4981d747f96246bc0c8e75e618419f4eee.tar.gz | |
Give object structures more descriptive names
The 'git_obj' structure is now called 'git_rawobj', since
it represents a raw object read from the ODB.
The 'git_repository_object' structure is now called 'git_object',
since it's the base object class for all objects.
Signed-off-by: Vicent Marti <tanoku@gmail.com>
Diffstat (limited to 'src/repository.c')
| -rw-r--r-- | src/repository.c | 120 |
1 files changed, 59 insertions, 61 deletions
diff --git a/src/repository.c b/src/repository.c index 443697155..e921c3454 100644 --- a/src/repository.c +++ b/src/repository.c @@ -31,7 +31,7 @@ static const int default_table_size = 32; static const double max_load_factor = 0.65; -uint32_t git_repository_object_hash(const void *key) +uint32_t git_object_hash(const void *key) { uint32_t r; git_oid *id; @@ -41,12 +41,12 @@ uint32_t git_repository_object_hash(const void *key) return r; } -int git_repository_object_haskey(void *object, const void *key) +int git_object_haskey(void *object, const void *key) { - git_repository_object *obj; + git_object *obj; git_oid *oid; - obj = (git_repository_object *)object; + obj = (git_object *)object; oid = (git_oid *)key; return (git_oid_cmp(oid, &obj->id) == 0); @@ -62,8 +62,8 @@ git_repository *git_repository_alloc(git_odb *odb) repo->objects = git_hashtable_alloc( default_table_size, - git_repository_object_hash, - git_repository_object_haskey); + git_object_hash, + git_object_haskey); if (repo->objects == NULL) { free(repo); @@ -78,128 +78,126 @@ git_repository *git_repository_alloc(git_odb *odb) void git_repository_free(git_repository *repo) { git_hashtable_iterator it; - git_repository_object *object; + git_object *object; git_hashtable_iterator_init(repo->objects, &it); - while ((object = (git_repository_object *) + while ((object = (git_object *) git_hashtable_iterator_next(&it)) != NULL) - git_repository_object_free(object); + git_object_free(object); git_hashtable_free(repo->objects); /* TODO: free odb */ free(repo); } -void git_repository__dbo_prepare_write(git_repository_object *object) +void git_object__source_prepare_write(git_object *object) { size_t base_size = 512; - if (object->writeback.write_ptr != NULL || object->dbo_open) - git_repository__dbo_close(object); + if (object->source.write_ptr != NULL || object->source.open) + git_object__source_close(object); /* TODO: proper size calculation */ - object->dbo.data = git__malloc(base_size); - object->dbo.len = 0; + object->source.raw.data = git__malloc(base_size); + object->source.raw.len = base_size; - object->writeback.write_ptr = object->dbo.data; - object->writeback.ptr_size = base_size; - object->writeback.written_bytes = 0; + object->source.write_ptr = object->source.raw.data; + object->source.written_bytes = 0; - object->dbo_open = 1; - object->out_of_sync = 1; + object->source.open = 1; + object->source.out_of_sync = 1; } -int git_repository__dbo_write(git_repository_object *object, const void *bytes, size_t len) +int git_object__source_write(git_object *object, const void *bytes, size_t len) { assert(object); - if (!object->dbo_open || object->writeback.write_ptr == NULL) + if (!object->source.open || object->source.write_ptr == NULL) return GIT_ERROR; /* TODO: resize buffer on overflow */ - if (object->writeback.written_bytes + len >= object->writeback.ptr_size) + if (object->source.written_bytes + len >= object->source.raw.len) return GIT_ENOMEM; - memcpy(object->writeback.write_ptr, bytes, len); - object->writeback.write_ptr += len; - object->writeback.written_bytes += len; + memcpy(object->source.write_ptr, bytes, len); + object->source.write_ptr += len; + object->source.written_bytes += len; return GIT_SUCCESS; } -int git_repository__dbo_writeback(git_repository_object *object) +int git_object__source_writeback(git_object *object) { int error; git_oid new_id; assert(object); - if (!object->dbo_open) + if (!object->source.open) return GIT_ERROR; - if (!object->out_of_sync) + if (!object->source.out_of_sync) return GIT_SUCCESS; - object->dbo.len = object->writeback.written_bytes; + object->source.raw.len = object->source.written_bytes; - git_obj_hash(&new_id, &object->dbo); + git_obj_hash(&new_id, &object->source.raw); - if ((error = git_odb_write(&new_id, object->repo->db, &object->dbo)) < 0) + if ((error = git_odb_write(&new_id, object->repo->db, &object->source.raw)) < 0) return error; git_hashtable_remove(object->repo->objects, &object->id); git_oid_cpy(&object->id, &new_id); git_hashtable_insert(object->repo->objects, &object->id, object); - object->writeback.write_ptr = NULL; - object->writeback.ptr_size = 0; - object->writeback.written_bytes = 0; + object->source.write_ptr = NULL; + object->source.written_bytes = 0; - git_repository__dbo_close(object); + git_object__source_close(object); return GIT_SUCCESS; } -int git_repository__dbo_open(git_repository_object *object) +int git_object__source_open(git_object *object) { int error; assert(object); - if (object->dbo_open && object->out_of_sync) - git_repository__dbo_close(object); + if (object->source.open && object->source.out_of_sync) + git_object__source_close(object); - if (object->dbo_open) + if (object->source.open) return GIT_SUCCESS; - error = git_odb_read(&object->dbo, object->repo->db, &object->id); + error = git_odb_read(&object->source.raw, object->repo->db, &object->id); if (error < 0) return error; - object->dbo_open = 1; - object->out_of_sync = 0; + object->source.open = 1; + object->source.out_of_sync = 0; return GIT_SUCCESS; } -void git_repository__dbo_close(git_repository_object *object) +void git_object__source_close(git_object *object) { assert(object); - if (!object->dbo_open) { - git_obj_close(&object->dbo); - object->dbo_open = 0; - object->out_of_sync = 0; + if (!object->source.open) { + git_obj_close(&object->source.raw); + object->source.open = 0; + object->source.out_of_sync = 0; } } -void git_repository_object_free(git_repository_object *object) +void git_object_free(git_object *object) { assert(object); git_hashtable_remove(object->repo->objects, &object->id); - git_obj_close(&object->dbo); + git_obj_close(&object->source.raw); - switch (object->dbo.type) { + switch (object->source.raw.type) { case GIT_OBJ_COMMIT: git_commit__free((git_commit *)object); break; @@ -224,30 +222,30 @@ git_odb *git_repository_database(git_repository *repo) return repo->db; } -const git_oid *git_repository_object_id(git_repository_object *obj) +const git_oid *git_object_id(git_object *obj) { assert(obj); return &obj->id; } -git_otype git_repository_object_type(git_repository_object *obj) +git_otype git_object_type(git_object *obj) { assert(obj); - return obj->dbo.type; + return obj->source.raw.type; } -git_repository_object *git_repository_lookup(git_repository *repo, const git_oid *id, git_otype type) +git_object *git_repository_lookup(git_repository *repo, const git_oid *id, git_otype type) { static const size_t object_sizes[] = { 0, sizeof(git_commit), sizeof(git_tree), - sizeof(git_repository_object), /* TODO: sizeof(git_blob) */ + sizeof(git_object), /* TODO: sizeof(git_blob) */ sizeof(git_tag) }; - git_repository_object *object = NULL; - git_obj obj_file; + git_object *object = NULL; + git_rawobj obj_file; assert(repo); @@ -273,8 +271,8 @@ git_repository_object *git_repository_lookup(git_repository *repo, const git_oid /* Initialize parent object */ git_oid_cpy(&object->id, id); object->repo = repo; - object->dbo_open = 1; - memcpy(&object->dbo, &obj_file, sizeof(git_obj)); + object->source.open = 1; + memcpy(&object->source.raw, &obj_file, sizeof(git_rawobj)); switch (type) { @@ -307,8 +305,8 @@ git_repository_object *git_repository_lookup(git_repository *repo, const git_oid break; } - git_obj_close(&object->dbo); - object->dbo_open = 0; + git_obj_close(&object->source.raw); + object->source.open = 0; git_hashtable_insert(repo->objects, &object->id, object); return object; |
