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__ 247