Re: [PATCH 4/5] odb/source: introduce function to map source type to name
Junio C Hamano <[email protected]>
| Newsgroups | org.kernel.vger.git |
|---|---|
| Message-ID | <[email protected]> |
Patrick Steinhardt <[email protected]> writes: > Introduce a new function that maps an object source's type to a > human-readable name. Use the function to provide better human-readable > error messages for the downcasting functions. > > Signed-off-by: Patrick Steinhardt <[email protected]> > --- > odb/source-files.h | 4 +++- > odb/source-inmemory.h | 4 +++- > odb/source-loose.h | 4 +++- > odb/source-packed.h | 4 +++- > odb/source.c | 19 +++++++++++++++++++ > odb/source.h | 6 ++++++ > 6 files changed, 37 insertions(+), 4 deletions(-) OK. > +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] = "inmemory", > +}; This is a trivially obvious implementation for mapping in either direction. 'inmemory' should probably be spelled 'in-memory', though. Thanks. > +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) > diff --git a/odb/source.h b/odb/source.h > index cd63dba91f..ab16d152f4 100644 > --- a/odb/source.h > +++ b/odb/source.h > @@ -25,6 +25,12 @@ enum odb_source_type { > ODB_SOURCE_INMEMORY, > }; > > +/* > + * Convert between the enum and its name. Returns the equivalent of "unknown" > + * for unknown types. > + */ > +const char *odb_source_type_to_name(enum odb_source_type type); > + > struct object_id; > struct odb_read_stream; > struct strvec;