home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / mslang / isam / include / isammgr.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-08  |  2.5 KB  |  119 lines

  1. // ISAMMGR.H - IsamMgr Class Header
  2.  
  3. #ifndef ISAMMGR_H
  4. #define ISAMMGR_H
  5.  
  6. #include "filemgr.h"
  7. #include "indexmgr.h"
  8.  
  9. class IsamMgr : public FileMgr
  10.     {
  11.  
  12. protected:
  13.  
  14.     int curidx; // Current index
  15.     int noidxs; // Number of indexes
  16.     IndexMgr *ifile[30];
  17.     char *idxname[30];
  18.     char *idxfname;
  19.     char *buffer;
  20.  
  21.     virtual void read_data(void *block) {};
  22.     virtual void write_data(void *block) {};
  23.  
  24.     virtual void fill_buffer(int idxno, long recno) {};
  25.  
  26.     void prep(unsigned long a, char *b, int length)
  27.         {
  28.         *b++ = (a & 0xff000000L) >> 24;
  29.         *b++ = (a & 0x00ff0000L) >> 16;
  30.         *b++ = (a & 0x0000ff00L) >> 8;
  31.         *b++ = a & 0x000000ffL;
  32.         }
  33.  
  34.     void prep(long a, char *b, int length)
  35.         {
  36.         unsigned long c = (unsigned long)a + 0x80000000L;
  37.         *b++ = (c & 0xff000000L) >> 24;
  38.         *b++ = (c & 0x00ff0000L) >> 16;
  39.         *b++ = (c & 0x0000ff00L) >> 8;
  40.         *b++ = c & 0x000000ffL;
  41.         }
  42.  
  43.     void prep(unsigned int a, char *b, int length)
  44.         {
  45.         *b++ = (a & 0xff00) >> 8;
  46.         *b++ = (a & 0x00ff);
  47.         }
  48.  
  49.     void prep(int a, char *b, int length)
  50.         {
  51.         unsigned int c = (unsigned int)a + 0x8000;
  52.         *b++ = (c & 0xff00) >> 8;
  53.         *b++ = (c & 0x00ff);
  54.         }
  55.  
  56.     void prep(unsigned short a, char *b, int length)
  57.         {
  58.         *b++ = (a & 0xff00) >> 8;
  59.         *b++ = (a & 0x00ff);
  60.         }
  61.  
  62.     void prep(short a, char *b, int length)
  63.         {
  64.         unsigned short c = (unsigned short)a + 0x8000;
  65.         *b++ = (c & 0xff00) >> 8;
  66.         *b++ = (c & 0x00ff);
  67.         }
  68.  
  69.     void prep(unsigned char a, char *b, int length)
  70.          {
  71.          *b = a;
  72.          }
  73.  
  74.     void prep(char a, char *b, int length)
  75.          {
  76.          *b = (unsigned char)a + 0x80;
  77.          }
  78.  
  79.     void prep(float a, char *b, int length)
  80.          {
  81.          *(float *)b = a;
  82.          }
  83.  
  84.     void prep(double a, char *b, int length)
  85.          {
  86.          *(double *)b = a;
  87.          }
  88.  
  89.     void prep(char *a, char *b, int length)
  90.          {
  91.          strncpy(b, a, length);
  92.          }
  93.  
  94.     void rebuild_idxs(void);
  95.  
  96. public:
  97.  
  98.     IsamMgr(char *dfName, int dSize, int isMode = moOpen);
  99.     ~IsamMgr(void);
  100.  
  101.     int insert(void);
  102.     int retrieve(void);
  103.     int next(int no_recs = 1);
  104.     int prev(int no_recs = 1);
  105.     void rew(void);
  106.     int find(void);
  107.     int erase(void);
  108.     int amend(void);
  109.     void set_idx(const char *name);
  110.     void set_idx(int idxno);
  111.     int get_cur_idx(void) { return curidx; }
  112.     char *get_idx_name(int idxno) { return idxname[idxno]; }
  113.     int get_no_idxs(void) { return noidxs; }
  114.     void open(void);
  115.     void close(void);
  116.     };
  117.  
  118. #endif
  119.