1 /*
   2  * Summary: pattern expression handling
   3  * Description: allows to compile and test pattern expressions for nodes
   4  *              either in a tree or based on a parser state.
   5  *
   6  * Copy: See Copyright for the status of this software.
   7  *
   8  * Author: Daniel Veillard
   9  */
  10 
  11 #ifndef __XML_PATTERN_H__
  12 #define __XML_PATTERN_H__
  13 
  14 #include <libxml/xmlversion.h>
  15 #include <libxml/tree.h>
  16 #include <libxml/dict.h>
  17 
  18 #ifdef LIBXML_PATTERN_ENABLED
  19 
  20 #ifdef __cplusplus
  21 extern "C" {
  22 #endif
  23 
  24 /**
  25  * xmlPattern:
  26  *
  27  * A compiled (XPath based) pattern to select nodes
  28  */
  29 typedef struct _xmlPattern xmlPattern;
  30 typedef xmlPattern *xmlPatternPtr;
  31 
  32 /**
  33  * xmlPatternFlags:
  34  *
  35  * This is the set of options affecting the behaviour of pattern
  36  * matching with this module
  37  *
  38  */
  39 typedef enum {
  40     XML_PATTERN_DEFAULT     = 0,    /* simple pattern match */
  41     XML_PATTERN_XPATH       = 1<<0, /* standard XPath pattern */
  42     XML_PATTERN_XSSEL       = 1<<1, /* XPath subset for schema selector */
  43     XML_PATTERN_XSFIELD     = 1<<2  /* XPath subset for schema field */
  44 } xmlPatternFlags;
  45 
  46 XMLPUBFUN void XMLCALL
  47             xmlFreePattern      (xmlPatternPtr comp);
  48 
  49 XMLPUBFUN void XMLCALL
  50             xmlFreePatternList  (xmlPatternPtr comp);
  51 
  52 XMLPUBFUN xmlPatternPtr XMLCALL
  53             xmlPatterncompile   (const xmlChar *pattern,
  54                          xmlDict *dict,
  55                          int flags,
  56                          const xmlChar **namespaces);
  57 XMLPUBFUN int XMLCALL
  58             xmlPatternMatch     (xmlPatternPtr comp,
  59                          xmlNodePtr node);
  60 
  61 /* streaming interfaces */
  62 typedef struct _xmlStreamCtxt xmlStreamCtxt;
  63 typedef xmlStreamCtxt *xmlStreamCtxtPtr;
  64 
  65 XMLPUBFUN int XMLCALL
  66             xmlPatternStreamable    (xmlPatternPtr comp);
  67 XMLPUBFUN int XMLCALL
  68             xmlPatternMaxDepth  (xmlPatternPtr comp);
  69 XMLPUBFUN int XMLCALL
  70             xmlPatternMinDepth  (xmlPatternPtr comp);
  71 XMLPUBFUN int XMLCALL
  72             xmlPatternFromRoot  (xmlPatternPtr comp);
  73 XMLPUBFUN xmlStreamCtxtPtr XMLCALL
  74             xmlPatternGetStreamCtxt (xmlPatternPtr comp);
  75 XMLPUBFUN void XMLCALL
  76             xmlFreeStreamCtxt   (xmlStreamCtxtPtr stream);
  77 XMLPUBFUN int XMLCALL
  78             xmlStreamPushNode   (xmlStreamCtxtPtr stream,
  79                          const xmlChar *name,
  80                          const xmlChar *ns,
  81                          int nodeType);
  82 XMLPUBFUN int XMLCALL
  83             xmlStreamPush       (xmlStreamCtxtPtr stream,
  84                          const xmlChar *name,
  85                          const xmlChar *ns);
  86 XMLPUBFUN int XMLCALL
  87             xmlStreamPushAttr   (xmlStreamCtxtPtr stream,
  88                          const xmlChar *name,
  89                          const xmlChar *ns);
  90 XMLPUBFUN int XMLCALL
  91             xmlStreamPop        (xmlStreamCtxtPtr stream);
  92 XMLPUBFUN int XMLCALL
  93             xmlStreamWantsAnyNode   (xmlStreamCtxtPtr stream);
  94 #ifdef __cplusplus
  95 }
  96 #endif
  97 
  98 #endif /* LIBXML_PATTERN_ENABLED */
  99 
 100 #endif /* __XML_PATTERN_H__ */