Re: flags types/names
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 31, 2022, 17:13 UTC
- Message-ID
- <xmqqbkzrkevo.fsf@gitster.g>
- In-Reply-To
- <CAFQ2z_M_SXENMU6Y3Evrz9-G_+pqjd-zPQiZjnA_y2hvb+Egkw@mail.gmail.com>
Han-Wen Nienhuys <hanwen@google.com> writes:
> My questions: > > * am I the only one who struggles with the different flavor of `flags` ?
Probably no.
Show 13 quoted lines
> * if no, what should be done about this? Maybe
>
> typedef unsigned int ref_flags;
> #define REF_IS_SYMREF 0x1
> char *refs_resolve_ref_unsafe(const char *refname, ref_flags *flags, ... );
>
> or
>
> typedef enum ref_flags {
> REF_IS_SYMREF = 0x1,
> };
> char *refs_resolve_ref_unsafe(const char *refname, enum ref_flags
> *flags, ... );It is very good to use symbolic constants implemented either as C preprocessor macros or enums, I would think.
However, I am not enthused to see typedefs; I've never seen multiple typedefs of the same integral type did anything useful in C. Perhaps things are different in the C++ land, but we do not live there.
> A somewhat related gripe is that some code uses `int flags` and other > code uses `unsigned flags`. It would be great to standardize this.
I agree. Unless there is very compelling reason to single out the topmost bit and treat it as special, a set of flag bits should be "unsigned".