home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 4 / CD_Magazyn_EXEC_nr_4.iso / Recent / dev / c / GSys.lha / gsys / gmisc / GTextHandler.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-10-16  |  3.0 KB  |  116 lines

  1.  
  2. #ifndef GTEXTHANDLER_H
  3. #define GTEXTHANDLER_H
  4.  
  5. #include "gsystem/GBuffer.h"
  6. //#include "gsystem/GBufferMet.h"
  7.  
  8. /*
  9.  * Char-Types 
  10.  * 
  11.  */
  12.  
  13. #define GTEXT_NODEF    0        // could be used as an "illegal" i guess..
  14. #define GTEXT_SPACE    1        // fine for splitting words
  15. #define GTEXT_TAB    1<<1        // see SPACE
  16. #define GTEXT_NEWLINE    1<<2        // fine for splitting lines
  17. #define GTEXT_BREAK    1<<3        // it will always stop for a break(point) (not true!)
  18. #define GTEXT_LETTER    1<<5
  19. #define GTEXT_NUMBER    1<<6
  20. #define GTEXT_EOT    1<<7        // will force the program not to go any further
  21. #define    GTEXT_USER1    1<<8
  22. #define    GTEXT_USER2    1<<9
  23. #define    GTEXT_USER3    1<<10
  24. #define    GTEXT_USER4    1<<11
  25. #define    GTEXT_USER5    1<<12
  26. #define    GTEXT_USER6    1<<13
  27. #define    GTEXT_USER7    1<<14
  28. #define    GTEXT_USER8    1<<15
  29.  
  30. /*
  31.  * Cpy & Jump-modes (used for Cpy & Jump)
  32.  *
  33.  */
  34.  
  35. #define GTEXT_EQ    0    // while EQ copy/jump    // flag = chartype
  36. #define GTEXT_ALL    1    // while ALL copy/jump    // (flag & chartype) = flag
  37. #define GTEXT_ANY    2    // while ANY copy/jump    // (flag & chartype) > 0
  38. #define GTEXT_NOTEQ    5    // while NOTEQ copy/jump (!EQ)
  39. #define GTEXT_NOTALL    6    // while NOTALL cpy/jump (!ALL)
  40. #define GTEXT_NONE    7    // while NONE copy/jump (!ANY)
  41.  
  42. /*
  43.  * Set-modes
  44.  *
  45.  */
  46.  
  47. #define GTEXT_SET_SET    1
  48. #define GTEXT_SET_OR    2
  49. #define GTEXT_SET_AND    3
  50. #define GTEXT_SET_CLR    4
  51.  
  52. typedef struct    // fra og med, til og med
  53. {
  54.     GWORD From, To;
  55. } GCharArea;
  56.  
  57. class    GTextHandler : public GBuffer
  58. {
  59. protected:
  60.     GTextHandler() { memset((GAPTR)this, 0, sizeof(GTextHandler));};
  61. public:
  62.     GTextHandler(GSTRPTR filename, GUWORD start, GUWORD len);    // if start=-1, it doesn't care about it
  63.     GTextHandler(GSTRPTR string);
  64.     ~GTextHandler();
  65.  
  66.     BOOL InitGTextHandler(GSTRPTR filename, GUWORD start, GUWORD len, GSTRPTR objtype);
  67.     BOOL InitGTextHandler(GSTRPTR string, GSTRPTR objtype);
  68.  
  69.     BOOL RefreshTextPtr();
  70.  
  71.     void InitTypes();        // Should be used (Sets 0x20 as space etc.);
  72.     void ClearTypes();        // Clears 
  73.  
  74.     void    SetUCaseIsLCase(BOOL b);
  75.     BOOL    GetUCaseIsLCase();
  76.     void    SetGetOnlyLowerCase(BOOL b) {};
  77.     BOOL    GetGetOnlyLowerCase() { return FALSE; };
  78.  
  79.     void    SetCharDef(GSTRPTR str, GUSHORT flags, GUSHORT setmode);    // End Of Text
  80.     void    SetCharDef(char x, GUSHORT flags, GUSHORT setmode);
  81.     void    SetCharDef(GCharArea *gchararea, GUSHORT flags, GUSHORT setmode);
  82.  
  83.     BOOL    IsCharType(GUSHORT flags, GUSHORT demand);
  84.     GUSHORT    GetCharDef();
  85.     GUBYTE    GetChar();
  86.  
  87.     BOOL    CmpIncidents(GSTRPTR incidents);
  88.  
  89.     GWORD    CpyUntilNextIncident(GSTRPTR dest, GSTRPTR incidents);
  90.     GWORD    CpyReqType(GSTRPTR dest, GUSHORT flags, GUSHORT demand);
  91.  
  92.     GWORD    GetJumped() { return Jumped; };
  93.  
  94.     BOOL     JumpChars(GWORD x);    // relative
  95.     BOOL    JumpLines(GWORD x);    // relative
  96.     BOOL    JumpLine(GWORD x);    // not relative
  97.     BOOL    JumpChar(GWORD x);    // not relative
  98.  
  99.     BOOL    JumpNextIncident(GSTRPTR incidents);    // "case1|case2|..|caseN"
  100.     BOOL    JumpNextReqType(GUSHORT flags, GUSHORT demand);
  101.     BOOL    JumpNextAppearance(GSTRPTR str);
  102.     BOOL    JumpNextChar(char c);
  103.  
  104.     BOOL    CmpChars(char a, char b);
  105.  
  106. protected:
  107.     BOOL    UCaseIsLCase;
  108.     GWORD    Jumped;
  109.     GSTRPTR    TextStart;
  110.     GSTRPTR    TextCurrent;
  111.     GUSHORT    CharDefs[256];
  112. };
  113.  
  114. #endif /* GTEXTHANDLER_H */
  115.  
  116.