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 <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Patrick Steinhardt committed
Oct 23, 2025 at 09:16 UTC
eb2934d94b43388642ce4840994800310a6d3456
1 file changed
+21
-20
refs.h
+21
-20
@@ -333,27 +333,28 @@ struct ref_transaction;
333
* stored in ref_iterator::flags. Other bits are for internal use
334
* only:
335
*/
336
+enum reference_status {
337
+ /* Reference is a symbolic reference. */
338
+ REF_ISSYMREF = (1 << 0),
339
337
-/* Reference is a symbolic reference. */
338
-#define REF_ISSYMREF 0x01
340
+ /* Reference is a packed reference. */
341
+ REF_ISPACKED = (1 << 1),
342
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),
350
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
+};
358
359
/* A reference passed to `for_each_ref()`-style callbacks. */
360
struct reference {
@@ -370,8 +371,8 @@ struct reference {
371
*/
372
const struct object_id *oid;
373
373
- /* A bitfield of `REF_` flags. */
374
- int flags;
374
+ /* A bitfield of `enum reference_status` flags. */
375
+ unsigned flags;
376
};
377
378
/*