Imported Upstream version 2.9.4
[platform/upstream/libxml2.git] / os400 / libxmlrpg / xmlregexp.rpgle
1       * Summary: regular expressions handling
2       * Description: basic API for libxml regular expressions handling used
3       *              for XML Schemas and validation.
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_REGEXP_H__)
10       /define XML_REGEXP_H__
11
12       /include "libxmlrpg/xmlversion"
13
14       /if defined(LIBXML_REGEXP_ENABLED)
15
16       /include "libxmlrpg/xmlTypesC"
17
18       * xmlRegexpPtr:
19       *
20       * A libxml regular expression, they can actually be far more complex
21       * thank the POSIX regex expressions.
22
23      d xmlRegexpPtr    s               *   based(######typedef######)
24
25       * xmlRegExecCtxtPtr:
26       *
27       * A libxml progressive regular expression evaluation context
28
29      d xmlRegExecCtxtPtr...
30      d                 s               *   based(######typedef######)
31
32       /include "libxmlrpg/tree"
33       /include "libxmlrpg/dict"
34
35       * The POSIX like API
36
37      d xmlRegexpCompile...
38      d                 pr                  extproc('xmlRegexpCompile')
39      d                                     like(xmlRegexpPtr)
40      d  regexp                         *   value options(*string)               const xmlChar *
41
42      d xmlRegFreeRegexp...
43      d                 pr                  extproc('xmlRegFreeRegexp')
44      d  regexp                             value like(xmlRegexpPtr)
45
46      d xmlRegexpExec   pr                  extproc('xmlRegexpExec')
47      d                                     like(xmlCint)
48      d  comp                               value like(xmlRegexpPtr)
49      d  value                          *   value options(*string)               const xmlChar *
50
51      d xmlRegexpPrint  pr                  extproc('xmlRegexpPrint')
52      d  output                         *   value                                FILE *
53      d  regexp                             value like(xmlRegexpPtr)
54
55      d xmlRegexpIsDeterminist...
56      d                 pr                  extproc('xmlRegexpIsDeterminist')
57      d                                     like(xmlCint)
58      d  comp                               value like(xmlRegexpPtr)
59
60       * xmlRegExecCallbacks:
61       * @exec: the regular expression context
62       * @token: the current token string
63       * @transdata: transition data
64       * @inputdata: input data
65       *
66       * Callback function when doing a transition in the automata
67
68      d xmlRegExecCallbacks...
69      d                 s               *   based(######typedef######)
70      d                                     procptr
71
72       * The progressive API
73
74      d xmlRegNewExecCtxt...
75      d                 pr                  extproc('xmlRegNewExecCtxt')
76      d                                     like(xmlRegExecCtxtPtr)
77      d  comp                               value like(xmlRegexpPtr)
78      d  callback                           value like(xmlRegExecCallbacks)
79      d  data                           *   value                                void *
80
81      d xmlRegFreeExecCtxt...
82      d                 pr                  extproc('xmlRegFreeExecCtxt')
83      d  exec                               value like(xmlRegExecCtxtPtr)
84
85      d xmlRegExecPushString...
86      d                 pr                  extproc('xmlRegExecPushString')
87      d                                     like(xmlCint)
88      d  exec                               value like(xmlRegExecCtxtPtr)
89      d  value                          *   value options(*string)               const xmlChar *
90      d  data                           *   value                                void *
91
92      d xmlRegExecPushString2...
93      d                 pr                  extproc('xmlRegExecPushString2')
94      d                                     like(xmlCint)
95      d  exec                               value like(xmlRegExecCtxtPtr)
96      d  value                          *   value options(*string)               const xmlChar *
97      d  value2                         *   value options(*string)               const xmlChar *
98      d  data                           *   value                                void *
99
100      d xmlRegExecNextValues...
101      d                 pr                  extproc('xmlRegExecNextValues')
102      d                                     like(xmlCint)
103      d  exec                               value like(xmlRegExecCtxtPtr)
104      d  nbval                              like(xmlCint)
105      d  nbneg                              like(xmlCint)
106      d  values                         *                                        xmlChar * (*)
107      d  terminal                           like(xmlCint)
108
109      d xmlRegExecErrInfo...
110      d                 pr                  extproc('xmlRegExecErrInfo')
111      d                                     like(xmlCint)
112      d  exec                               value like(xmlRegExecCtxtPtr)
113      d  string                         *                                        const xmlChar * (*)
114      d  nbval                              like(xmlCint)
115      d  nbneg                              like(xmlCint)
116      d  values                         *                                        xmlChar * (*)
117      d  terminal                           like(xmlCint)
118
119       /if defined(LIBXML_EXPR_ENABLED)
120
121       * Formal regular expression handling
122       * Its goal is to do some formal work on content models
123
124       * expressions are used within a context
125
126      d xmlExpCtxtPtr   s               *   based(######typedef######)
127
128      d xmlExpFreeCtxt  pr                  extproc('xmlExpFreeCtxt')
129      d  ctxt                               value like(xmlExpCtxtPtr)
130
131      d xmlExpNewCtxt   pr                  extproc('xmlExpNewCtxt')
132      d                                     like(xmlExpCtxtPtr)
133      d  maxNodes                           value like(xmlCint)
134      d  dict                               value like(xmlDictPtr)
135
136      d xmlExpCtxtNbNodes...
137      d                 pr                  extproc('xmlExpCtxtNbNodes')
138      d                                     like(xmlCint)
139      d  ctxt                               value like(xmlExpCtxtPtr)
140
141      d xmlExpCtxtNbCons...
142      d                 pr                  extproc('xmlExpCtxtNbCons')
143      d                                     like(xmlCint)
144      d  ctxt                               value like(xmlExpCtxtPtr)
145
146       * Expressions are trees but the tree is opaque
147
148      d xmlExpNodePtr   s               *   based(######typedef######)
149
150      d xmlExpNodeType  s                   based(######typedef######)
151      d                                     like(xmlCenum)
152      d  XML_EXP_EMPTY  c                   0
153      d  XML_EXP_FORBID...
154      d                 c                   1
155      d  XML_EXP_ATOM   c                   2
156      d  XML_EXP_SEQ    c                   3
157      d  XML_EXP_OR     c                   4
158      d  XML_EXP_COUNT  c                   5
159
160       * 2 core expressions shared by all for the empty language set
161       * and for the set with just the empty token
162
163      d forbiddenExp    s                   import('forbiddenExp')
164      d                                     like(xmlExpNodePtr)
165
166      d emptyExp        s                   import('emptyExp')
167      d                                     like(xmlExpNodePtr)
168
169
170       * Expressions are reference counted internally
171
172      d xmlExpFree      pr                  extproc('xmlExpFree')
173      d  expr                               value like(xmlExpNodePtr)
174
175      d xmlExpRef       pr                  extproc('xmlExpRef')
176      d  expr                               value like(xmlExpNodePtr)
177
178       * constructors can be either manual or from a string
179
180      d xmlExpParse     pr                  extproc('xmlExpParse')
181      d                                     like(xmlExpNodePtr)
182      d  ctxt                               value like(xmlExpCtxtPtr)
183      d  expr                           *   value options(*string)               const char *
184
185      d xmlExpNewAtom   pr                  extproc('xmlExpNewAtom')
186      d                                     like(xmlExpNodePtr)
187      d  ctxt                               value like(xmlExpCtxtPtr)
188      d  name                           *   value options(*string)               const xmlChar *
189      d  len                                value like(xmlCint)
190
191      d xmlExpNewOr     pr                  extproc('xmlExpNewOr')
192      d                                     like(xmlExpNodePtr)
193      d  ctxt                               value like(xmlExpCtxtPtr)
194      d  left                               value like(xmlExpNodePtr)
195      d  right                              value like(xmlExpNodePtr)
196
197      d xmlExpNewSeq    pr                  extproc('xmlExpNewSeq')
198      d                                     like(xmlExpNodePtr)
199      d  ctxt                               value like(xmlExpCtxtPtr)
200      d  left                               value like(xmlExpNodePtr)
201      d  right                              value like(xmlExpNodePtr)
202
203      d xmlExpNewRange  pr                  extproc('xmlExpNewRange')
204      d                                     like(xmlExpNodePtr)
205      d  ctxt                               value like(xmlExpCtxtPtr)
206      d  subset                             value like(xmlExpNodePtr)
207      d  min                                value like(xmlCint)
208      d  max                                value like(xmlCint)
209
210       * The really interesting APIs
211
212      d xmlExpIsNillable...
213      d                 pr                  extproc('xmlExpIsNillable')
214      d                                     like(xmlCint)
215      d  expr                               value like(xmlExpNodePtr)
216
217      d xmlExpMaxToken  pr                  extproc('xmlExpMaxToken')
218      d                                     like(xmlCint)
219      d  expr                               value like(xmlExpNodePtr)
220
221      d xmlExpGetLanguage...
222      d                 pr                  extproc('xmlExpGetLanguage')
223      d                                     like(xmlCint)
224      d  ctxt                               value like(xmlExpCtxtPtr)
225      d  expr                               value like(xmlExpNodePtr)
226      d  langList                       *                                        const xmlChar *(*)
227      d  len                                value like(xmlCint)
228
229      d xmlExpGetStart  pr                  extproc('xmlExpGetStart')
230      d                                     like(xmlCint)
231      d  ctxt                               value like(xmlExpCtxtPtr)
232      d  expr                               value like(xmlExpNodePtr)
233      d  tokList                        *                                        const xmlChar *(*)
234      d  len                                value like(xmlCint)
235
236      d xmlExpStringDerive...
237      d                 pr                  extproc('xmlExpStringDerive')
238      d                                     like(xmlExpNodePtr)
239      d  ctxt                               value like(xmlExpCtxtPtr)
240      d  expr                               value like(xmlExpNodePtr)
241      d  str                            *   value options(*string)               const xmlChar *
242      d  len                                value like(xmlCint)
243
244      d xmlExpExpDerive...
245      d                 pr                  extproc('xmlExpExpDerive')
246      d                                     like(xmlExpNodePtr)
247      d  ctxt                               value like(xmlExpCtxtPtr)
248      d  expr                               value like(xmlExpNodePtr)
249      d  sub                                value like(xmlExpNodePtr)
250
251      d xmlExpSubsume   pr                  extproc('xmlExpSubsume')
252      d                                     like(xmlCint)
253      d  ctxt                               value like(xmlExpCtxtPtr)
254      d  expr                               value like(xmlExpNodePtr)
255      d  sub                                value like(xmlExpNodePtr)
256
257      d xmlExpDump      pr                  extproc('xmlExpDump')
258      d  buf                                value like(xmlBufferPtr)
259      d  expr                               value like(xmlExpNodePtr)
260       /endif                                                                    LIBXML_EXPR_ENABLED
261       /endif                                                                    LIBXML_REGEXP_ENABLD
262       /endif                                                                    XML_REGEXP_H__