Return to xmlregexp.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / include / libxml |
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__ */