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