Imported Upstream version 2.9.4
[platform/upstream/libxml2.git] / os400 / libxmlrpg / hash.rpgle
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__