blob: 9b85f9c2ef9c5b01856402a937e7f01475fed742 [file] [log] [blame]
Daniel Veillardb3de70c2003-12-02 22:32:15 +00001/*
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
Daniel Veillarda2351322004-06-27 12:08:10 +000018#ifdef LIBXML_PATTERN_ENABLED
19
Daniel Veillardb3de70c2003-12-02 22:32:15 +000020#ifdef __cplusplus
21extern "C" {
22#endif
23
24/**
25 * xmlPattern:
26 *
27 * A compiled (XPath based) pattern to select nodes
28 */
29typedef struct _xmlPattern xmlPattern;
30typedef xmlPattern *xmlPatternPtr;
31
32XMLPUBFUN void XMLCALL
33 xmlFreePattern (xmlPatternPtr comp);
34
35XMLPUBFUN void XMLCALL
36 xmlFreePatternList (xmlPatternPtr comp);
37
38XMLPUBFUN xmlPatternPtr XMLCALL
39 xmlPatterncompile (const xmlChar *pattern,
Daniel Veillard1e906612003-12-05 14:57:46 +000040 xmlDict *dict,
Daniel Veillardffa7b7e2003-12-05 16:10:21 +000041 int flags,
42 const xmlChar **namespaces);
Daniel Veillardb3de70c2003-12-02 22:32:15 +000043XMLPUBFUN int XMLCALL
44 xmlPatternMatch (xmlPatternPtr comp,
45 xmlNodePtr node);
46
Daniel Veillard2fc6df92005-01-30 18:42:55 +000047/* streaming interfaces */
48typedef struct _xmlStreamCtxt xmlStreamCtxt;
49typedef xmlStreamCtxt *xmlStreamCtxtPtr;
50
51XMLPUBFUN xmlStreamCtxtPtr XMLCALL
52 xmlPatternGetStreamCtxt (xmlPatternPtr comp);
53XMLPUBFUN void XMLCALL
54 xmlFreeStreamCtxt (xmlStreamCtxtPtr stream);
55XMLPUBFUN int XMLCALL
56 xmlStreamPush (xmlStreamCtxtPtr stream,
57 const xmlChar *name,
58 const xmlChar *ns);
59XMLPUBFUN int XMLCALL
60 xmlStreamPop (xmlStreamCtxtPtr stream);
Daniel Veillardb3de70c2003-12-02 22:32:15 +000061#ifdef __cplusplus
62}
63#endif
Daniel Veillarda2351322004-06-27 12:08:10 +000064
65#endif /* LIBXML_PATTERN_ENABLED */
66
Daniel Veillardb3de70c2003-12-02 22:32:15 +000067#endif /* __XML_PATTERN_H__ */