1*7c568831SAndroid Build Coastguard Worker /* 2*7c568831SAndroid Build Coastguard Worker * Summary: regular expressions handling 3*7c568831SAndroid Build Coastguard Worker * Description: basic API for libxml regular expressions handling used 4*7c568831SAndroid Build Coastguard Worker * for XML Schemas and validation. 5*7c568831SAndroid Build Coastguard Worker * 6*7c568831SAndroid Build Coastguard Worker * Copy: See Copyright for the status of this software. 7*7c568831SAndroid Build Coastguard Worker * 8*7c568831SAndroid Build Coastguard Worker * Author: Daniel Veillard 9*7c568831SAndroid Build Coastguard Worker */ 10*7c568831SAndroid Build Coastguard Worker 11*7c568831SAndroid Build Coastguard Worker #ifndef __XML_REGEXP_H__ 12*7c568831SAndroid Build Coastguard Worker #define __XML_REGEXP_H__ 13*7c568831SAndroid Build Coastguard Worker 14*7c568831SAndroid Build Coastguard Worker #include <stdio.h> 15*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlversion.h> 16*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlstring.h> 17*7c568831SAndroid Build Coastguard Worker 18*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_REGEXP_ENABLED 19*7c568831SAndroid Build Coastguard Worker 20*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus 21*7c568831SAndroid Build Coastguard Worker extern "C" { 22*7c568831SAndroid Build Coastguard Worker #endif 23*7c568831SAndroid Build Coastguard Worker 24*7c568831SAndroid Build Coastguard Worker /** 25*7c568831SAndroid Build Coastguard Worker * xmlRegexpPtr: 26*7c568831SAndroid Build Coastguard Worker * 27*7c568831SAndroid Build Coastguard Worker * A libxml regular expression, they can actually be far more complex 28*7c568831SAndroid Build Coastguard Worker * thank the POSIX regex expressions. 29*7c568831SAndroid Build Coastguard Worker */ 30*7c568831SAndroid Build Coastguard Worker typedef struct _xmlRegexp xmlRegexp; 31*7c568831SAndroid Build Coastguard Worker typedef xmlRegexp *xmlRegexpPtr; 32*7c568831SAndroid Build Coastguard Worker 33*7c568831SAndroid Build Coastguard Worker /** 34*7c568831SAndroid Build Coastguard Worker * xmlRegExecCtxtPtr: 35*7c568831SAndroid Build Coastguard Worker * 36*7c568831SAndroid Build Coastguard Worker * A libxml progressive regular expression evaluation context 37*7c568831SAndroid Build Coastguard Worker */ 38*7c568831SAndroid Build Coastguard Worker typedef struct _xmlRegExecCtxt xmlRegExecCtxt; 39*7c568831SAndroid Build Coastguard Worker typedef xmlRegExecCtxt *xmlRegExecCtxtPtr; 40*7c568831SAndroid Build Coastguard Worker 41*7c568831SAndroid Build Coastguard Worker /* 42*7c568831SAndroid Build Coastguard Worker * The POSIX like API 43*7c568831SAndroid Build Coastguard Worker */ 44*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRegexpPtr 45*7c568831SAndroid Build Coastguard Worker xmlRegexpCompile (const xmlChar *regexp); 46*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void xmlRegFreeRegexp(xmlRegexpPtr regexp); 47*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 48*7c568831SAndroid Build Coastguard Worker xmlRegexpExec (xmlRegexpPtr comp, 49*7c568831SAndroid Build Coastguard Worker const xmlChar *value); 50*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 51*7c568831SAndroid Build Coastguard Worker xmlRegexpPrint (FILE *output, 52*7c568831SAndroid Build Coastguard Worker xmlRegexpPtr regexp); 53*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 54*7c568831SAndroid Build Coastguard Worker xmlRegexpIsDeterminist(xmlRegexpPtr comp); 55*7c568831SAndroid Build Coastguard Worker 56*7c568831SAndroid Build Coastguard Worker /** 57*7c568831SAndroid Build Coastguard Worker * xmlRegExecCallbacks: 58*7c568831SAndroid Build Coastguard Worker * @exec: the regular expression context 59*7c568831SAndroid Build Coastguard Worker * @token: the current token string 60*7c568831SAndroid Build Coastguard Worker * @transdata: transition data 61*7c568831SAndroid Build Coastguard Worker * @inputdata: input data 62*7c568831SAndroid Build Coastguard Worker * 63*7c568831SAndroid Build Coastguard Worker * Callback function when doing a transition in the automata 64*7c568831SAndroid Build Coastguard Worker */ 65*7c568831SAndroid Build Coastguard Worker typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec, 66*7c568831SAndroid Build Coastguard Worker const xmlChar *token, 67*7c568831SAndroid Build Coastguard Worker void *transdata, 68*7c568831SAndroid Build Coastguard Worker void *inputdata); 69*7c568831SAndroid Build Coastguard Worker 70*7c568831SAndroid Build Coastguard Worker /* 71*7c568831SAndroid Build Coastguard Worker * The progressive API 72*7c568831SAndroid Build Coastguard Worker */ 73*7c568831SAndroid Build Coastguard Worker XMLPUBFUN xmlRegExecCtxtPtr 74*7c568831SAndroid Build Coastguard Worker xmlRegNewExecCtxt (xmlRegexpPtr comp, 75*7c568831SAndroid Build Coastguard Worker xmlRegExecCallbacks callback, 76*7c568831SAndroid Build Coastguard Worker void *data); 77*7c568831SAndroid Build Coastguard Worker XMLPUBFUN void 78*7c568831SAndroid Build Coastguard Worker xmlRegFreeExecCtxt (xmlRegExecCtxtPtr exec); 79*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 80*7c568831SAndroid Build Coastguard Worker xmlRegExecPushString(xmlRegExecCtxtPtr exec, 81*7c568831SAndroid Build Coastguard Worker const xmlChar *value, 82*7c568831SAndroid Build Coastguard Worker void *data); 83*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 84*7c568831SAndroid Build Coastguard Worker xmlRegExecPushString2(xmlRegExecCtxtPtr exec, 85*7c568831SAndroid Build Coastguard Worker const xmlChar *value, 86*7c568831SAndroid Build Coastguard Worker const xmlChar *value2, 87*7c568831SAndroid Build Coastguard Worker void *data); 88*7c568831SAndroid Build Coastguard Worker 89*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 90*7c568831SAndroid Build Coastguard Worker xmlRegExecNextValues(xmlRegExecCtxtPtr exec, 91*7c568831SAndroid Build Coastguard Worker int *nbval, 92*7c568831SAndroid Build Coastguard Worker int *nbneg, 93*7c568831SAndroid Build Coastguard Worker xmlChar **values, 94*7c568831SAndroid Build Coastguard Worker int *terminal); 95*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 96*7c568831SAndroid Build Coastguard Worker xmlRegExecErrInfo (xmlRegExecCtxtPtr exec, 97*7c568831SAndroid Build Coastguard Worker const xmlChar **string, 98*7c568831SAndroid Build Coastguard Worker int *nbval, 99*7c568831SAndroid Build Coastguard Worker int *nbneg, 100*7c568831SAndroid Build Coastguard Worker xmlChar **values, 101*7c568831SAndroid Build Coastguard Worker int *terminal); 102*7c568831SAndroid Build Coastguard Worker 103*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus 104*7c568831SAndroid Build Coastguard Worker } 105*7c568831SAndroid Build Coastguard Worker #endif 106*7c568831SAndroid Build Coastguard Worker 107*7c568831SAndroid Build Coastguard Worker #endif /* LIBXML_REGEXP_ENABLED */ 108*7c568831SAndroid Build Coastguard Worker 109*7c568831SAndroid Build Coastguard Worker #endif /*__XML_REGEXP_H__ */ 110