Annotation of embedaddon/libxml2/include/libxml/xmlregexp.h, revision 1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>