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