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

  1. /***********************************************************************
  2.  
  3.                       CSDB Library, Free Evaluation Version 2.0.5 
  4.                                        Release: January 22th 1997 
  5.  
  6.        Header file of the VRAM class.
  7.        This works as a permanent heap, placed on disk.
  8.  
  9.                                            Copyright(c) 1994-1997 
  10.                                                           ComBits 
  11.                                                   The Netherlands 
  12. ***********************************************************************/
  13.  
  14. #ifndef __CSVRAM_H
  15. #define __CSVRAM_H
  16.  
  17. #include "cstypes.h"
  18. #include "cspage.h"
  19.  
  20.  
  21. #ifdef __BORLANDC__
  22. #pragma warn -sig
  23. #endif
  24.  
  25. #ifdef _MSC_VER
  26. #pragma warning(disable : 4051 4135)
  27. #endif
  28.  
  29.  
  30. typedef U32 VPOI;
  31.  
  32.  
  33. class VRAM: public PAGE
  34. {
  35.  
  36.  private:
  37.  
  38.    typedef U32 PANR;
  39.    typedef U16 OFNR;
  40.  
  41.    typedef struct
  42.    {
  43.      U16 alloc;
  44.    } dhd;                     //Data HeaDer
  45.  
  46.    typedef struct
  47.    {
  48.      VPOI  pos;
  49.    } edc;                     //Empty Data Chain
  50.  
  51.  
  52. protected:
  53.  
  54.    csCHAR *add_last;
  55.    edc  *eda;
  56.    U16   vpo_offmask;
  57.    U8    vpo_shftrig;
  58.    U8    esr;              // Shift Right
  59.    U16   enr;              // NumbeR (highest array index)
  60.    int   epc;              // Eda Page Changed.
  61.    U32   numall;           // Number of Allocations currently done.
  62.    PANR  pag_last;
  63.    int   relshrink;
  64.    U16   maxlen;
  65.  
  66.  
  67.    void define_eca(void);
  68.    void open_eca(void);
  69.    void save_eca(void);
  70.    void close_eca(void);
  71.  
  72.    void  reset_eca(void);
  73.    U16   *amount(void *ptr)  { return (((U16 *)ptr)-1); }
  74.    U16   *amount(VPOI  ptr)  { return amount(R(ptr)); }
  75.  
  76.    void free(void *p, VPOI p2 );
  77.    U32  P(VPOI p)            { return p>>vpo_shftrig; }
  78.    U16  O(VPOI p)            { return p&vpo_offmask; }
  79.  
  80.    void init_vars(void);
  81.    void init_defaults(void);
  82.  
  83.    virtual int check_id(U32 id);
  84.    virtual void set_id(void);
  85.    int  sort_eca(void);
  86.    void head2vars(void);
  87.    void vars2head(void);
  88.  
  89.  
  90. ////////////////////////////////////////////////////////////////////////
  91. ////////////////////// PUBLIC FUNCTIONS ////////////////////////////////
  92. ////////////////////////////////////////////////////////////////////////
  93.  
  94.  public:
  95.  
  96.    VRAM(void);
  97.    virtual
  98.   ~VRAM(void);
  99.  
  100. //////////////////////// Compatibility functions //////////////////////
  101.    VPOI vmalloc(U16  size)   { return malloc(size); }
  102.    void vfree(VPOI p)        { free(p); }
  103.  
  104.  
  105. //////////////////////// Definition //////////////////////////////////////////
  106.    int define(csCHAR *name,U16 struclen);
  107.  
  108.  
  109. //////////////////////// Open & Close ////////////////////////////////////////
  110.    int open(csCHAR *name,S16 kb_buf=100);
  111.    int close(void);
  112.    int save(void);
  113.  
  114. //////////////////////// Malloc & Free ////////////////////////////////
  115.    VPOI malloc(U16  size);
  116.    void free(VPOI p)         { numall--; free(W(p),p); }
  117.  
  118.    U16  alloc(VPOI p)        { return *amount(p)-sizeof(dhd); }
  119.    U16  alloc(void *p)       { return *amount(p)-sizeof(dhd); }
  120.  
  121. //////////////////////// Read & Write /////////////////////////////////
  122.    csCHAR *W(VPOI p);
  123.    csCHAR *R(VPOI p);
  124.  
  125. //////////////////////// Report Writing //////////////////////////////////////
  126.    U16  report(csCHAR *name,S16 sub=1);
  127.    void report(FILE *fipo,S16 sub);
  128.  
  129. //////////////////////// Data in Header Page /////////////////////////////////
  130. /* Inherited
  131.    int  data_2_header(void * ptr,U16 length);
  132.    int  header_2_data(void * ptr,U16 length);
  133.    U16  max_data_in_header(void);
  134. */
  135.  
  136.  
  137. /////////////////////////// DB Header ///////////////////////////////////
  138.      virtual int read_header(void);
  139.      virtual int write_header(void);
  140.  
  141.  
  142. ////////////////////////// Miscellaneous ///////////////////////////////////////
  143.    virtual int class_ID(void)  { return CS_CLID_VRAM; }
  144.  
  145.    int  defrag(void)   { return sort_eca(); }
  146.    void info(void);
  147.    U32  number(void)   { return numall; }
  148.    int  zap(void);
  149.    int  empty(void);
  150.    void root(VPOI p);
  151.    VPOI root(void);
  152.    U16  max_len(void)  { return maxlen;                  }
  153.    int  relocate_when_shrunk(void) { return relshrink;   }
  154.    void relocate_when_shrunk(int ToF);
  155.  
  156. };
  157.  
  158.  
  159. #ifdef __BORLANDC__
  160. #pragma warn .sig
  161. #endif
  162.  
  163.  
  164. #ifdef _MSC_VER
  165. #pragma warning(default : 4051 4135)
  166. #endif
  167.  
  168.  
  169. #endif
  170.