home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / snip9707.zip / LL_STACK.H < prev    next >
C/C++ Source or Header  |  1997-07-05  |  2KB  |  46 lines

  1. /* +++Date last modified: 05-Jul-1997 */
  2.  
  3. /* =======================================================================
  4.     LL_STACK.h      Generic Stacks for fixed size data-items
  5.                     based on the LLS Singly Linked List module.
  6.  
  7.                     v0.50  94-08-12
  8.  
  9.                     Note that the List's current node pointer always is
  10.                     the same as its first node pointer.
  11.                     This module has no related .C file.
  12.  
  13.  _____              This version is Public Domain.
  14.  /_|__|             A.Reitsma, Delft, The Netherlands.
  15. /  | \  --------------------------------------------------------------- */
  16.  
  17. #ifndef LL_STACK__H
  18. #define LL_STACK__H
  19.  
  20. #include "lls.h"
  21.  
  22. #define LLstackCreate(itemsize)        LLScreate( itemsize )
  23. #define LLstackDelete(stack)           LLSdelete( stack )
  24.  
  25. #define LLstackPush(stack,data)        LLSnodePrepend( stack, data )
  26. #define LLstackPushFrom(stack,source)  LLSnodePrependFrom( stack, source )
  27.  
  28. #define LLstackRepair(stack)           LLSnodePtr2First( stack )
  29.           /* For 'repair' purposes and also to check for an empty Stack */
  30.  
  31. /* ---- stored data management -------------------------------------------
  32.    'return' typed data:
  33. */
  34. #define LLstackPopInt(stack)       LLSnodeInt(stack), LLSnodeDelete(stack)
  35. #define LLstackPopLong(stack)      LLSnodeLong(stack),LLSnodeDelete(stack)
  36. #define LLstackPopPtr(stack)       LLSnodePtr(stack), LLSnodeDelete(stack)
  37. #define LLstackPopFptr(stack)      LLSnodeFptr(stack),LLSnodeDelete(stack)
  38.  
  39. /* 'return' typeless data.
  40. */
  41. #define LLstackPopTo(stack,dest)   LLSnodeDataTo(stack,dest),           \
  42.                                        (dest ? LLSnodeDelete(stack) : 0 )
  43.  
  44. #endif /* LL_STACK__H */
  45. /* ==== LL_STACK.h  end =============================================== */
  46.