xref: /aosp_15_r20/external/libxml2/include/libxml/pattern.h (revision 7c5688314b92172186c154356a6374bf7684c3ca)
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
47 			xmlFreePattern		(xmlPatternPtr comp);
48 
49 XMLPUBFUN void
50 			xmlFreePatternList	(xmlPatternPtr comp);
51 
52 XMLPUBFUN xmlPatternPtr
53 			xmlPatterncompile	(const xmlChar *pattern,
54 						 xmlDict *dict,
55 						 int flags,
56 						 const xmlChar **namespaces);
57 XMLPUBFUN int
58 			xmlPatternCompileSafe	(const xmlChar *pattern,
59 						 xmlDict *dict,
60 						 int flags,
61 						 const xmlChar **namespaces,
62 						 xmlPatternPtr *patternOut);
63 XMLPUBFUN int
64 			xmlPatternMatch		(xmlPatternPtr comp,
65 						 xmlNodePtr node);
66 
67 /* streaming interfaces */
68 typedef struct _xmlStreamCtxt xmlStreamCtxt;
69 typedef xmlStreamCtxt *xmlStreamCtxtPtr;
70 
71 XMLPUBFUN int
72 			xmlPatternStreamable	(xmlPatternPtr comp);
73 XMLPUBFUN int
74 			xmlPatternMaxDepth	(xmlPatternPtr comp);
75 XMLPUBFUN int
76 			xmlPatternMinDepth	(xmlPatternPtr comp);
77 XMLPUBFUN int
78 			xmlPatternFromRoot	(xmlPatternPtr comp);
79 XMLPUBFUN xmlStreamCtxtPtr
80 			xmlPatternGetStreamCtxt	(xmlPatternPtr comp);
81 XMLPUBFUN void
82 			xmlFreeStreamCtxt	(xmlStreamCtxtPtr stream);
83 XMLPUBFUN int
84 			xmlStreamPushNode	(xmlStreamCtxtPtr stream,
85 						 const xmlChar *name,
86 						 const xmlChar *ns,
87 						 int nodeType);
88 XMLPUBFUN int
89 			xmlStreamPush		(xmlStreamCtxtPtr stream,
90 						 const xmlChar *name,
91 						 const xmlChar *ns);
92 XMLPUBFUN int
93 			xmlStreamPushAttr	(xmlStreamCtxtPtr stream,
94 						 const xmlChar *name,
95 						 const xmlChar *ns);
96 XMLPUBFUN int
97 			xmlStreamPop		(xmlStreamCtxtPtr stream);
98 XMLPUBFUN int
99 			xmlStreamWantsAnyNode	(xmlStreamCtxtPtr stream);
100 #ifdef __cplusplus
101 }
102 #endif
103 
104 #endif /* LIBXML_PATTERN_ENABLED */
105 
106 #endif /* __XML_PATTERN_H__ */
107