home *** CD-ROM | disk | FTP | other *** search
/ Resource for Source: C/C++ / Resource for Source - C-C++.iso / misc_src / cslib16b / include / csvram.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-01  |  3.8 KB  |  145 lines

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