Git init
[external/libxml2.git] / include / libxml / pattern.h
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__ */