fstack.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:3k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * fstack.h
  4.  *   Fixed format stack definitions.
  5.  *
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  * $Id: fstack.h,v 1.8 1999/05/25 16:13:58 momjian Exp $
  10.  *
  11.  *-------------------------------------------------------------------------
  12.  */
  13. /*
  14.  * Note:
  15.  * Fixed format stacks assist in the construction of FIFO stacks of
  16.  * fixed format structures.  Structures which are to be stackable
  17.  * should contain a FixedItemData component.  A stack is initilized
  18.  * with the offset of the FixedItemData component of the structure
  19.  * it will hold.  By doing so, push and pop operations are simplified
  20.  * for the callers.  All references to stackable items are pointers
  21.  * to the base of the structure instead of pointers to the
  22.  * FixedItemData component.
  23.  *
  24.  */
  25. #ifndef FSTACK_H
  26. #define FSTACK_H
  27. /*
  28.  * FixedItem
  29.  * Fixed format stackable item chain component.
  30.  *
  31.  * Note:
  32.  * Structures must contain one FixedItemData component per stack in
  33.  * which it will be an item.
  34.  */
  35. typedef struct FixedItemData FixedItemData;
  36. typedef FixedItemData *FixedItem;
  37. struct FixedItemData
  38. {
  39. FixedItem next; /* next item or NULL */
  40. };
  41. /*
  42.  * FixedStack
  43.  * Fixed format stack.
  44.  */
  45. typedef struct FixedStackData
  46. {
  47. FixedItem top; /* Top item on the stack or NULL */
  48. Offset offset; /* Offset from struct base to item */
  49. /* this could be signed short int! */
  50. } FixedStackData;
  51. typedef FixedStackData *FixedStack;
  52. /*
  53.  * FixedStackInit
  54.  * Iniitializes stack for structures with given fixed component offset.
  55.  *
  56.  * Exceptions:
  57.  * BadArg if stack is invalid pointer.
  58.  */
  59. extern void FixedStackInit(FixedStack stack, Offset offset);
  60. /*
  61.  * FixedStackPop
  62.  * Returns pointer to top structure on stack or NULL if empty stack.
  63.  *
  64.  * Exceptions:
  65.  * BadArg if stack is invalid.
  66.  */
  67. Pointer FixedStackPop(FixedStack stack);
  68. /*
  69.  * FixedStackPush
  70.  * Places structure associated with pointer onto top of stack.
  71.  *
  72.  * Exceptions:
  73.  * BadArg if stack is invalid.
  74.  * BadArg if pointer is invalid.
  75.  */
  76. extern void FixedStackPush(FixedStack stack, Pointer pointer);
  77. /*
  78.  * FixedStackGetTop
  79.  * Returns pointer to top structure of a stack.  This item is not poped.
  80.  *
  81.  * Note:
  82.  * This is not part of the normal stack interface.  It is intended for
  83.  *  debugging use only.
  84.  *
  85.  * Exceptions:
  86.  * BadArg if stack is invalid.
  87.  */
  88. extern Pointer FixedStackGetTop(FixedStack stack);
  89. /*
  90.  * FixedStackGetNext
  91.  * Returns pointer to next structure after pointer of a stack.
  92.  *
  93.  * Note:
  94.  * This is not part of the normal stack interface.  It is intended for
  95.  *  debugging use only.
  96.  *
  97.  * Exceptions:
  98.  * BadArg if stack is invalid.
  99.  * BadArg if pointer is invalid.
  100.  * BadArg if stack does not contain pointer.
  101.  */
  102. extern Pointer FixedStackGetNext(FixedStack stack, Pointer pointer);
  103. #endif  /* FSTACK_H */