Annotation of gpl/axl/src/axl_hash.h, revision 1.1.1.1
1.1 misho 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_HASH_H__
40: #define __AXL_HASH_H__
41:
42: #include <axl_decl.h>
43:
44: BEGIN_C_DECLS
45:
46: axlHash * axl_hash_new (axlHashFunc hash,
47: axlEqualFunc equal);
48:
49: axlHash * axl_hash_new_full (axlHashFunc hash,
50: axlEqualFunc equal,
51: int step);
52:
53: unsigned int axl_hash_string (axlPointer key);
54:
55: int axl_hash_equal_string (axlPointer keya,
56: axlPointer keyb);
57:
58: unsigned int axl_hash_int (axlPointer key);
59:
60: int axl_hash_equal_int (axlPointer keya,
61: axlPointer keyb);
62:
63: void axl_hash_insert (axlHash * hash,
64: axlPointer key,
65: axlPointer data);
66:
67: void axl_hash_insert_full (axlHash * hash,
68: axlPointer key,
69: axlDestroyFunc destroy_key,
70: axlPointer data,
71: axlDestroyFunc destroy_data);
72:
73: axl_bool axl_hash_remove (axlHash * hash,
74: axlPointer key);
75:
76: axl_bool axl_hash_delete (axlHash * hash,
77: axlPointer key);
78:
79: axl_bool axl_hash_exists (axlHash * hash,
80: axlPointer key);
81:
82: axlPointer axl_hash_get (axlHash * hash,
83: axlPointer key);
84:
85: void axl_hash_foreach (axlHash * hash,
86: axlHashForeachFunc func,
87: axlPointer user_data);
88:
89: void axl_hash_foreach2 (axlHash * hash,
90: axlHashForeachFunc2 func,
91: axlPointer user_data,
92: axlPointer user_data2);
93:
94: void axl_hash_foreach3 (axlHash * hash,
95: axlHashForeachFunc3 func,
96: axlPointer user_data,
97: axlPointer user_data2,
98: axlPointer user_data3);
99:
100: void axl_hash_foreach4 (axlHash * hash,
101: axlHashForeachFunc4 func,
102: axlPointer user_data,
103: axlPointer user_data2,
104: axlPointer user_data3,
105: axlPointer user_data4);
106:
107: int axl_hash_items (axlHash * hash);
108:
109: int axl_hash_capacity (axlHash * hash);
110:
111: axlHash * axl_hash_copy (axlHash * hash,
112: axlHashItemCopy key_copy,
113: axlHashItemCopy value_copy);
114:
115:
116: void axl_hash_show_status (axlHash * hash);
117:
118: typedef void (*axlHashPrintKeyData) (axlPointer key, axlPointer data);
119:
120: void axl_hash_show_status_full (axlHash * hash,
121: axlHashPrintKeyData show_item);
122:
123:
124: void axl_hash_free (axlHash * hash);
125:
126: /* cursor interface */
127: axlHashCursor * axl_hash_cursor_new (axlHash * hash);
128:
129: void axl_hash_cursor_first (axlHashCursor * cursor);
130:
131: void axl_hash_cursor_last (axlHashCursor * cursor);
132:
133: void axl_hash_cursor_next (axlHashCursor * cursor);
134:
135: axl_bool axl_hash_cursor_has_next (axlHashCursor * cursor);
136:
137: axl_bool axl_hash_cursor_has_item (axlHashCursor * cursor);
138:
139: void axl_hash_cursor_remove (axlHashCursor * cursor);
140:
141: axlPointer axl_hash_cursor_get_key (axlHashCursor * cursor);
142:
143: axlPointer axl_hash_cursor_get_value (axlHashCursor * cursor);
144:
145: axlHash * axl_hash_cursor_hash (axlHashCursor * cursor);
146:
147: void axl_hash_cursor_free (axlHashCursor * cursor);
148:
149: /* private api */
150: int __axl_hash_spare_max (axlHash * hash);
151:
152: int __axl_hash_spare_next (axlHash * hash);
153:
154: END_C_DECLS
155:
156: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>