Eneboo - Documentación para desarrolladores
src/libdigidoc/libxml2/include/libxml/xmlregexp.h
Ir a la documentación de este archivo.
00001 /*
00002  * Summary: regular expressions handling
00003  * Description: basic API for libxml regular expressions handling used
00004  *              for XML Schemas and validation.
00005  *
00006  * Copy: See Copyright for the status of this software.
00007  *
00008  * Author: Daniel Veillard
00009  */
00010 
00011 #ifndef __XML_REGEXP_H__
00012 #define __XML_REGEXP_H__
00013 
00014 #include <libxml/xmlversion.h>
00015 
00016 #ifdef LIBXML_REGEXP_ENABLED
00017 
00018 #ifdef __cplusplus
00019 extern "C" {
00020 #endif
00021 
00028 typedef struct _xmlRegexp xmlRegexp;
00029 typedef xmlRegexp *xmlRegexpPtr;
00030 
00036 typedef struct _xmlRegExecCtxt xmlRegExecCtxt;
00037 typedef xmlRegExecCtxt *xmlRegExecCtxtPtr;
00038 
00039 #ifdef __cplusplus
00040 }
00041 #endif
00042 #include <libxml/tree.h>
00043 #include <libxml/dict.h>
00044 #ifdef __cplusplus
00045 extern "C" {
00046 #endif
00047 
00048 /*
00049  * The POSIX like API
00050  */
00051 XMLPUBFUN xmlRegexpPtr XMLCALL
00052                     xmlRegexpCompile    (const xmlChar *regexp);
00053 XMLPUBFUN void XMLCALL                   xmlRegFreeRegexp(xmlRegexpPtr regexp);
00054 XMLPUBFUN int XMLCALL
00055                     xmlRegexpExec       (xmlRegexpPtr comp,
00056                                          const xmlChar *value);
00057 XMLPUBFUN void XMLCALL
00058                     xmlRegexpPrint      (FILE *output,
00059                                          xmlRegexpPtr regexp);
00060 XMLPUBFUN int XMLCALL
00061                     xmlRegexpIsDeterminist(xmlRegexpPtr comp);
00062 
00072 typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec,
00073                                      const xmlChar *token,
00074                                      void *transdata,
00075                                      void *inputdata);
00076 
00077 /*
00078  * The progressive API
00079  */
00080 XMLPUBFUN xmlRegExecCtxtPtr XMLCALL
00081                     xmlRegNewExecCtxt   (xmlRegexpPtr comp,
00082                                          xmlRegExecCallbacks callback,
00083                                          void *data);
00084 XMLPUBFUN void XMLCALL
00085                     xmlRegFreeExecCtxt  (xmlRegExecCtxtPtr exec);
00086 XMLPUBFUN int XMLCALL
00087                     xmlRegExecPushString(xmlRegExecCtxtPtr exec,
00088                                          const xmlChar *value,
00089                                          void *data);
00090 XMLPUBFUN int XMLCALL
00091                     xmlRegExecPushString2(xmlRegExecCtxtPtr exec,
00092                                          const xmlChar *value,
00093                                          const xmlChar *value2,
00094                                          void *data);
00095 
00096 XMLPUBFUN int XMLCALL
00097                     xmlRegExecNextValues(xmlRegExecCtxtPtr exec,
00098                                          int *nbval,
00099                                          int *nbneg,
00100                                          xmlChar **values,
00101                                          int *terminal);
00102 XMLPUBFUN int XMLCALL
00103                     xmlRegExecErrInfo   (xmlRegExecCtxtPtr exec,
00104                                          const xmlChar **string,
00105                                          int *nbval,
00106                                          int *nbneg,
00107                                          xmlChar **values,
00108                                          int *terminal);
00109 #ifdef LIBXML_EXPR_ENABLED
00110 /*
00111  * Formal regular expression handling
00112  * Its goal is to do some formal work on content models
00113  */
00114 
00115 /* expressions are used within a context */
00116 typedef struct _xmlExpCtxt xmlExpCtxt;
00117 typedef xmlExpCtxt *xmlExpCtxtPtr;
00118 
00119 XMLPUBFUN void XMLCALL
00120                         xmlExpFreeCtxt  (xmlExpCtxtPtr ctxt);
00121 XMLPUBFUN xmlExpCtxtPtr XMLCALL
00122                         xmlExpNewCtxt   (int maxNodes,
00123                                          xmlDictPtr dict);
00124 
00125 XMLPUBFUN int XMLCALL
00126                         xmlExpCtxtNbNodes(xmlExpCtxtPtr ctxt);
00127 XMLPUBFUN int XMLCALL
00128                         xmlExpCtxtNbCons(xmlExpCtxtPtr ctxt);
00129 
00130 /* Expressions are trees but the tree is opaque */
00131 typedef struct _xmlExpNode xmlExpNode;
00132 typedef xmlExpNode *xmlExpNodePtr;
00133 
00134 typedef enum {
00135     XML_EXP_EMPTY = 0,
00136     XML_EXP_FORBID = 1,
00137     XML_EXP_ATOM = 2,
00138     XML_EXP_SEQ = 3,
00139     XML_EXP_OR = 4,
00140     XML_EXP_COUNT = 5
00141 } xmlExpNodeType;
00142 
00143 /*
00144  * 2 core expressions shared by all for the empty language set
00145  * and for the set with just the empty token
00146  */
00147 XMLPUBVAR xmlExpNodePtr forbiddenExp;
00148 XMLPUBVAR xmlExpNodePtr emptyExp;
00149 
00150 /*
00151  * Expressions are reference counted internally
00152  */
00153 XMLPUBFUN void XMLCALL
00154                         xmlExpFree      (xmlExpCtxtPtr ctxt,
00155                                          xmlExpNodePtr expr);
00156 XMLPUBFUN void XMLCALL
00157                         xmlExpRef       (xmlExpNodePtr expr);
00158 
00159 /*
00160  * constructors can be either manual or from a string
00161  */
00162 XMLPUBFUN xmlExpNodePtr XMLCALL
00163                         xmlExpParse     (xmlExpCtxtPtr ctxt,
00164                                          const char *expr);
00165 XMLPUBFUN xmlExpNodePtr XMLCALL
00166                         xmlExpNewAtom   (xmlExpCtxtPtr ctxt,
00167                                          const xmlChar *name,
00168                                          int len);
00169 XMLPUBFUN xmlExpNodePtr XMLCALL
00170                         xmlExpNewOr     (xmlExpCtxtPtr ctxt,
00171                                          xmlExpNodePtr left,
00172                                          xmlExpNodePtr right);
00173 XMLPUBFUN xmlExpNodePtr XMLCALL
00174                         xmlExpNewSeq    (xmlExpCtxtPtr ctxt,
00175                                          xmlExpNodePtr left,
00176                                          xmlExpNodePtr right);
00177 XMLPUBFUN xmlExpNodePtr XMLCALL
00178                         xmlExpNewRange  (xmlExpCtxtPtr ctxt,
00179                                          xmlExpNodePtr subset,
00180                                          int min,
00181                                          int max);
00182 /*
00183  * The really interesting APIs
00184  */
00185 XMLPUBFUN int XMLCALL
00186                         xmlExpIsNillable(xmlExpNodePtr expr);
00187 XMLPUBFUN int XMLCALL
00188                         xmlExpMaxToken  (xmlExpNodePtr expr);
00189 XMLPUBFUN int XMLCALL
00190                         xmlExpGetLanguage(xmlExpCtxtPtr ctxt,
00191                                          xmlExpNodePtr expr,
00192                                          const xmlChar**langList,
00193                                          int len);
00194 XMLPUBFUN int XMLCALL
00195                         xmlExpGetStart  (xmlExpCtxtPtr ctxt,
00196                                          xmlExpNodePtr expr,
00197                                          const xmlChar**tokList,
00198                                          int len);
00199 XMLPUBFUN xmlExpNodePtr XMLCALL
00200                         xmlExpStringDerive(xmlExpCtxtPtr ctxt,
00201                                          xmlExpNodePtr expr,
00202                                          const xmlChar *str,
00203                                          int len);
00204 XMLPUBFUN xmlExpNodePtr XMLCALL
00205                         xmlExpExpDerive (xmlExpCtxtPtr ctxt,
00206                                          xmlExpNodePtr expr,
00207                                          xmlExpNodePtr sub);
00208 XMLPUBFUN int XMLCALL
00209                         xmlExpSubsume   (xmlExpCtxtPtr ctxt,
00210                                          xmlExpNodePtr expr,
00211                                          xmlExpNodePtr sub);
00212 XMLPUBFUN void XMLCALL
00213                         xmlExpDump      (xmlBufferPtr buf,
00214                                          xmlExpNodePtr expr);
00215 #endif /* LIBXML_EXPR_ENABLED */
00216 #ifdef __cplusplus
00217 }
00218 #endif
00219 
00220 #endif /* LIBXML_REGEXP_ENABLED */
00221 
00222 #endif /*__XML_REGEXP_H__ */
 Todo Clases Namespaces Archivos Funciones Variables 'typedefs' Enumeraciones Valores de enumeraciones Propiedades Amigas 'defines'