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

  1. /***********************************************************************
  2.  
  3.                       CSDB Library, Free Evaluation Version 2.0.5 
  4.                                        Release: January 22th 1997 
  5.  
  6.        Header file of the TBASE class.
  7.        Database class for records with a fixed length.
  8.  
  9.                                            Copyright(c) 1994-1997 
  10.                                                           ComBits 
  11.                                                   The Netherlands 
  12. ***********************************************************************/
  13.  
  14. #ifndef __CSTBASE_H
  15. #define __CSTBASE_H
  16.  
  17. #include <stdio.h>
  18. #include <stdlib.h>
  19. #include <string.h>
  20. #include "cspage.h"
  21.  
  22.  
  23. class TBASE: public PAGE
  24. {
  25.  
  26. protected:
  27.  
  28.    U16  lenrec;
  29.    U16  recpage;
  30.    U16  rec_foot;
  31.    U16  len_rec_plus_foot;
  32.    S32  NUMREC;
  33.    S32  lrco;
  34.    S32  wrco;
  35.    S32  rrco;
  36.    S32  cur_rec;
  37.  
  38.  
  39. protected:
  40.  
  41.    void check_rec(S32  l);
  42.  
  43.    S32  r2p(S32  rec)    { return (1+(rec-1)/recpage); }
  44.    U16  oinp(S32  rec)   { return (((U16 )((rec-1)%recpage))*len_rec_plus_foot); }
  45.  
  46.    virtual int check_id(U32 id);
  47.    virtual void set_id(void);
  48.  
  49.    void init_defaults(void);
  50.    void init_vars(void);
  51.    void vars2head(void);
  52.    void head2vars(void);
  53.  
  54.  
  55. public:
  56.  
  57. //////////////////////// Compatibility function ////////////////////////
  58.    void speed_option_121(void)   { smallest_page(); }
  59.  
  60.  
  61.  
  62. ////////////////////////////////////////////////////////////////////////////////
  63. ////////////////////////                            ////////////////////////////
  64. ////////////////////////     P U B L I C            ////////////////////////////
  65. ////////////////////////                            ////////////////////////////
  66. ////////////////////////////////////////////////////////////////////////////////
  67.  
  68.  
  69. public:
  70.  
  71.    TBASE(void);
  72.    virtual
  73.   ~TBASE(void);
  74.  
  75.  
  76. //////////////////////// Definition //////////////////////////////////////////
  77. /* Inherited
  78.    void page_size(U16 length);
  79.    U16  page_size(void) ;
  80. */
  81.    void smallest_page(void)      { recpage=1; }
  82.    int  define(csCHAR *name,U16  reclen);
  83.  
  84. //////////////////////// Open & Close ////////////////////////////////////////
  85.    int  open(csCHAR *name,S16 kb=32);
  86.    int  open(void)                 { return already_open(); }
  87.    int  close(void);
  88.    int  save(void);
  89.  
  90. //////////////////////// Locate, Read & Writes records  ///////////////////////
  91.    csCHAR *locate_rec(S32  rec)    { lrco++; return load_page(r2p(rec))+oinp(rec); }
  92.    csCHAR *locate_rec_d(S32  rec)  { lrco++; return load_page_d(r2p(rec))+oinp(rec); }
  93.    csCHAR *locate_rec_l(S32  rec)  { lrco++; return load_page_l(r2p(rec))+oinp(rec); }
  94.    csCHAR *locate_rec_ld(S32  rec) { lrco++; return load_page_ld(r2p(rec))+oinp(rec); }
  95.    void locate_double(S32  rec1,void *&d1,S32  rec2,void *&d2);
  96.    void locate_double_d(S32  rec1,void *&d1,S32  rec2,void *&d2);
  97.  
  98.    void read_rec(  S32  rec, void *d);
  99.    void write_rec( S32  rec, void *d);
  100.  
  101. //////////////////////// Add Records /////////////////////////////////////////
  102.    S32  append_rec(void *data);
  103.    S32  append_rec(void);
  104.  
  105. ////////////////////////// Deleting ////////////////////////////////////////////
  106.    void set_delet(S32  r,int tf);
  107.    void undelet(void *d)  { *((csCHAR *)d+lengthrec())=0; }
  108.    void delet(void *d)    { *((csCHAR *)d+lengthrec())=1; }
  109.    int  is_delet(void *d) { return *((csCHAR *)d+lengthrec()); }
  110.  
  111.    int  is_delet(S32  l)  { return is_delet(locate_rec(l)); }
  112.    void delet(S32  r)     { set_delet(r,TRUE); }
  113.    void undelet(S32  r )  { set_delet(r,FALSE); }
  114.  
  115. //////////////////////// Number of Records ///////////////////////////////////
  116.    S32  numrec(void)      { return NUMREC; }
  117.    void set_numrec(S32  n){ NUMREC=n; set_num_page(r2p(n)); }
  118.    void dec_numrec(void ) { NUMREC--; }
  119.  
  120. ////////////////////////// Record Length ///////////////////////////////////////
  121.    U16  lengthrec(void)   { return lenrec; }
  122.  
  123. //////////////////////// Report Writing //////////////////////////////////////
  124.    int  report(csCHAR *name,int sub=1);
  125.    void report(FILE *fipo,int sub);
  126.  
  127. ////////////////////////// Current /////////////////////////////////////////////
  128.  
  129.    S32  set_current(S32  rec);
  130.    S32  current(void)    { return cur_rec; }
  131.    S32  skip(S32  delta) { S32  l=current(); return (set_current(l+delta)-l); }
  132.    S32  next(S32  delta) { return skip(delta); }
  133.    S32  prev(S32  delta) { return -skip(-delta); }
  134.  
  135.  
  136. ////////////////////////// Miscellaneous ///////////////////////////////////////
  137. /* Inherited
  138.    int  background(void)
  139. */
  140.    int pack(void);
  141. // int zap(void);
  142.    void info(void);
  143.    int empty(void);
  144.    virtual int class_ID(void)  { return CS_CLID_TBASE; }
  145.  
  146.  
  147.  
  148. };
  149.  
  150. #endif
  151.