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