1      * Summary: Chained hash tables
2      * Description: This module implements the hash table support used in
3      *              various places in the library.
4      *
5      * Copy: See Copyright for the status of this software.
6      *
7      * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
8
9      /if not defined(XML_HASH_H__)
10      /define XML_HASH_H__
11
12      /include "libxmlrpg/xmlTypesC"
13
14      * The hash table.
15
16     d xmlHashTablePtr...
17     d                 s               *   based(######typedef######)
18
19      /include "libxmlrpg/xmlversion"
20      /include "libxmlrpg/parser"
21      /include "libxmlrpg/dict"
22
23      * function types:
24
25      * xmlHashDeallocator:
26      * @payload:  the data in the hash
27      * @name:  the name associated
28      *
29      * Callback to free data from a hash.
30
31     d xmlHashDeallocator...
32     d                 s               *   based(######typedef######)
33     d                                     procptr
34
35      * xmlHashCopier:
36      * @payload:  the data in the hash
37      * @name:  the name associated
38      *
39      * Callback to copy data from a hash.
40      *
41      * Returns a copy of the data or NULL in case of error.
42
43     d xmlHashCopier   s               *   based(######typedef######)
44     d                                     procptr
45
46      * xmlHashScanner:
47      * @payload:  the data in the hash
48      * @data:  extra scannner data
49      * @name:  the name associated
50      *
51      * Callback when scanning data in a hash with the simple scanner.
52
53     d xmlHashScanner  s               *   based(######typedef######)
54     d                                     procptr
55
56      * xmlHashScannerFull:
57      * @payload:  the data in the hash
58      * @data:  extra scannner data
59      * @name:  the name associated
60      * @name2:  the second name associated
61      * @name3:  the third name associated
62      *
63      * Callback when scanning data in a hash with the full scanner.
64
65     d xmlHashScannerFull...
66     d                 s               *   based(######typedef######)
67     d                                     procptr
68
69      * Constructor and destructor.
70
71     d xmlHashCreate   pr                  extproc('xmlHashCreate')
72     d                                     like(xmlHashTablePtr)
73     d  size                               value like(xmlCint)
74
75     d xmlHashCreateDict...
76     d                 pr                  extproc('xmlHashCreateDict')
77     d                                     like(xmlHashTablePtr)
78     d  size                               value like(xmlCint)
79     d  dict                               value like(xmlDictPtr)
80
81     d xmlHashFree     pr                  extproc('xmlHashFree')
82     d  table                              value like(xmlHashTablePtr)
83     d  f                                  value like(xmlHashDeallocator)
84
85      * Add a new entry to the hash table.
86
87     d xmlHashAddEntry...
88     d                 pr                  extproc('xmlHashAddEntry')
89     d                                     like(xmlCint)
90     d  table                              value like(xmlHashTablePtr)
91     d  name                           *   value options(*string)               const xmlChar *
92     d  userdata                       *   value options(*string)               void *
93
94     d xmlHashUpdateEntry...
95     d                 pr                  extproc('xmlHashUpdateEntry')
96     d                                     like(xmlCint)
97     d  table                              value like(xmlHashTablePtr)
98     d  name                           *   value options(*string)               const xmlChar *
99     d  userdata                       *   value options(*string)               void *
100     d  f                                  value like(xmlHashDeallocator)
101
102     d xmlHashAddEntry2...
103     d                 pr                  extproc('xmlHashAddEntry2')
104     d                                     like(xmlCint)
105     d  table                              value like(xmlHashTablePtr)
106     d  name                           *   value options(*string)               const xmlChar *
107     d  name2                          *   value options(*string)               const xmlChar *
108     d  userdata                       *   value options(*string)               void *
109
110     d xmlHashUpdateEntry2...
111     d                 pr                  extproc('xmlHashUpdateEntry2')
112     d                                     like(xmlCint)
113     d  table                              value like(xmlHashTablePtr)
114     d  name                           *   value options(*string)               const xmlChar *
115     d  name2                          *   value options(*string)               const xmlChar *
116     d  userdata                       *   value options(*string)               void *
117     d  f                                  value like(xmlHashDeallocator)
118
119     d xmlHashAddEntry3...
120     d                 pr                  extproc('xmlHashAddEntry3')
121     d                                     like(xmlCint)
122     d  table                              value like(xmlHashTablePtr)
123     d  name                           *   value options(*string)               const xmlChar *
124     d  name2                          *   value options(*string)               const xmlChar *
125     d  name3                          *   value options(*string)               const xmlChar *
126     d  userdata                       *   value options(*string)               void *
127
128     d xmlHashUpdateEntry3...
129     d                 pr                  extproc('xmlHashUpdateEntry3')
130     d                                     like(xmlCint)
131     d  table                              value like(xmlHashTablePtr)
132     d  name                           *   value options(*string)               const xmlChar *
133     d  name2                          *   value options(*string)               const xmlChar *
134     d  name3                          *   value options(*string)               const xmlChar *
135     d  userdata                       *   value options(*string)               void *
136     d  f                                  value like(xmlHashDeallocator)
137
138      * Remove an entry from the hash table.
139
140     d xmlHashRemoveEntry...
141     d                 pr                  extproc('xmlHashRemoveEntry')
142     d                                     like(xmlCint)
143     d  table                              value like(xmlHashTablePtr)
144     d  name                           *   value options(*string)               const xmlChar *
145     d  f                                  value like(xmlHashDeallocator)
146
147     d xmlHashRemoveEntry2...
148     d                 pr                  extproc('xmlHashRemoveEntry2')
149     d                                     like(xmlCint)
150     d  table                              value like(xmlHashTablePtr)
151     d  name                           *   value options(*string)               const xmlChar *
152     d  name2                          *   value options(*string)               const xmlChar *
153     d  f                                  value like(xmlHashDeallocator)
154
155     d xmlHashRemoveEntry3...
156     d                 pr                  extproc('xmlHashRemoveEntry3')
157     d                                     like(xmlCint)
158     d  table                              value like(xmlHashTablePtr)
159     d  name                           *   value options(*string)               const xmlChar *
160     d  name2                          *   value options(*string)               const xmlChar *
161     d  name3                          *   value options(*string)               const xmlChar *
162     d  f                                  value like(xmlHashDeallocator)
163
164      * Retrieve the userdata.
165
166     d xmlHashLookup   pr              *   extproc('xmlHashLookup')             void *
167     d  table                              value like(xmlHashTablePtr)
168     d  name                           *   value options(*string)               const xmlChar *
169
170     d xmlHashLookup2  pr              *   extproc('xmlHashLookup2')            void *
171     d  table                              value like(xmlHashTablePtr)
172     d  name                           *   value options(*string)               const xmlChar *
173     d  name2                          *   value options(*string)               const xmlChar *
174
175     d xmlHashLookup3  pr              *   extproc('xmlHashLookup3')            void *
176     d  table                              value like(xmlHashTablePtr)
177     d  name                           *   value options(*string)               const xmlChar *
178     d  name2                          *   value options(*string)               const xmlChar *
179     d  name3                          *   value options(*string)               const xmlChar *
180
181     d xmlHashQLookup  pr              *   extproc('xmlHashQLookup')            void *
182     d  table                              value like(xmlHashTablePtr)
183     d  name                           *   value options(*string)               const xmlChar *
184     d  prefix                         *   value options(*string)               const xmlChar *
185
186     d xmlHashQLookup2...
187     d                 pr              *   extproc('xmlHashQLookup2')           void *
188     d  table                              value like(xmlHashTablePtr)
189     d  name                           *   value options(*string)               const xmlChar *
190     d  prefix                         *   value options(*string)               const xmlChar *
191     d  name2                          *   value options(*string)               const xmlChar *
192     d  prefix2                        *   value options(*string)               const xmlChar *
193
194     d xmlHashQLookup3...
195     d                 pr              *   extproc('xmlHashQLookup3')           void *
196     d  table                              value like(xmlHashTablePtr)
197     d  name                           *   value options(*string)               const xmlChar *
198     d  prefix                         *   value options(*string)               const xmlChar *
199     d  name2                          *   value options(*string)               const xmlChar *
200     d  prefix2                        *   value options(*string)               const xmlChar *
201     d  name3                          *   value options(*string)               const xmlChar *
202     d  prefix3                        *   value options(*string)               const xmlChar *
203
204      * Helpers.
205
206     d xmlHashCopy     pr                  extproc('xmlHashCopy')
207     d                                     like(xmlHashTablePtr)
208     d  table                              value like(xmlHashTablePtr)
209     d  f                                  value like(xmlHashCopier)
210
211     d xmlHashSize     pr                  extproc('xmlHashSize')
212     d                                     like(xmlCint)
213     d  table                              value like(xmlHashTablePtr)
214
215     d xmlHashScan     pr                  extproc('xmlHashScan')
216     d  table                              value like(xmlHashTablePtr)
217     d  f                                  value like(xmlHashScanner)
218     d  data                           *   value options(*string)               void *
219
220     d xmlHashScan3    pr                  extproc('xmlHashScan3')
221     d  table                              value like(xmlHashTablePtr)
222     d  name                           *   value options(*string)               const xmlChar *
223     d  name2                          *   value options(*string)               const xmlChar *
224     d  name3                          *   value options(*string)               const xmlChar *
225     d  f                                  value like(xmlHashScanner)
226     d  data                           *   value options(*string)               void *
227
228     d xmlHashScanFull...
229     d                 pr                  extproc('xmlHashScanFull')
230     d  table                              value like(xmlHashTablePtr)
231     d  f                                  value like(xmlHashScannerFull)
232     d  data                           *   value options(*string)               void *
233
234     d xmlHashScanFull3...
235     d                 pr                  extproc('xmlHashScanFull3')
236     d  table                              value like(xmlHashTablePtr)
237     d  name                           *   value options(*string)               const xmlChar *
238     d  name2                          *   value options(*string)               const xmlChar *
239     d  name3                          *   value options(*string)               const xmlChar *
240     d  f                                  value like(xmlHashScannerFull)
241     d  data                           *   value options(*string)               void *
242
243      /endif                                                                    XML_HASH_H__
244