1 #ifndef _SYMFLAGS_H
2 #define _SYMFLAGS_H
3 /* symflags.h */
4 /*****************************************************************************/
5 /* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only                     */
6 /*                                                                           */
7 /* AS                                                                        */
8 /*                                                                           */
9 /* Symbol Flags Used in Symbol Table and TempResult                          */
10 /*                                                                           */
11 /*****************************************************************************/
12 
13 typedef enum eSymbolFlags
14 {
15   eSymbolFlag_None = 0,
16   eSymbolFlag_NextLabelAfterBSR = 1 << 0,
17   eSymbolFlag_StringSingleQuoted = 1 << 1,
18 
19   /* Hinweisflag: evtl. im ersten Pass unbe-
20      kanntes Symbol, Ausdruck nicht ausgewertet */
21 
22   eSymbolFlag_FirstPassUnknown = 1 << 2,
23 
24   /* Hinweisflag:  Dadurch, dass Phasenfehler
25      aufgetreten sind, ist dieser Symbolwert evtl.
26      nicht mehr aktuell */
27 
28   eSymbolFlag_Questionable = 1 << 3,
29 
30   /* Hinweisflag: benutzt Vorwaertsdefinitionen */
31 
32   eSymbolFlag_UsesForwards = 1 << 4,
33 
34   eSymbolFlags_Promotable = eSymbolFlag_FirstPassUnknown | eSymbolFlag_Questionable | eSymbolFlag_UsesForwards
35 } tSymbolFlags;
36 
37 #ifdef __cplusplus
38 #include "cppops.h"
39 DefCPPOps_Mask(tSymbolFlags)
40 #endif
41 
42 #define mFirstPassUnknown(Flags) (!!((Flags) & eSymbolFlag_FirstPassUnknown))
43 
44 #define mSymbolQuestionable(Flags) (!!((Flags) & eSymbolFlag_Questionable))
45 
46 #define mFirstPassUnknownOrQuestionable(Flags) (!!((Flags) & (eSymbolFlag_FirstPassUnknown | eSymbolFlag_Questionable)))
47 
48 #define mUsesForwards(Flags) (!!((Flags) & eSymbolFlag_UsesForwards))
49 
50 #endif /* _SYMFLAGS_H */
51