| #include "git-compat-util.h" | |
| #include "object-file.h" | |
| #include "odb/source-files.h" | |
| #include "odb/source.h" | |
| #include "packfile.h" | |
| static const char * const odb_source_names_by_type[] = { | |
| [ODB_SOURCE_UNKNOWN] = "unknown", | |
| [ODB_SOURCE_FILES] = "files", | |
| [ODB_SOURCE_LOOSE] = "loose", | |
| [ODB_SOURCE_PACKED] = "packed", | |
| [ODB_SOURCE_INMEMORY] = "in-memory", | |
| }; | |
| const char *odb_source_type_to_name(enum odb_source_type type) | |
| { | |
| const char *name; | |
| if (type < 0 || type >= ARRAY_SIZE(odb_source_names_by_type)) | |
| type = ODB_SOURCE_UNKNOWN; | |
| name = odb_source_names_by_type[type]; | |
| if (!name) | |
| BUG("name missing in `odb_source_names_by_type` for '%d'", type); | |
| return name; | |
| } | |
| struct odb_source *odb_source_new(struct object_database *odb, | |
| const char *path, | |
| bool local) | |
| { | |
| return &odb_source_files_new(odb, path, local)->base; | |
| } | |
| void odb_source_init(struct odb_source *source, | |
| struct object_database *odb, | |
| enum odb_source_type type, | |
| const char *path, | |
| bool local) | |
| { | |
| source->odb = odb; | |
| source->type = type; | |
| source->local = local; | |
| source->path = xstrdup(path); | |
| } | |
| void odb_source_free(struct odb_source *source) | |
| { | |
| if (!source) | |
| return; | |
| source->free(source); | |
| } | |
| void odb_source_release(struct odb_source *source) | |
| { | |
| if (!source) | |
| return; | |
| free(source->path); | |
| } |