home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_02_11 / 2n11006a < prev    next >
Text File  |  1991-09-10  |  4KB  |  167 lines

  1. /****************************************************/
  2. /*                                                  */
  3. /*      Module :  MEMORY.HPP                        */
  4. /*                                                  */
  5. /*      Author :  Ismail Zia                        */
  6. /*                                                  */
  7. /*      Date   : 20-Mar-1991                        */
  8. /*                                                  */
  9. /*      Purpose: Header file for memory module      */
  10. /*               class definitions, Macros.         */
  11. /****************************************************/
  12.  
  13.  
  14. #ifndef MEMORY_HPP
  15.         #define MEMORY_HPP             
  16.  
  17. #ifdef MSW
  18.         #include        <windows.h>
  19. #endif 
  20.  
  21. #include        <stdlib.h>
  22.  
  23. #ifdef LONG_DEF
  24.  
  25.         #define MEM_FREE                0xFFFFFFFE
  26.         #define MEM_INUSE               0x00000001
  27.         #define MEM_HEADER_SIZE         4
  28.  
  29.         typedef unsigned long   MEMHEADER;
  30.  
  31. #else
  32.  
  33.         #define MEM_FREE                0xFFFE
  34.         #define MEM_INUSE               0x0001
  35.         #define MEM_HEADER_SIZE         2
  36.  
  37.         typedef unsigned int    MEMHEADER;
  38. #endif
  39.  
  40.  
  41. class MemBlock
  42. {
  43.  
  44. private:
  45.  
  46.         #ifdef MSW
  47.                 HANDLE  hMemHandle;
  48.         #endif
  49.  
  50.         MEMHEADER  *Mem;
  51.  
  52.         MEMHEADER       Size;
  53.  
  54.         MEMHEADER       OffSet;
  55.  
  56.         MEMHEADER       Used;
  57.  
  58. public:
  59.  
  60.         MemBlock(const MEMHEADER sz);
  61.         ~MemBlock(void);
  62.  
  63.         void *const MemAllocate(const MEMHEADER sz);
  64.         const MEMHEADER MemFree(void *const ClientP);
  65.  
  66.         const short ObjInBlock(void *const obj);                        
  67.  
  68. private:
  69.  
  70.         void *operator new(size_t sz);
  71.         void operator delete(void *p);
  72.  
  73.         void *const NCPointer(MEMHEADER *const p,\
  74.              MEMHEADER *const Lst,const MEMHEADER sz);
  75.  
  76. };   // End of class definition MemBlock
  77.  
  78.  
  79. class ListItem
  80. {
  81.         MemBlock Mb;
  82.         void *Next;
  83.  
  84. public:
  85.  
  86.         ListItem(const MEMHEADER sz) : Mb(sz)
  87.                 {
  88.                         Next=NULL;
  89.                 }
  90.  
  91.         ~ListItem(void)
  92.                 {
  93.                 }
  94.  
  95.         ListItem *const GetNext(void)
  96.                 {
  97.                         return Next;
  98.                 }
  99.  
  100.         void SetNext(ListItem *const Li)
  101.                 {
  102.                         Next = Li;
  103.                 }
  104.  
  105.         const short ObjInBlock(void *const obj)
  106.                 {
  107.                         return Mb.ObjInBlock(obj);
  108.                 }
  109.  
  110.         void *const MemAlloc(const MEMHEADER sz)
  111.                 {
  112.                         return Mb.MemAllocate(sz);
  113.                 }
  114.  
  115.         const MEMHEADER MemFree(void *const obj)
  116.                 {
  117.                         return Mb.MemFree(obj);
  118.                 }
  119.  
  120.  
  121.  
  122.  
  123. private:
  124.  
  125.         void *operator new(size_t sz);
  126.  
  127.         void operator delete(void *p);
  128.  
  129. };      // End of class definition ListItem
  130.  
  131.  
  132. class List
  133. {
  134.         void *Head;
  135.         void *Tail;
  136.  
  137. public:
  138.  
  139.         List(void);
  140.  
  141.         ~List(void);
  142.  
  143.         void *const MemAlloc(const MEMHEADER sz);
  144.         void MemFree(void *const obj);
  145.  
  146. private:
  147.  
  148.         void *operator new(size_t sz);
  149.         void operator delete(void *obj);
  150.  
  151.                                 
  152. };              // End of class definition List
  153.  
  154.  
  155. void SetDefaultSize(const MEMHEADER size);
  156. const MEMHEADER GetDefaultSize(void);
  157. void InitMem(const MEMHEADER sz);
  158. void EndMem(void);
  159.  
  160. void MemErr(void);
  161.  
  162.  
  163. #endif          //MEMORY_HPP
  164.  
  165.         
  166.  
  167.