home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cslio205.zip / INCLUDE / CSARRAY.H < prev    next >
C/C++ Source or Header  |  1997-01-21  |  3KB  |  116 lines

  1. /***********************************************************************
  2.  
  3.                       CSDB Library, Free Evaluation Version 2.0.5 
  4.                                        Release: January 22th 1997 
  5.  
  6.        Definition of a virtual array class with
  7.        boundary checking.
  8.  
  9.                                            Copyright(c) 1994-1997 
  10.                                                           ComBits 
  11.                                                   The Netherlands 
  12. ***********************************************************************/
  13.  
  14. #ifndef __CSARRAY_H
  15. #define __CSARRAY_H
  16.  
  17. #include "stdlib.h"
  18. #include "stdio.h"
  19. #include "csstr.h"
  20.  
  21. #ifdef CS_DEBUG
  22.   #define  TEST_IN(key) test_index(key);
  23. #else
  24.   #define  TEST_IN(key)
  25. #endif
  26.  
  27.  
  28.  
  29.  
  30. #ifdef __BORLANDC__
  31. #pragma warn -sig
  32. #endif
  33.  
  34. #ifdef _MSC_VER
  35. #pragma warning(disable : 4051 4135)
  36. #endif
  37.  
  38.  
  39. class ARRAY
  40. {
  41.  
  42.  
  43.  protected:
  44.  
  45.  
  46.      typedef union
  47.      {
  48.        void * p;
  49.        long   l;
  50.      } dat;
  51.  
  52.  
  53.  
  54.       U16    nr_lin;
  55.       dat   *lbuf;
  56.       csSTR  d_name;
  57.  
  58.       void test_index(long key);
  59.  
  60.  
  61.   public:
  62.  
  63.       ARRAY(void);
  64.       virtual ~ARRAY(void);
  65.       void zap(void);
  66.       void debug_name(csCHAR *s);
  67.       void size(size_t nr);
  68.       void insert(long key,void *d)      { TEST_IN(key)  lbuf[key].p=d;    }
  69.       void insert(long key,long  d)      { TEST_IN(key)  lbuf[key].l=d;    }
  70.       void delet(long key)               { TEST_IN(key)  lbuf[key].p=NULL; }
  71.       void *locate(long key)             { TEST_IN(key)  return lbuf+key;  }
  72.       void *locate(size_t key)           { TEST_IN(key)  return lbuf+key;  }
  73.       void search(long key,void *&d)     { TEST_IN(key)  d=lbuf[key].p; }
  74.       void search(long key,long  &d)     { TEST_IN(key)  d=lbuf[key].l; }
  75.       void search(long key,void *&d,void** &add)
  76.                                          { TEST_IN(key)  d=*(add=&lbuf[key].p); }
  77.       void search(long key,long  &d,long * &add)
  78.                                          { TEST_IN(key)  d=*(add=&lbuf[key].l); }
  79.       void insert(int key,dat  d)        { TEST_IN(key)  lbuf[key]=d;  }
  80.       void insert(int key,void *d)       { TEST_IN(key)  lbuf[key].p=d;  }
  81.       void insert(int key,void *d,void ** &add)
  82.                                          { TEST_IN(key)  add=&(lbuf[key].p=d); }
  83.       void insert(int key,long  d)       { TEST_IN(key)  lbuf[key].l=d;    }
  84.       void insert(int key,long  d,long * &add)
  85.                                          { TEST_IN(key)  add=&(lbuf[key].l=d); }
  86.       void delet(int key)                { TEST_IN(key)  lbuf[key].p=NULL; }
  87.       void search(int key,void *&d)      { TEST_IN(key)  d=lbuf[key].p; }
  88.       void search(int key,long  &d)      { TEST_IN(key)  d=lbuf[key].l; }
  89.  
  90.       int  report(csCHAR *name,int sub=10);
  91.       void report(FILE *fipo,int sub=10);
  92.  
  93.       long export(FILE *fp,U32 nr);
  94.       long export(FILE *fp)              { return export(fp,nr_lin+1); }
  95.       long import(FILE *fp,long number);
  96.       void empty(void);
  97.  
  98.  
  99. };
  100.  
  101.  
  102.  
  103.  
  104. #ifdef __BORLANDC__
  105. #pragma warn .sig
  106. #endif
  107.  
  108.  
  109. #ifdef _MSC_VER
  110. #pragma warning(default : 4051 4135)
  111. #endif
  112.  
  113.  
  114.  
  115. #endif
  116.