Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make make: inline SuffixFlags into the Suffix itself



details:   https://anonhg.NetBSD.org/src/rev/81a15f28ae53
branches:  trunk
changeset: 1026561:81a15f28ae53
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sun Nov 28 22:27:35 2021 +0000

description:
make: inline SuffixFlags into the Suffix itself

No functional change.

diffstat:

 usr.bin/make/suff.c |  107 ++++++++++++++++++++++++---------------------------
 1 files changed, 51 insertions(+), 56 deletions(-)

diffs (240 lines):

diff -r f100fddfd698 -r 81a15f28ae53 usr.bin/make/suff.c
--- a/usr.bin/make/suff.c       Sun Nov 28 21:46:17 2021 +0000
+++ b/usr.bin/make/suff.c       Sun Nov 28 22:27:35 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: suff.c,v 1.352 2021/11/28 18:58:58 rillig Exp $        */
+/*     $NetBSD: suff.c,v 1.353 2021/11/28 22:27:35 rillig Exp $        */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -115,7 +115,7 @@
 #include "dir.h"
 
 /*     "@(#)suff.c     8.4 (Berkeley) 3/21/94" */
-MAKE_RCSID("$NetBSD: suff.c,v 1.352 2021/11/28 18:58:58 rillig Exp $");
+MAKE_RCSID("$NetBSD: suff.c,v 1.353 2021/11/28 22:27:35 rillig Exp $");
 
 typedef List SuffixList;
 typedef ListNode SuffixListNode;
@@ -142,34 +142,6 @@
  */
 static int sNum = 0;
 
-typedef enum SuffixFlags {
-       SUFF_NONE       = 0,
-
-       /*
-        * This suffix marks include files.  Their search path ends up in the
-        * undocumented special variable '.INCLUDES'.
-        */
-       SUFF_INCLUDE    = 1 << 0,
-
-       /*
-        * This suffix marks library files.  Their search path ends up in the
-        * undocumented special variable '.LIBS'.
-        */
-       SUFF_LIBRARY    = 1 << 1,
-
-       /*
-        * The empty suffix.
-        *
-        * XXX: What is the difference between the empty suffix and the null
-        * suffix?
-        *
-        * XXX: Why is SUFF_NULL needed at all? Wouldn't nameLen == 0 mean
-        * the same?
-        */
-       SUFF_NULL       = 1 << 2
-
-} SuffixFlags;
-
 typedef List SuffixListList;
 
 /*
@@ -181,24 +153,45 @@
        char *name;
        /* Length of the name, to avoid strlen calls */
        size_t nameLen;
-       /* Type of suffix */
-       SuffixFlags flags;
+       /*
+        * This suffix marks include files.  Their search path ends up in the
+        * undocumented special variable '.INCLUDES'.
+        */
+       bool include:1;
+       /*
+        * This suffix marks library files.  Their search path ends up in the
+        * undocumented special variable '.LIBS'.
+        */
+       bool library:1;
+       /*
+        * The empty suffix.
+        *
+        * XXX: What is the difference between the empty suffix and the null
+        * suffix?
+        *
+        * XXX: Why is SUFF_NULL needed at all? Wouldn't nameLen == 0 mean
+        * the same?
+        */
+       bool isNull:1;
        /* The path along which files of this suffix may be found */
        SearchPath *searchPath;
+
        /* The suffix number; TODO: document the purpose of this number */
        int sNum;
        /* Reference count of list membership and several other places */
        int refCount;
+
        /* Suffixes we have a transformation to */
        SuffixList parents;
        /* Suffixes we have a transformation from */
        SuffixList children;
-
-       /* Lists in which this suffix is referenced.
+       /*
+        * Lists in which this suffix is referenced.
         *
         * XXX: These lists are used nowhere, they are just appended to, for
         * no apparent reason.  They do have the side effect of increasing
-        * refCount though. */
+        * refCount though.
+        */
        SuffixListList ref;
 } Suffix;
 
@@ -472,7 +465,9 @@
        Lst_Init(&suff->parents);
        Lst_Init(&suff->ref);
        suff->sNum = sNum++;
-       suff->flags = SUFF_NONE;
+       suff->include = false;
+       suff->library = false;
+       suff->isNull = false;
        suff->refCount = 1; /* XXX: why 1? It's not assigned anywhere yet. */
 
        return suff;
@@ -499,7 +494,9 @@
        emptySuff = nullSuff = Suffix_New("");
 
        SearchPath_AddAll(nullSuff->searchPath, &dirSearchPath);
-       nullSuff->flags = SUFF_NULL;
+       nullSuff->include = false;
+       nullSuff->library = false;
+       nullSuff->isNull = true;
 }
 
 /*
@@ -886,12 +883,12 @@
                Suffix *suff = ln->datum;
                if (!Lst_IsEmpty(&suff->searchPath->dirs)) {
 #ifdef INCLUDES
-                       if (suff->flags & SUFF_INCLUDE)
+                       if (suff->include)
                                SearchPath_AddAll(includesPath,
                                    suff->searchPath);
 #endif
 #ifdef LIBRARIES
-                       if (suff->flags & SUFF_LIBRARY)
+                       if (suff->library)
                                SearchPath_AddAll(libsPath, suff->searchPath);
 #endif
                        SearchPath_AddAll(suff->searchPath, &dirSearchPath);
@@ -924,7 +921,7 @@
 {
        Suffix *suff = FindSuffixByName(suffName);
        if (suff != NULL)
-               suff->flags |= SUFF_INCLUDE;
+               suff->include = true;
 }
 
 /*
@@ -938,7 +935,7 @@
 {
        Suffix *suff = FindSuffixByName(suffName);
        if (suff != NULL)
-               suff->flags |= SUFF_LIBRARY;
+               suff->library = true;
 }
 
 /********** Implicit Source Search Functions *********/
@@ -1041,7 +1038,7 @@
        for (ln = cand->suff->children.first; ln != NULL; ln = ln->next) {
                Suffix *suff = ln->datum;
 
-               if ((suff->flags & SUFF_NULL) && suff->name[0] != '\0') {
+               if (suff->isNull && suff->name[0] != '\0') {
                        /*
                         * If the suffix has been marked as the NULL suffix,
                         * also create a candidate for a file with no suffix
@@ -1916,7 +1913,7 @@
         * If the suffix indicates that the target is a library, mark that in
         * the node's type field.
         */
-       if (targ->suff->flags & SUFF_LIBRARY)
+       if (targ->suff->library)
                gn->type |= OP_LIB;
 
        /*
@@ -2081,8 +2078,8 @@
        }
 
        if (nullSuff != NULL)
-               nullSuff->flags &= ~(unsigned)SUFF_NULL;
-       suff->flags |= SUFF_NULL;
+               nullSuff->isNull = false;
+       suff->isNull = true;
        /* XXX: Here's where the transformation mangling would take place. */
        nullSuff = suff;
 }
@@ -2115,13 +2112,13 @@
 
 
 static void
-PrintSuffNames(const char *prefix, SuffixList *suffs)
+PrintSuffNames(const char *prefix, const SuffixList *suffs)
 {
        SuffixListNode *ln;
 
        debug_printf("#\t%s: ", prefix);
        for (ln = suffs->first; ln != NULL; ln = ln->next) {
-               Suffix *suff = ln->datum;
+               const Suffix *suff = ln->datum;
                debug_printf("%s ", suff->name);
        }
        debug_printf("\n");
@@ -2138,28 +2135,26 @@
 }
 
 static const char *
-SuffixFlags_ToString(SuffixFlags flags, void **freeIt)
+SuffixFlags_ToString(const Suffix *suff, void **freeIt)
 {
        Buffer buf;
 
        Buf_InitSize(&buf, 32);
-#define ADD(flag) Buf_AddFlag(&buf, (flags & (flag)) != 0, #flag)
-       ADD(SUFF_INCLUDE);
-       ADD(SUFF_LIBRARY);
-       ADD(SUFF_NULL);
-#undef ADD
+       Buf_AddFlag(&buf, suff->include, "SUFF_INCLUDE");
+       Buf_AddFlag(&buf, suff->library, "SUFF_LIBRARY");
+       Buf_AddFlag(&buf, suff->isNull, "SUFF_NULL");
        return buf.len == 0 ? "none" : (*freeIt = Buf_DoneData(&buf));
 }
 
 static void
-Suffix_Print(Suffix *suff)
+Suffix_Print(const Suffix *suff)
 {
        debug_printf("# \"%s\" (num %d, ref %d)",
            suff->name, suff->sNum, suff->refCount);
-       if (suff->flags != 0) {
+       if (suff->include || suff->library || suff->isNull) {
                void *flags_freeIt = NULL;
                debug_printf(" (%s)",
-                   SuffixFlags_ToString(suff->flags, &flags_freeIt));
+                   SuffixFlags_ToString(suff, &flags_freeIt));
                free(flags_freeIt);
        }
        debug_printf("\n");



Home | Main Index | Thread Index | Old Index