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