1: /*
2: * LibAxl: Another XML library
3: * Copyright (C) 2006 Advanced Software Production Line, S.L.
4: *
5: * This program is free software; you can redistribute it and/or
6: * modify it under the terms of the GNU Lesser General Public License
7: * as published by the Free Software Foundation; either version 2.1 of
8: * the License, or (at your option) any later version.
9: *
10: * This program is distributed in the hope that it will be useful,
11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13: * GNU Lesser General Public License for more details.
14: *
15: * You should have received a copy of the GNU Lesser General Public
16: * License along with this program; if not, write to the Free
17: * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18: * 02111-1307 USA
19: *
20: * You may find a copy of the license under this software is released
21: * at COPYING file. This is LGPL software: you are welcome to
22: * develop proprietary applications using this library without any
23: * royalty or fee but returning back any change, improvement or
24: * addition in the form of source code, project image, documentation
25: * patches, etc.
26: *
27: * For commercial support on build XML enabled solutions contact us:
28: *
29: * Postal address:
30: * Advanced Software Production Line, S.L.
31: * Edificio Alius A, Oficina 102,
32: * C/ Antonio Suarez Nº 10,
33: * Alcalá de Henares 28802 Madrid
34: * Spain
35: *
36: * Email address:
37: * info@aspl.es - http://www.aspl.es/xml
38: */
39: #ifndef __AXL_STACK_H__
40: #define __AXL_STACK_H__
41:
42: #include <axl_decl.h>
43:
44:
45:
46: BEGIN_C_DECLS
47:
48: /**
49: * \addtogroup axl_stack_module
50: * @{
51: */
52:
53: axlStack * axl_stack_new (axlDestroyFunc destroy_data);
54:
55: void axl_stack_push (axlStack * stack, axlPointer data);
56:
57: axlPointer axl_stack_pop (axlStack * stack);
58:
59: axlPointer axl_stack_peek (axlStack * stack);
60:
61: axl_bool axl_stack_foreach (axlStack * stack,
62: axlStackForeach2 func,
63: axlPointer user_data,
64: axlPointer user_data2);
65:
66: axl_bool axl_stack_foreach3 (axlStack * stack,
67: axlStackForeach3 func,
68: axlPointer user_data,
69: axlPointer user_data2,
70: axlPointer user_data3);
71:
72: int axl_stack_size (axlStack * stack);
73:
74: axl_bool axl_stack_is_empty (axlStack * stack);
75:
76: void axl_stack_free (axlStack * stack);
77:
78: axlBinaryStack * axl_binary_stack_new (void);
79:
80: void axl_binary_stack_push (axlBinaryStack * bstack, axl_bool status);
81:
82: void axl_binary_stack_push_the_same (axlBinaryStack * bstack);
83:
84: axl_bool axl_binary_stack_pop (axlBinaryStack * bstack);
85:
86: axl_bool axl_binary_stack_peek (axlBinaryStack * bstack);
87:
88: axl_bool axl_binary_stack_is_empty (axlBinaryStack * bstack);
89:
90: int axl_binary_stack_size (axlBinaryStack * bstack);
91:
92: void axl_binary_stack_free (axlBinaryStack * bstack);
93:
94: /* @} */
95:
96: END_C_DECLS
97:
98: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>