home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 28 / amigaformatcd28.iso / -seriously_amiga- / misc / twged_scanner / source / twscanner.h < prev   
Encoding:
C/C++ Source or Header  |  1998-04-27  |  3.4 KB  |  77 lines

  1. /**************************************************************************
  2.  
  3. twscanner.h  --  allgemeine Definitionen für GoldEd-Scanner
  4.  
  5. AUTOR(EN):        Thies Wellpott
  6. ERSTELLUNG:       15.04.1998
  7. COPYRIGHT:        (c) 1998 Thies Wellpott
  8. BETRIEBSSYSTEM:   AmigaOS
  9. COMPILER:         SAS/C 6.58
  10.  
  11. BESCHREIBUNG (DIESER HEADERDATEI):
  12.  
  13. Makros, die in allen Scanner benötigt werden, wie UPPER(), Stringvergleich,
  14. SKIPBLANKS(), o. ä.
  15.  
  16.  
  17. FEHLER/EINSCHRÄNKUNGEN:
  18.  
  19. keine
  20.  
  21. **************************************************************************/
  22.  
  23.  
  24.  
  25.  
  26. /*************************  INCLUDES  *************************/
  27.  
  28.  
  29. #include <exec/types.h>
  30.  
  31.  
  32.  
  33. /*************************  DEFINES  *************************/
  34.  
  35.  
  36. // einfache zu-Großbuchstaben-Konvertierung (für Zeichen a-z und à-þ)
  37. #define UPPER(c)  ((c) & ~ 32)
  38.  
  39. // Zeichenkettenvergleich mit 2,3,4 Buchstaben MIT überspringen der geprüften Zeichen
  40. // STRing [case Insensitive] CoMPare
  41. #define STRCMP2(ptr, c1, c2)           ( (*(ptr)++ == (c1)) && (*(ptr)++ == (c2)) )
  42. #define STRCMP3(ptr, c1, c2, c3)       ( (*(ptr)++ == (c1)) && (*(ptr)++ == (c2)) && (*(ptr)++ == (c3)) )
  43. #define STRCMP4(ptr, c1, c2, c3, c4)   ( (*(ptr)++ == (c1)) && (*(ptr)++ == (c2)) && (*(ptr)++ == (c3)) && (*(ptr)++ == (c4)) )
  44. #define STRICMP2(ptr, c1, c2)          ( (UPPER(*(ptr)++) == (c1)) && (UPPER(*(ptr)++) == (c2)) )
  45. #define STRICMP3(ptr, c1, c2, c3)      ( (UPPER(*(ptr)++) == (c1)) && (UPPER(*(ptr)++) == (c2)) && (UPPER(*(ptr)++) == (c3)) )
  46. #define STRICMP4(ptr, c1, c2, c3, c4)  ( (UPPER(*(ptr)++) == (c1)) && (UPPER(*(ptr)++) == (c2)) && (UPPER(*(ptr)++) == (c3)) && (UPPER(*(ptr)++) == (c4)) )
  47.  
  48. // Zeichenkettenvergleich mit 2,3,4 Buchstaben OHNE überspringen der geprüften Zeichen
  49. // In Place STRing [case Insensitive] CoMPare
  50. #define IPSTRCMP2(ptr, c1, c2)           ( (*(ptr) == (c1)) && ((ptr)[1] == (c2)) )
  51. #define IPSTRCMP3(ptr, c1, c2, c3)       ( (*(ptr) == (c1)) && ((ptr)[1] == (c2)) && ((ptr)[2] == (c3)) )
  52. #define IPSTRCMP4(ptr, c1, c2, c3, c4)   ( (*(ptr) == (c1)) && ((ptr)[1] == (c2)) && ((ptr)[2] == (c3)) && ((ptr)[3] == (c4)) )
  53. #define IPSTRICMP2(ptr, c1, c2)          ( (UPPER(*(ptr)) == (c1)) && (UPPER((ptr)[1]) == (c2)) )
  54. #define IPSTRICMP3(ptr, c1, c2, c3)      ( (UPPER(*(ptr)) == (c1)) && (UPPER((ptr)[1]) == (c2)) && (UPPER((ptr)[2]) == (c3)) )
  55. #define IPSTRICMP4(ptr, c1, c2, c3, c4)  ( (UPPER(*(ptr)) == (c1)) && (UPPER((ptr)[1]) == (c2)) && (UPPER((ptr)[2]) == (c3)) && (UPPER((ptr)[3]) == (c4)) )
  56.  
  57. // Zeichentypabfragen
  58. #define ISBLANK(c)  ( ((c) > '\0') && ((c) <= ' ') )
  59. #define ISDIGIT(c)  ( ((c) >= '0') && ((c) <= '9') )
  60. #define ISALPHA(c)  ( (((c) >= 'A') && ((c) <= 'Z')) || (((c) >= 'a') && ((c) <= 'z')) )
  61. #define ISALNUM(c)  ( ISALPHA(c) || ISDIGIT(c) )
  62.  
  63. #define ISCSYM(c)       ( ISALPHA(c) || ISDIGIT(c) || ((c) == '_') )
  64. #define ISAREXXSYM(c)   ( ISALPHA(c) || ISDIGIT(c) || ((c) == '_') || ((c) == '!') ||  \
  65.                           ((c) == '$') || ((c) == '@') || ((c) == '#') || ((c) == '.') )
  66. #define ISMODPASSYM(c)  ( ISALPHA(c) || ISDIGIT(c) || ((c) == '_') )
  67. #define ISSQLSYM(c)     ( ISALPHA(c) || ISDIGIT(c) || ((c) == '_') || ((c) == '$') ||  \
  68.                           ((c) == '#') || ((c) == '.') )    // "." für "schema.objekt"
  69.  
  70. // Leerzeichen überspringen; mit Kontrolle und Anpassung der Textlänge
  71. #define SKIPBLANKS(ptr, len)  while ( (len) && ISBLANK(*(ptr)) )  { (ptr)++;  (len)--; }
  72.  
  73.  
  74.  
  75. /*************************  STRUCTS  *************************/
  76.  
  77.