Subversion Repositories pentevo

Rev

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

  1. /* intformat.h */
  2. /*****************************************************************************/
  3. /* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only                     */
  4. /*                                                                           */
  5. /* AS                                                                        */
  6. /*                                                                           */
  7. /* enums regarding integer constant notations                                */
  8. /*                                                                           */
  9. /*****************************************************************************/
  10.  
  11. #ifndef _INTFORMAT_H
  12. #define _INTFORMAT_H
  13.  
  14. typedef enum
  15. {
  16.   eIntFormatNone,
  17.   eIntFormatDefRadix, /* ... */
  18.   eIntFormatMotBin,   /* %... */
  19.   eIntFormatMotOct,   /* @... */
  20.   eIntFormatMotHex,   /* $... */
  21.   eIntFormatIntBin,   /* ...b */
  22.   eIntFormatIntOOct,  /* ...o */
  23.   eIntFormatIntQOct,  /* ...q */
  24.   eIntFormatIntHex,   /* ...h */
  25.   eIntFormatIBMBin,   /* b'...' */
  26.   eIntFormatIBMOct,   /* o'...' */
  27.   eIntFormatIBMXHex,  /* x'...' */
  28.   eIntFormatIBMHHex,  /* h'...' */
  29.   eIntFormatIBMAsc,   /* a'...' */
  30.   eIntFormatCBin,     /* 0b... */
  31.   eIntFormatCOct,     /* 0... */
  32.   eIntFormatCHex,     /* 0x... */
  33.   eIntFormatNatHex    /* 0..., incompatible with eIntFormatCOct */
  34. } tIntFormatId;
  35.  
  36. #define eIntFormatMaskC     ((1ul << eIntFormatCHex)   | (1ul << eIntFormatCBin)   | (1ul << eIntFormatCOct))
  37. #define eIntFormatMaskIntel ((1ul << eIntFormatIntHex) | (1ul << eIntFormatIntBin) | (1ul << eIntFormatIntOOct) | (1ul << eIntFormatIntQOct))
  38. #define eIntFormatMaskMoto  ((1ul << eIntFormatMotHex) | (1ul << eIntFormatMotBin) | (1ul << eIntFormatMotOct))
  39. #define eIntFormatMaskIBM   ((1ul << eIntFormatIBMXHex) | (1ul << eIntFormatIBMHHex) | (1ul << eIntFormatIBMBin) | (1ul << eIntFormatIBMOct))
  40.  
  41. typedef enum eIntConstMode
  42. {
  43.   eIntConstModeIntel,     /* Hex xxxxh, Oct xxxxo, Bin xxxxb */
  44.   eIntConstModeMoto,      /* Hex $xxxx, Oct @xxxx, Bin %xxxx */
  45.   eIntConstModeC,         /* Hex 0x..., Oct 0...., Bin 0b... */
  46.   eIntConstModeIBM        /* Hex 'xxxx['], Oct o'xxxx['], Bin b'xxxx['] */
  47. } tIntConstMode;
  48.  
  49. typedef struct
  50. {
  51.   const char *pExpr;
  52.   size_t ExprLen;
  53.   int Base;
  54. } tIntCheckCtx;
  55.  
  56. typedef Boolean (*tIntFormatCheck)(tIntCheckCtx *pCtx, char Ch);
  57.  
  58. typedef struct
  59. {
  60.   tIntFormatCheck Check;
  61.   Byte Id;
  62.   Integer Base;
  63.   char Ch;
  64.   char Ident[7];
  65. } tIntFormatList;
  66.  
  67. extern LongWord NativeIntConstModeMask, OtherIntConstModeMask;
  68. extern tIntFormatList *IntFormatList;
  69. extern Boolean RelaxedMode;
  70. extern int RadixBase;
  71.  
  72. extern const char *GetIntConstMotoPrefix(unsigned Radix);
  73. extern const char *GetIntConstIntelSuffix(unsigned Radix);
  74. extern const char *GetIntConstIBMPrefix(unsigned Radix);
  75. extern const char *GetIntConstIBMSuffix(unsigned Radix);
  76. extern const char *GetIntConstCPrefix(unsigned Radix);
  77.  
  78. extern void SetIntConstModeByMask(LongWord Mask);
  79. extern Boolean ModifyIntConstModeByMask(LongWord ANDMask, LongWord ORMask);
  80.  
  81. extern void SetIntConstMode(tIntConstMode Mode);
  82.  
  83. extern void SetIntConstRelaxedMode(Boolean NewRelaxedMode);
  84.  
  85. extern tIntFormatId GetIntFormatId(const char *pIdent);
  86.  
  87. extern void intformat_init(void);
  88.  
  89. #endif /* _INTFORMAT_H */
  90.