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;
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.