Skip to content

Commit d1bef4a

Browse files
pks-tgitster
authored andcommitted
refs: refactor reference status flags
The reference flags encode information like whether or not a reference is a symbolic reference or whether it may be broken. This information is stored in a `int flags` bitfield, which is in conflict with our modern best practices; we tend to use an unsigned integer to store flags. Change the type of the field to be `unsigned`. While at it, refactor the individual flags to be part of an `enum` instead of using preprocessor defines. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 3931216 commit d1bef4a

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

refs.h

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -333,27 +333,28 @@ struct ref_transaction;
333333
* stored in ref_iterator::flags. Other bits are for internal use
334334
* only:
335335
*/
336+
enum reference_status {
337+
/* Reference is a symbolic reference. */
338+
REF_ISSYMREF = (1 << 0),
336339

337-
/* Reference is a symbolic reference. */
338-
#define REF_ISSYMREF 0x01
340+
/* Reference is a packed reference. */
341+
REF_ISPACKED = (1 << 1),
339342

340-
/* Reference is a packed reference. */
341-
#define REF_ISPACKED 0x02
342-
343-
/*
344-
* Reference cannot be resolved to an object name: dangling symbolic
345-
* reference (directly or indirectly), corrupt reference file,
346-
* reference exists but name is bad, or symbolic reference refers to
347-
* ill-formatted reference name.
348-
*/
349-
#define REF_ISBROKEN 0x04
343+
/*
344+
* Reference cannot be resolved to an object name: dangling symbolic
345+
* reference (directly or indirectly), corrupt reference file,
346+
* reference exists but name is bad, or symbolic reference refers to
347+
* ill-formatted reference name.
348+
*/
349+
REF_ISBROKEN = (1 << 2),
350350

351-
/*
352-
* Reference name is not well formed.
353-
*
354-
* See git-check-ref-format(1) for the definition of well formed ref names.
355-
*/
356-
#define REF_BAD_NAME 0x08
351+
/*
352+
* Reference name is not well formed.
353+
*
354+
* See git-check-ref-format(1) for the definition of well formed ref names.
355+
*/
356+
REF_BAD_NAME = (1 << 3),
357+
};
357358

358359
/* A reference passed to `for_each_ref()`-style callbacks. */
359360
struct reference {
@@ -370,8 +371,8 @@ struct reference {
370371
*/
371372
const struct object_id *oid;
372373

373-
/* A bitfield of `REF_` flags. */
374-
int flags;
374+
/* A bitfield of `enum reference_status` flags. */
375+
unsigned flags;
375376
};
376377

377378
/*

0 commit comments

Comments
 (0)