8030 libmvect: uninitialized variable
[unleashed.git] / usr / src / lib / libast / common / include / stack.h
blob0c80fd68c1632ee3deaa353d3e0836c0fff51e14
1 /***********************************************************************
2 * *
3 * This software is part of the ast package *
4 * Copyright (c) 1985-2010 AT&T Intellectual Property *
5 * and is licensed under the *
6 * Common Public License, Version 1.0 *
7 * by AT&T Intellectual Property *
8 * *
9 * A copy of the License is available at *
10 * http://www.opensource.org/licenses/cpl1.0.txt *
11 * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
12 * *
13 * Information and Software Systems Research *
14 * AT&T Research *
15 * Florham Park NJ *
16 * *
17 * Glenn Fowler <gsf@research.att.com> *
18 * David Korn <dgk@research.att.com> *
19 * Phong Vo <kpv@research.att.com> *
20 * *
21 ***********************************************************************/
22 #pragma prototyped
24 * Glenn Fowler
25 * AT&T Research
27 * homogenous stack routine definitions
30 #ifndef _STACK_H
31 #define _STACK_H
33 typedef struct stacktable* STACK; /* stack pointer */
34 typedef struct stackposition STACKPOS; /* stack position */
36 struct stackblock /* stack block cell */
38 void** stack; /* actual stack */
39 struct stackblock* prev; /* previous block in list */
40 struct stackblock* next; /* next block in list */
43 struct stackposition /* stack position */
45 struct stackblock* block; /* current block pointer */
46 int index; /* index within current block */
49 struct stacktable /* stack information */
51 struct stackblock* blocks; /* stack table blocks */
52 void* error; /* error return value */
53 int size; /* size of each block */
54 STACKPOS position; /* current stack position */
58 * map old names to new
61 #define mkstack stackalloc
62 #define rmstack stackfree
63 #define clrstack stackclear
64 #define getstack stackget
65 #define pushstack stackpush
66 #define popstack stackpop
67 #define posstack stacktell
69 #if _BLD_ast && defined(__EXPORT__)
70 #define extern __EXPORT__
71 #endif
73 extern STACK stackalloc(int, void*);
74 extern void stackfree(STACK);
75 extern void stackclear(STACK);
76 extern void* stackget(STACK);
77 extern int stackpush(STACK, void*);
78 extern int stackpop(STACK);
79 extern void stacktell(STACK, int, STACKPOS*);
81 #undef extern
83 #endif