home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / fed0217s.zip / include / _search.h < prev    next >
C/C++ Source or Header  |  2000-12-16  |  2KB  |  71 lines

  1. /*
  2. ** Module   :_SEARCH.H
  3. ** Abstract :Search engine implementation
  4. **
  5. ** Copyright (C) Sergey I. Yevtushenko
  6. **
  7. ** Log: Wed  12/11/1997       Adopted from C SNIPPETS
  8. */
  9.  
  10. #ifndef  __SEARCH_H
  11. #define  __SEARCH_H
  12.  
  13. class SearchEngine
  14. {
  15.     protected:
  16.         int patlen;
  17.         int skip[257];
  18.         int skip2;
  19.         char *pat;
  20.         void *expr;
  21.  
  22.     public:
  23.         SearchEngine()  { pat = 0; expr = 0;}
  24.         ~SearchEngine() { delete pat; delete expr;}
  25.  
  26.         virtual void init(char *,int) {}
  27.         virtual char* search(char *, int& match_len) { match_len = 0; return 0;}
  28.         virtual void middle(int i)    {}    //Tell parser (not) to match BOL
  29. };
  30.  
  31. //-----------------------------------------------------------
  32. // Boyer-Moore-Horspool pattern match
  33. //-----------------------------------------------------------
  34.  
  35. class BMHSearch: public SearchEngine
  36. {
  37.     public:
  38.  
  39.         virtual void init(char *pattern,int);
  40.         virtual char* search(char *string, int& match_len);
  41. };
  42.  
  43. //-----------------------------------------------------------
  44. // Boyer-Moore-Horspool case insensitive pattern match
  45. //-----------------------------------------------------------
  46.  
  47. class BMHISearch: public SearchEngine
  48. {
  49.     public:
  50.  
  51.         virtual void init(char *pattern,int);
  52.         virtual char* search(char *string, int& match_len);
  53. };
  54.  
  55. //-----------------------------------------------------------
  56. // Regular expression pattern match
  57. //-----------------------------------------------------------
  58.  
  59. class RXSearch: public SearchEngine
  60. {
  61.  
  62.     public:
  63.  
  64.         virtual void init(char *pattern,int);
  65.         virtual char* search(char *string, int& match_len);
  66.         virtual void middle(int i);
  67. };
  68.  
  69. #endif //__SEARCH_H
  70.  
  71.