home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / c / laserlib / inc / list.inc < prev    next >
Encoding:
Text File  |  1994-09-22  |  7.8 KB  |  202 lines

  1. /**************************************************************************/
  2. /*                                                                        */
  3. /*  NAME:         list.inc                                                */
  4. /*                                                                        */
  5. /*  DATUM:        23.11.88                                                */
  6. /*                                                                        */
  7. /*  BESCHREIBUNG: Includefile fuer Modul list.c.                          */
  8. /*                                                                        */
  9. /*  AENDERUNGEN:  CH270788 - Prototyp.                                    */
  10. /*                CH290788 - Makros fuer lfndelm(lp, MODE) ...            */
  11. /*                CH310888 - #ifndef PORTAB eingebaut.                    */ 
  12. /*                CH010988 - LGetName() Macro, etc                        */
  13. /*                CH030988 - IsLast(), IsFirst(),...                      */
  14. /*                         - LSTRECNO, LFindRecno()                       */
  15. /*                CH040988 - LSTNOSPACE, LSTNOCASE                        */
  16. /*                CH060988 - struct key, key in LIST                      */
  17. /*                         - LSetError(),LGetError                        */
  18. /*                CH231188 - LPut ... eingefuegt.                         */
  19. /*                CH181288 - lst_hash in Struktur LSTLIST aufgenommen     */
  20. /*                                                                        */
  21. /**************************************************************************/
  22.  
  23. #include <portab.h>
  24. #include <boolop.h>
  25.  
  26. typedef struct _Elem
  27. {
  28.    struct _Elem *elm_prev;
  29.    struct _Elem *elm_next;
  30.           BYTE  *elm_buf;
  31.           BYTE  *elm_key;
  32. } ELEM;
  33.  
  34. typedef struct _List
  35. {
  36.    ELEM  *lst_first;
  37.    ELEM  *lst_last;
  38.    ELEM  *lst_curr;
  39.    LONG   lst_cnt;
  40.    WORD   lst_kypos;
  41.    WORD   lst_kylen;
  42.    WORD   lst_buflen;
  43.    WORD   lst_flag;
  44.    BYTE  *lst_name;
  45.    BYTE  *lst_buf;
  46.    BYTE  *lst_key;
  47.    ELEM **lst_hash;
  48. } LIST;
  49.  
  50. extern BYTE  *strcpy();
  51. extern WORD   strncmp();
  52. extern BYTE  *malloc();
  53. extern BYTE  *lgetver();
  54. extern LIST  *lnewlst();
  55. extern BOOL   ldellst();
  56. extern BOOL   linselm();
  57. extern BOOL   ldelelm();
  58. extern VOID   lcopbuf();
  59. extern VOID   lgenkey();
  60. extern VOID   lprtlst();
  61. extern VOID   lprtbuf();
  62. extern BOOL   lprtelm();
  63. extern BOOL   lfndelm();
  64. extern BOOL   lgetelm();
  65. extern BOOL   lputelm();
  66. extern BOOL   lgenelm();
  67. extern VOID   lcoplst();
  68. extern BOOL   lchgkey();
  69. extern LONG   lgetrno();
  70. extern WORD   lseterr();
  71. extern BOOL   lwrtlst();
  72. extern BOOL   lrealst();
  73. extern VOID   lfilbuf();
  74.  
  75. #define LSTNOERROR       0
  76. #define LSTEUNIQUE      -1
  77. #define LSTEBADELEM     -2
  78. #define LSTENOMEM       -3
  79. #define LSTENOFOUND     -4
  80. #define LSTEREAD        -5
  81. #define LSTEWRITE       -6
  82.  
  83. #define LSTVERSION      "2.6"   /* Versionsnummer des Moduls */
  84. #define LSTUNIQUE       0x1
  85. #define LSTFILE         0x2
  86. #define LSTMEMORY       0x4
  87. #define LSTNOSPACE      0x8
  88. #define LSTNOCASE       0x10
  89. #define LSTHASH         0x20
  90. #define LSTTITLE        0x40
  91. #define LSTNUM          0x80
  92. #define LSTKEYMODES     (LSTNOSPACE | LSTNOCASE)
  93.  
  94. #define LSTCURR         0x0
  95. #define LSTNEXT         0x1
  96. #define LSTPREV         0x2
  97. #define LSTFIRST        0x4
  98. #define LSTLAST         0x8
  99. #define LSTEQUAL        0x10
  100. #define LSTNOTEQUAL     0x20
  101. #define LSTGREATER      0x40
  102. #define LSTLESS         0x80
  103. #define LSTRECNO        0x100
  104. #define LSTSET          0x200
  105.  
  106. #define LSTENULP        ((ELEM *) 0L)
  107. #define LSTNULP         ((LIST *) 0L)
  108.  
  109. #define LToFirst(lp)    (lp->lst_curr = lp->lst_first)
  110. #define LToLast(lp)     (lp->lst_curr = lp->lst_last)
  111. #define LToNext(ep)     (ep = ep->elm_next)
  112. #define LToPrev(ep)     (ep = ep->elm_prev)
  113. #define LIsFirst(lp)    (lp->lst_curr == lp->lst_first)
  114. #define LIsLast(lp)     (lp->lst_curr == lp->lst_last)
  115. #define LIsNull(ep)     (ep == LSTENULP)
  116.  
  117. #define LCmpBuf(lp,ep)  (strncmp (lp->lst_key, ep->elm_key, lp->lst_kylen))
  118. #define LExtraKey(lp)   (BOGetVal (lp->lst_flag, LSTKEYMODES))
  119.  
  120. #define LGetName(lp)      (lp->lst_name)
  121. #define LGetBuflen(lp)    (lp->lst_buflen)
  122. #define LGetCount(lp)     (lp->lst_cnt)
  123. #define LGetKyLen(lp)     (lp->lst_kylen)
  124. #define LGetFlag(lp)      (lp->lst_flag)
  125. #define LGetBuf(lp)       (lp->lst_buf)
  126. #define LGetKey(lp)       (lp->lst_key)
  127. #define LSetFlag(lp,f)    (lp->lst_flag |= (f))
  128.  
  129. #define LSetError(err)    lseterr (err)
  130. #define LGetError()       lseterr (LSTNOERROR)
  131.  
  132. #define LFindNext(lp)     lfndelm (lp, LSTNEXT)
  133. #define LFindPrev(lp)     lfndelm (lp, LSTPREV)
  134. #define LFindCurr(lp)     lfndelm (lp, LSTCURR)
  135. #define LFindFirst(lp)    lfndelm (lp, LSTFIRST)
  136. #define LFindLast(lp)     lfndelm (lp, LSTLAST)
  137. #define LFindEqual(lp)    lfndelm (lp, LSTEQUAL)
  138. #define LFindNotEqual(lp) lfndelm (lp, LSTNOTEQUAL)
  139. #define LFindGreater(lp)  lfndelm (lp, LSTGREATER)
  140. #define LFindLess(lp)     lfndelm (lp, LSTLESS)
  141. #define LFindEGreater(lp) lfndelm (lp, LSTGREATER | LSTEQUEAL)
  142. #define LFindELess(lp)    lfndelm (lp, LSTLESS | LSTEQUAL)
  143. #define LFindRecno(lp)    lfndelm (lp, LSTRECNO)
  144.  
  145. #define LGetNext(lp)      lgetelm (lp, LSTNEXT)
  146. #define LGetPrev(lp)      lgetelm (lp, LSTPREV)
  147. #define LGetCurr(lp)      lgetelm (lp, LSTCURR)
  148. #define LGetFirst(lp)     lgetelm (lp, LSTFIRST)
  149. #define LGetLast(lp)      lgetelm (lp, LSTLAST)
  150. #define LGetEqual(lp)     lgetelm (lp, LSTEQUAL)
  151. #define LGetNotEqual(lp)  lgetelm (lp, LSTNOTEQUAL)
  152. #define LGetGreater(lp)   lgetelm (lp, LSTGREATER)
  153. #define LGetLess(lp)      lgetelm (lp, LSTLESS)
  154. #define LGetEGreater(lp)  lgetelm (lp, LSTGREATER | LSTEQUEAL)
  155. #define LGetELess(lp)     lgetelm (lp, LSTLESS | LSTEQUAL)
  156. #define LGetRecno(lp)     lgetelm (lp, LSTRECNO)
  157.  
  158. #define LPutNext(lp)      lputelm (lp, LSTNEXT)
  159. #define LPutPrev(lp)      lputelm (lp, LSTPREV)
  160. #define LPutCurr(lp)      lputelm (lp, LSTCURR)
  161. #define LPutFirst(lp)     lputelm (lp, LSTFIRST)
  162. #define LPutLast(lp)      lputelm (lp, LSTLAST)
  163. #define LPutEqual(lp)     lputelm (lp, LSTEQUAL)
  164. #define LPutNotEqual(lp)  lputelm (lp, LSTNOTEQUAL)
  165. #define LPutGreater(lp)   lputelm (lp, LSTGREATER)
  166. #define LPutLess(lp)      lputelm (lp, LSTLESS)
  167. #define LPutEGreater(lp)  lputelm (lp, LSTGREATER | LSTEQUEAL)
  168. #define LPutELess(lp)     lputelm (lp, LSTLESS | LSTEQUAL)
  169. #define LPutRecno(lp)     lputelm (lp, LSTRECNO)
  170.  
  171. #define LInsNext(lp)      linselm (lp, LSTNEXT)
  172. #define LInsPrev(lp)      linselm (lp, LSTPREV)
  173. #define LInsCurr(lp)      linselm (lp, LSTCURR)
  174. #define LInsFirst(lp)     linselm (lp, LSTFIRST)
  175. #define LInsLast(lp)      linselm (lp, LSTLAST)
  176. #define LInsEqual(lp)     linselm (lp, LSTEQUAL)
  177. #define LInsNotEqual(lp)  linselm (lp, LSTNOTEQUAL)
  178. #define LInsGreater(lp)   linselm (lp, LSTGREATER)
  179. #define LInsLess(lp)      linselm (lp, LSTLESS)
  180. #define LInsEGreater(lp)  linselm (lp, LSTGREATER | LSTEQUEAL)
  181. #define LInsELess(lp)     linselm (lp, LSTLESS | LSTEQUAL)
  182. #define LInsRecno(lp)     linselm (lp, LSTRECNO)
  183.  
  184. #define LDelNext(lp)      ldelelm (lp, LSTNEXT)
  185. #define LDelPrev(lp)      ldelelm (lp, LSTPREV)
  186. #define LDelCurr(lp)      ldelelm (lp, LSTCURR)
  187. #define LDelFirst(lp)     ldelelm (lp, LSTFIRST)
  188. #define LDelLast(lp)      ldelelm (lp, LSTLAST)
  189. #define LDelEqual(lp)     ldelelm (lp, LSTEQUAL)
  190. #define LDelNotEqual(lp)  ldelelm (lp, LSTNOTEQUAL)
  191. #define LDelGreater(lp)   ldelelm (lp, LSTGREATER)
  192. #define LDelLess(lp)      ldelelm (lp, LSTLESS)
  193. #define LDelEGreater(lp)  ldelelm (lp, LSTGREATER | LSTEQUEAL)
  194. #define LDelELess(lp)     ldelelm (lp, LSTLESS | LSTEQUAL)
  195. #define LDelRecno(lp)     ldelelm (lp, LSTRECNO)
  196.  
  197. #define LPrtList(lp)   (lprtlst (lp,(LSTTITLE|LSTNUM),stdout),0,lp->lst_buflen)
  198.  
  199. #if GEMDOS & LASERC
  200. #define free(s)            /* bei free() stuerzt LaserC ab */
  201. #endif GEMDOS & LASERC
  202.