diff options
author | Marc G. Fournier <scrappy@hub.org> | 1996-07-09 06:22:35 +0000 |
---|---|---|
committer | Marc G. Fournier <scrappy@hub.org> | 1996-07-09 06:22:35 +0000 |
commit | d31084e9d1118b25fd16580d9d8c2924b5740dff (patch) | |
tree | 3179e66307d54df9c7b966543550e601eb55e668 /src/backend/lib/fstack.h | |
download | postgresql-PG95-1_01.tar.gz postgresql-PG95-1_01.zip |
Postgres95 1.01 Distribution - Virgin SourcesPG95-1_01
Diffstat (limited to 'src/backend/lib/fstack.h')
-rw-r--r-- | src/backend/lib/fstack.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/src/backend/lib/fstack.h b/src/backend/lib/fstack.h new file mode 100644 index 00000000000..b0b1df00d83 --- /dev/null +++ b/src/backend/lib/fstack.h @@ -0,0 +1,113 @@ +/*------------------------------------------------------------------------- + * + * fstack.h-- + * Fixed format stack definitions. + * + * + * Copyright (c) 1994, Regents of the University of California + * + * $Id: fstack.h,v 1.1.1.1 1996/07/09 06:21:29 scrappy Exp $ + * + *------------------------------------------------------------------------- + */ +/* + * Note: + * Fixed format stacks assist in the construction of FIFO stacks of + * fixed format structures. Structures which are to be stackable + * should contain a FixedItemData component. A stack is initilized + * with the offset of the FixedItemData component of the structure + * it will hold. By doing so, push and pop operations are simplified + * for the callers. All references to stackable items are pointers + * to the base of the structure instead of pointers to the + * FixedItemData component. + * + */ +#ifndef FSTACK_H +#define FSTACK_H + +#include "c.h" + +/* + * FixedItem -- + * Fixed format stackable item chain component. + * + * Note: + * Structures must contain one FixedItemData component per stack in + * which it will be an item. + */ +typedef struct FixedItemData FixedItemData; +typedef FixedItemData *FixedItem; + +struct FixedItemData { + FixedItem next; /* next item or NULL */ +}; + +/* + * FixedStack -- + * Fixed format stack. + */ +typedef struct FixedStackData { + FixedItem top; /* Top item on the stack or NULL */ + Offset offset; /* Offset from struct base to item */ + /* this could be signed short int! */ +} FixedStackData; + +typedef FixedStackData *FixedStack; + +/* + * FixedStackInit -- + * Iniitializes stack for structures with given fixed component offset. + * + * Exceptions: + * BadArg if stack is invalid pointer. + */ +extern void FixedStackInit(FixedStack stack, Offset offset); + +/* + * FixedStackPop -- + * Returns pointer to top structure on stack or NULL if empty stack. + * + * Exceptions: + * BadArg if stack is invalid. + */ +Pointer FixedStackPop(FixedStack stack); + +/* + * FixedStackPush -- + * Places structure associated with pointer onto top of stack. + * + * Exceptions: + * BadArg if stack is invalid. + * BadArg if pointer is invalid. + */ +extern void FixedStackPush(FixedStack stack, Pointer pointer); + +/* + * FixedStackGetTop -- + * Returns pointer to top structure of a stack. This item is not poped. + * + * Note: + * This is not part of the normal stack interface. It is intended for + * debugging use only. + * + * Exceptions: + * BadArg if stack is invalid. + */ +extern Pointer FixedStackGetTop(FixedStack stack); + +/* + * FixedStackGetNext -- + * Returns pointer to next structure after pointer of a stack. + * + * Note: + * This is not part of the normal stack interface. It is intended for + * debugging use only. + * + * Exceptions: + * BadArg if stack is invalid. + * BadArg if pointer is invalid. + * BadArg if stack does not contain pointer. + */ +extern Pointer FixedStackGetNext(FixedStack stack, Pointer pointer); + +#endif /* FSTACK_H */ |