Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed

  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.   eSymbolFlag_Label = 1 << 5,
  35.  
  36.   eSymbolFlag_UserShort = 1 << 6,
  37.   eSymbolFlag_UserMedium = 1 << 7,
  38.   eSymbolFlag_UserLong = 1 << 8,
  39.  
  40.   eSymbolFlags_Promotable = eSymbolFlag_FirstPassUnknown | eSymbolFlag_Questionable
  41.                           | eSymbolFlag_UsesForwards
  42.                           | eSymbolFlag_UserShort | eSymbolFlag_UserMedium | eSymbolFlag_UserLong
  43. } tSymbolFlags;
  44.  
  45. #ifdef __cplusplus
  46. #include "cppops.h"
  47. DefCPPOps_Mask(tSymbolFlags)
  48. #endif
  49.  
  50. #define mFirstPassUnknown(Flags) (!!((Flags) & eSymbolFlag_FirstPassUnknown))
  51.  
  52. #define mSymbolQuestionable(Flags) (!!((Flags) & eSymbolFlag_Questionable))
  53.  
  54. #define mFirstPassUnknownOrQuestionable(Flags) (!!((Flags) & (eSymbolFlag_FirstPassUnknown | eSymbolFlag_Questionable)))
  55.  
  56. #define mUsesForwards(Flags) (!!((Flags) & eSymbolFlag_UsesForwards))
  57.  
  58. #endif /* _SYMFLAGS_H */
  59.