home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / diverses / text_cla / memlib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-05-12  |  5.9 KB  |  346 lines

  1. /*+
  2. **
  3. ** Include Name: MEMLIB.h
  4. **
  5. ** Description:  MEM specific includes to be included in MEM application pgms
  6. **
  7. **
  8. **
  9. ** Written by:  John Tal
  10. **
  11. **
  12. **
  13. ** Modification history:
  14. **
  15. ** Date      Programmer      Mod #          Modification   Description
  16. **
  17. *-
  18. */
  19.  
  20. #ifdef MEMLIB_H                /* Allow compiler one copy */
  21. #else
  22. #define MEMLIB_H               /* Tag this one included */
  23.  
  24. #include <memincs.h>
  25.  
  26.  
  27. /*
  28. ** TRE structs
  29. */
  30.  
  31. struct TNODE_S 
  32.    {            
  33.    PVOID          pvData;
  34.    struct TNODE_S *psLeft;
  35.    struct TNODE_S *psRight;
  36.    }; 
  37. typedef struct TNODE_S TNODE_T;
  38. typedef TNODE_T *TNODE_P;
  39. typedef TNODE_T **TNODE_PP;
  40.  
  41.  
  42. /*
  43. ** LST structs  
  44. */
  45.  
  46. struct LLIST_S
  47.    {
  48.    struct LLIST_S  *psPrev;
  49.    struct LLIST_S  *psNext;
  50.    VOID   *pvData;
  51.    };
  52. typedef struct LLIST_S LLIST_T;
  53. typedef LLIST_T *LLIST_P;
  54. typedef LLIST_T **LLIST_PP;
  55.  
  56. /*
  57. ** LCK structs  
  58. */
  59.  
  60. struct LOCK_S
  61. {
  62.     ULONG       ulongLock;   /*  Semaphore (RAM) */
  63.     SHORT       sLockId;     /*  associated lock id */
  64. };
  65.  
  66. typedef struct LOCK_S LOCK_T;
  67. typedef LOCK_T *LOCK_P;
  68. typedef LOCK_T **LOCK_PP;
  69.  
  70. /*
  71. **  HEP structs
  72. */
  73.  
  74. struct HEAP_DATA_S{
  75.    SHORT  sPriority;
  76.    PVOID  pvData;
  77. };
  78.  
  79. typedef struct HEAP_DATA_S HEAP_DATA_T;
  80. typedef HEAP_DATA_T * HEAP_DATA_P;
  81. typedef HEAP_DATA_T ** HEAP_DATA_PP;
  82.  
  83. struct HEAP_S{
  84.    SHORT  sMaxHeapElms;
  85.    SHORT  sHeapBottom;
  86.    HEAP_DATA_P  psHeapData;
  87. };
  88.  
  89. typedef struct HEAP_S HEAP_T;
  90. typedef HEAP_T * HEAP_P;
  91. typedef HEAP_T ** HEAP_PP;
  92.  
  93.  
  94.  
  95. /*
  96. ** TRE dcls
  97. */
  98.  
  99. #ifdef C_ANSI
  100.  
  101. SHORT APIENTRY
  102. MemTreRotateNodeLeft(TNODE_P,TNODE_PP);
  103.  
  104. SHORT APIENTRY
  105. MemTreRotateNodeRight(TNODE_P,TNODE_PP);
  106.  
  107. SHORT APIENTRY
  108. MemTreLeaf(TNODE_P);
  109.  
  110. SHORT APIENTRY MemTreAllocNode(TNODE_PP);
  111.  
  112. SHORT APIENTRY MemTreInsertNode(TNODE_P,
  113.                                 TNODE_P,
  114.                                 SHORT (*)(PVOID,PVOID),
  115.                                 TNODE_PP);
  116.  
  117. SHORT APIENTRY MemTreFindNode(TNODE_P,
  118.                               PVOID,
  119.                               SHORT (*)(PVOID,PVOID),
  120.                               TNODE_PP);
  121.  
  122. SHORT APIENTRY MemTreDeleteNode(TNODE_P,
  123.                                 PVOID,
  124.                                 SHORT (*)(PVOID,PVOID),
  125.                                 TNODE_PP);
  126.  
  127. SHORT APIENTRY
  128. MemTreVacateTree(TNODE_PP,BOOL );
  129.  
  130. SHORT APIENTRY
  131. MemTreWalk(TNODE_P, SHORT, SHORT (APIENTRY *)(PVOID));
  132.  
  133. #else
  134. SHORT APIENTRY MemTreRotateNodeLeft();
  135. SHORT APIENTRY MemTreRotateNodeRight();
  136. SHORT APIENTRY MemTreLeaf();
  137. SHORT APIENTRY MemTreAllocNode();
  138. SHORT APIENTRY MemTreInsertNode();
  139. SHORT APIENTRY MemTreFindNode();
  140. SHORT APIENTRY MemTreDeleteNode();
  141. SHORT APIENTRY MemTreVacateTree();
  142. SHORT APIENTRY MemTreWalk();
  143.  
  144. #endif
  145.  
  146. /*
  147. ** LST
  148. */
  149.  
  150. #ifdef C_ANSI
  151.  
  152. SHORT APIENTRY
  153. MemLstAllocMember(LLIST_PP);
  154.  
  155. SHORT APIENTRY
  156. MemLstInsertMember(LLIST_P,
  157.                    LLIST_P,
  158.                    SHORT (*)(PVOID,PVOID),
  159.                    LLIST_PP);
  160.  
  161. SHORT APIENTRY
  162. MemLstFindMember(LLIST_P,
  163.                  PVOID,
  164.                  SHORT (*)(PVOID,PVOID),
  165.                  LLIST_PP);
  166.  
  167.  
  168. SHORT APIENTRY
  169. MemLstFindTailMember(LLIST_P,
  170.                      LLIST_PP);
  171.  
  172. SHORT APIENTRY
  173. MemLstAddAfterMember(LLIST_P,LLIST_P);
  174.  
  175. SHORT APIENTRY
  176. MemLstAddBeforeMember(LLIST_P,
  177.                       LLIST_P,
  178.                       LLIST_P,
  179.                       LLIST_PP);
  180.  
  181. SHORT APIENTRY
  182. MemLstDeleteMember(LLIST_P,
  183.                    LLIST_P,
  184.                    LLIST_PP);
  185.  
  186.  
  187. SHORT APIENTRY
  188. MemLstUnlinkMember(LLIST_P,
  189.                    LLIST_P,
  190.                    LLIST_PP);
  191.  
  192. SHORT APIENTRY
  193. MemLstVacateList(LLIST_PP,
  194.                    BOOL);
  195.  
  196. #else
  197. SHORT APIENTRY MemLstAllocMember();
  198. SHORT APIENTRY MemLstInsertMember();
  199. SHORT APIENTRY MemLstFindMember();
  200. SHORT APIENTRY MemLstFindTailMember();
  201. SHORT APIENTRY MemLstAddAfterMember();
  202. SHORT APIENTRY MemLstAddBeforeMember();
  203. SHORT APIENTRY MemLstDeleteMember();
  204. SHORT APIENTRY MemLstUnlinkMember();
  205. SHORT APIENTRY MemLstVacateList();
  206.  
  207. #endif
  208.  
  209.  
  210.  
  211. #ifdef C_ANSI 
  212.  
  213. SHORT APIENTRY
  214. MemLckManageLocks(SHORT, LOCK_P, SHORT );
  215.  
  216. SHORT APIENTRY
  217. MemLckInitLock(LOCK_P );
  218.  
  219. #else
  220. SHORT APIENTRY MemLckManageLocks();
  221. SHORT APIENTRY MemLckInitLock();
  222.  
  223. #endif
  224.  
  225. /*
  226. **  Stack routines
  227. */
  228.  
  229. #ifdef C_ANSI
  230.  
  231. SHORT APIENTRY
  232. MemStkVacateStack(LLIST_PP, BOOL );
  233.  
  234. SHORT APIENTRY
  235. MemStkClearStack(LLIST_PP );
  236.  
  237. SHORT APIENTRY
  238. MemStkPush(LLIST_PP, PVOID );
  239.  
  240. SHORT APIENTRY
  241. MemStkPop(LLIST_PP, PVOID );
  242.  
  243. SHORT APIENTRY
  244. MemStkEmptyStack(LLIST_P, BOOL * );
  245.  
  246. #else
  247. SHORT APIENTRY MemStkVacateStack();
  248. SHORT APIENTRY MemStkClearStack();
  249. SHORT APIENTRY MemStkPush();
  250. SHORT APIENTRY MemStkPop();
  251. SHORT APIENTRY MemStkEmptyStack();
  252.  
  253. #endif
  254.  
  255.  
  256. /*
  257. **  (FIFO) Queue Routines
  258. */
  259.  
  260. #ifdef C_ANSI
  261.  
  262. SHORT APIENTRY
  263. MemQueEnqMember(LLIST_PP, LLIST_PP, PVOID);
  264.  
  265. SHORT APIENTRY
  266. MemQueDeqMember(LLIST_PP, LLIST_PP, PVOID *);
  267.  
  268. #else
  269.  
  270. SHORT APIENTRY
  271. MemQueEnqMember();
  272.  
  273. SHORT APIENTRY
  274. MemQueDeqMember();
  275.  
  276. #endif
  277.  
  278.  
  279.  
  280. /*
  281. **  Heap (Priority Queue) Routines
  282. */
  283.  
  284. #ifdef C_ANSI
  285.  
  286. SHORT APIENTRY
  287. MemHepDeque(HEAP_P ,PSHORT ,PVOID * );
  288.  
  289. SHORT APIENTRY
  290. MemHepDown(HEAP_P, SHORT );
  291.  
  292. SHORT APIENTRY
  293. MemHepEnque(HEAP_P, SHORT, PVOID );
  294.  
  295. SHORT APIENTRY
  296. MemHepInit(HEAP_PP, SHORT );
  297.  
  298. SHORT APIENTRY
  299. MemHepSwap(HEAP_DATA_P, HEAP_DATA_P );
  300.  
  301. SHORT APIENTRY
  302. MemHepUp(HEAP_P );
  303.  
  304. SHORT APIENTRY
  305. MemHepSearch(HEAP_P,
  306.              PVOID,
  307.              SHORT (*)(PVOID,PVOID), 
  308.              HEAP_DATA_PP );
  309.  
  310. SHORT APIENTRY
  311. MemHepVacateHeap(HEAP_PP, BOOL );
  312.  
  313. #else
  314.  
  315. SHORT APIENTRY
  316. MemHepDeque();
  317.  
  318. SHORT APIENTRY
  319. MemHepDown();
  320.  
  321. SHORT APIENTRY
  322. MemHepEnque();
  323.  
  324. SHORT APIENTRY
  325. MemHepInit();
  326.  
  327. SHORT APIENTRY
  328. MemHepSwap();
  329.  
  330. SHORT APIENTRY
  331. MemHepUp();
  332.  
  333. SHORT APIENTRY
  334. MemHepSearch();
  335.  
  336. SHORT APIENTRY
  337. MemHepVacateHeap();
  338.  
  339. #endif
  340.  
  341.  
  342. #endif /* MEMLIB_H */
  343.  
  344.  
  345.  
  346.