home *** CD-ROM | disk | FTP | other *** search
/ Boldly Go Collection / version40.iso / TS / 17A / DRWIN101.ZIP / SYMUTIL.HPP < prev    next >
C/C++ Source or Header  |  1991-09-04  |  1KB  |  60 lines

  1. #ifndef __SYMUTIL_HPP
  2. #define __SYMUTIL_HPP
  3.  
  4. #include <stdio.h>
  5. #include <string.h>
  6.  
  7.  
  8. #ifndef BYTE
  9. #define BYTE unsigned char
  10. #endif
  11.  
  12. #ifndef WORD
  13. #define WORD unsigned int
  14. #endif
  15.  
  16.  
  17. #define SIZE           0x70
  18.  
  19.  
  20. typedef int (*CompareFunc)(void* struct1,void* struct2);
  21.  
  22.  
  23. typedef struct _SYMBOL_NODE {
  24.   struct _SYMBOL_NODE* top;
  25.   struct _SYMBOL_NODE* left;
  26.   struct _SYMBOL_NODE* right;
  27.   BYTE   is_left;
  28.   BYTE   is_right;
  29.   BYTE   data[2];
  30. } SYMBOL_NODE;
  31.  
  32.  
  33. class SymbolTable {
  34. protected:
  35.   SYMBOL_NODE* base;
  36.   SYMBOL_NODE* curr;
  37.   CompareFunc compare;
  38.   int size;
  39.   int count;
  40. public:
  41.   void* Insert(void* sym);
  42.   void* Find(void* sym);
  43.   void* First(void);
  44.   void* Next(void);
  45.   void* Last(void);
  46.   void* Prev(void);
  47.   void  Purge(void);
  48.   int   Count(void) { return count; }
  49.   int   Size(void) { return size; }
  50.   void* Curr(void) { if (curr==NULL) return NULL; else return curr->data; }
  51.  
  52.   void* operator << (void* sym) { return Insert(sym); }
  53.  
  54.   SymbolTable(int _size=SIZE,CompareFunc _compare=(CompareFunc)strcmp);
  55.   ~SymbolTable() { Purge(); }
  56. };   //class SymbolTable
  57.  
  58.  
  59. #endif
  60.