Path: blob/master/venv/Lib/site-packages/lxml/includes/libxml/xmlregexp.h
811 views
/*1* Summary: regular expressions handling2* Description: basic API for libxml regular expressions handling used3* for XML Schemas and validation.4*5* Copy: See Copyright for the status of this software.6*7* Author: Daniel Veillard8*/910#ifndef __XML_REGEXP_H__11#define __XML_REGEXP_H__1213#include <libxml/xmlversion.h>1415#ifdef LIBXML_REGEXP_ENABLED1617#ifdef __cplusplus18extern "C" {19#endif2021/**22* xmlRegexpPtr:23*24* A libxml regular expression, they can actually be far more complex25* thank the POSIX regex expressions.26*/27typedef struct _xmlRegexp xmlRegexp;28typedef xmlRegexp *xmlRegexpPtr;2930/**31* xmlRegExecCtxtPtr:32*33* A libxml progressive regular expression evaluation context34*/35typedef struct _xmlRegExecCtxt xmlRegExecCtxt;36typedef xmlRegExecCtxt *xmlRegExecCtxtPtr;3738#ifdef __cplusplus39}40#endif41#include <libxml/tree.h>42#include <libxml/dict.h>43#ifdef __cplusplus44extern "C" {45#endif4647/*48* The POSIX like API49*/50XMLPUBFUN xmlRegexpPtr XMLCALL51xmlRegexpCompile (const xmlChar *regexp);52XMLPUBFUN void XMLCALL xmlRegFreeRegexp(xmlRegexpPtr regexp);53XMLPUBFUN int XMLCALL54xmlRegexpExec (xmlRegexpPtr comp,55const xmlChar *value);56XMLPUBFUN void XMLCALL57xmlRegexpPrint (FILE *output,58xmlRegexpPtr regexp);59XMLPUBFUN int XMLCALL60xmlRegexpIsDeterminist(xmlRegexpPtr comp);6162/**63* xmlRegExecCallbacks:64* @exec: the regular expression context65* @token: the current token string66* @transdata: transition data67* @inputdata: input data68*69* Callback function when doing a transition in the automata70*/71typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec,72const xmlChar *token,73void *transdata,74void *inputdata);7576/*77* The progressive API78*/79XMLPUBFUN xmlRegExecCtxtPtr XMLCALL80xmlRegNewExecCtxt (xmlRegexpPtr comp,81xmlRegExecCallbacks callback,82void *data);83XMLPUBFUN void XMLCALL84xmlRegFreeExecCtxt (xmlRegExecCtxtPtr exec);85XMLPUBFUN int XMLCALL86xmlRegExecPushString(xmlRegExecCtxtPtr exec,87const xmlChar *value,88void *data);89XMLPUBFUN int XMLCALL90xmlRegExecPushString2(xmlRegExecCtxtPtr exec,91const xmlChar *value,92const xmlChar *value2,93void *data);9495XMLPUBFUN int XMLCALL96xmlRegExecNextValues(xmlRegExecCtxtPtr exec,97int *nbval,98int *nbneg,99xmlChar **values,100int *terminal);101XMLPUBFUN int XMLCALL102xmlRegExecErrInfo (xmlRegExecCtxtPtr exec,103const xmlChar **string,104int *nbval,105int *nbneg,106xmlChar **values,107int *terminal);108#ifdef LIBXML_EXPR_ENABLED109/*110* Formal regular expression handling111* Its goal is to do some formal work on content models112*/113114/* expressions are used within a context */115typedef struct _xmlExpCtxt xmlExpCtxt;116typedef xmlExpCtxt *xmlExpCtxtPtr;117118XMLPUBFUN void XMLCALL119xmlExpFreeCtxt (xmlExpCtxtPtr ctxt);120XMLPUBFUN xmlExpCtxtPtr XMLCALL121xmlExpNewCtxt (int maxNodes,122xmlDictPtr dict);123124XMLPUBFUN int XMLCALL125xmlExpCtxtNbNodes(xmlExpCtxtPtr ctxt);126XMLPUBFUN int XMLCALL127xmlExpCtxtNbCons(xmlExpCtxtPtr ctxt);128129/* Expressions are trees but the tree is opaque */130typedef struct _xmlExpNode xmlExpNode;131typedef xmlExpNode *xmlExpNodePtr;132133typedef enum {134XML_EXP_EMPTY = 0,135XML_EXP_FORBID = 1,136XML_EXP_ATOM = 2,137XML_EXP_SEQ = 3,138XML_EXP_OR = 4,139XML_EXP_COUNT = 5140} xmlExpNodeType;141142/*143* 2 core expressions shared by all for the empty language set144* and for the set with just the empty token145*/146XMLPUBVAR xmlExpNodePtr forbiddenExp;147XMLPUBVAR xmlExpNodePtr emptyExp;148149/*150* Expressions are reference counted internally151*/152XMLPUBFUN void XMLCALL153xmlExpFree (xmlExpCtxtPtr ctxt,154xmlExpNodePtr expr);155XMLPUBFUN void XMLCALL156xmlExpRef (xmlExpNodePtr expr);157158/*159* constructors can be either manual or from a string160*/161XMLPUBFUN xmlExpNodePtr XMLCALL162xmlExpParse (xmlExpCtxtPtr ctxt,163const char *expr);164XMLPUBFUN xmlExpNodePtr XMLCALL165xmlExpNewAtom (xmlExpCtxtPtr ctxt,166const xmlChar *name,167int len);168XMLPUBFUN xmlExpNodePtr XMLCALL169xmlExpNewOr (xmlExpCtxtPtr ctxt,170xmlExpNodePtr left,171xmlExpNodePtr right);172XMLPUBFUN xmlExpNodePtr XMLCALL173xmlExpNewSeq (xmlExpCtxtPtr ctxt,174xmlExpNodePtr left,175xmlExpNodePtr right);176XMLPUBFUN xmlExpNodePtr XMLCALL177xmlExpNewRange (xmlExpCtxtPtr ctxt,178xmlExpNodePtr subset,179int min,180int max);181/*182* The really interesting APIs183*/184XMLPUBFUN int XMLCALL185xmlExpIsNillable(xmlExpNodePtr expr);186XMLPUBFUN int XMLCALL187xmlExpMaxToken (xmlExpNodePtr expr);188XMLPUBFUN int XMLCALL189xmlExpGetLanguage(xmlExpCtxtPtr ctxt,190xmlExpNodePtr expr,191const xmlChar**langList,192int len);193XMLPUBFUN int XMLCALL194xmlExpGetStart (xmlExpCtxtPtr ctxt,195xmlExpNodePtr expr,196const xmlChar**tokList,197int len);198XMLPUBFUN xmlExpNodePtr XMLCALL199xmlExpStringDerive(xmlExpCtxtPtr ctxt,200xmlExpNodePtr expr,201const xmlChar *str,202int len);203XMLPUBFUN xmlExpNodePtr XMLCALL204xmlExpExpDerive (xmlExpCtxtPtr ctxt,205xmlExpNodePtr expr,206xmlExpNodePtr sub);207XMLPUBFUN int XMLCALL208xmlExpSubsume (xmlExpCtxtPtr ctxt,209xmlExpNodePtr expr,210xmlExpNodePtr sub);211XMLPUBFUN void XMLCALL212xmlExpDump (xmlBufferPtr buf,213xmlExpNodePtr expr);214#endif /* LIBXML_EXPR_ENABLED */215#ifdef __cplusplus216}217#endif218219#endif /* LIBXML_REGEXP_ENABLED */220221#endif /*__XML_REGEXP_H__ */222223224