/** * @file * * @brief Regular expressions * * A regular expression engine used for DTD and XML Schema * validation. * * @copyright See Copyright for the status of this software. * * @author Daniel Veillard */ #ifndef __XML_REGEXP_H__ #define __XML_REGEXP_H__ #include #include #include #ifdef LIBXML_REGEXP_ENABLED #ifdef __cplusplus extern "C" { #endif /** * A libxml regular expression */ typedef struct _xmlRegexp xmlRegexp; typedef xmlRegexp *xmlRegexpPtr; /** * A libxml progressive regular expression evaluation context */ typedef struct _xmlRegExecCtxt xmlRegExecCtxt; typedef xmlRegExecCtxt *xmlRegExecCtxtPtr; /* * The POSIX like API */ XMLPUBFUN xmlRegexp * xmlRegexpCompile (const xmlChar *regexp); XMLPUBFUN void xmlRegFreeRegexp(xmlRegexp *regexp); XMLPUBFUN int xmlRegexpExec (xmlRegexp *comp, const xmlChar *value); XML_DEPRECATED XMLPUBFUN void xmlRegexpPrint (FILE *output, xmlRegexp *regexp); XMLPUBFUN int xmlRegexpIsDeterminist(xmlRegexp *comp); /** * Callback function when doing a transition in the automata * * @param exec the regular expression context * @param token the current token string * @param transdata transition data * @param inputdata input data */ typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxt *exec, const xmlChar *token, void *transdata, void *inputdata); /* * The progressive API */ XML_DEPRECATED XMLPUBFUN xmlRegExecCtxt * xmlRegNewExecCtxt (xmlRegexp *comp, xmlRegExecCallbacks callback, void *data); XML_DEPRECATED XMLPUBFUN void xmlRegFreeExecCtxt (xmlRegExecCtxt *exec); XML_DEPRECATED XMLPUBFUN int xmlRegExecPushString(xmlRegExecCtxt *exec, const xmlChar *value, void *data); XML_DEPRECATED XMLPUBFUN int xmlRegExecPushString2(xmlRegExecCtxt *exec, const xmlChar *value, const xmlChar *value2, void *data); XML_DEPRECATED XMLPUBFUN int xmlRegExecNextValues(xmlRegExecCtxt *exec, int *nbval, int *nbneg, xmlChar **values, int *terminal); XML_DEPRECATED XMLPUBFUN int xmlRegExecErrInfo (xmlRegExecCtxt *exec, const xmlChar **string, int *nbval, int *nbneg, xmlChar **values, int *terminal); #ifdef __cplusplus } #endif #endif /* LIBXML_REGEXP_ENABLED */ #endif /*__XML_REGEXP_H__ */