1      * Summary: pattern expression handling
2      * Description: allows to compile and test pattern expressions for nodes
3      *              either in a tree or based on a parser state.
4      *
5      * Copy: See Copyright for the status of this software.
6      *
7      * Author: Patrick Monnerat <pm@datasphere.ch>, DATASPHERE S.A.
8
9      /if not defined(XML_PATTERN_H__)
10      /define XML_PATTERN_H__
11
12      /include "libxmlrpg/xmlversion"
13      /include "libxmlrpg/tree"
14      /include "libxmlrpg/dict"
15
16      /if defined(LIBXML_PATTERN_ENABLED)
17
18      * xmlPattern:
19      *
20      * A compiled (XPath based) pattern to select nodes
21
22     d xmlPatternPtr...
23     d                 s               *   based(######typedef######)
24
25      * xmlPatternFlags:
26      *
27      * This is the set of options affecting the behaviour of pattern
28      * matching with this module
29
30     d xmlPatternFlags...
31     d                 s             10i 0 based(######typedef######)           enum
32     d  XML_PATTERN_DEFAULT...                                                  Simple pattern match
33     d                 c                   X'0000'
34     d  XML_PATTERN_XPATH...                                                    Std XPath pattern
35     d                 c                   X'0001'
36     d  XML_PATTERN_XSSEL...                                                    Schm sel XPth subset
37     d                 c                   X'0002'
38     d  XML_PATTERN_XSFIELD...                                                  Schm fld XPth subset
39     d                 c                   X'0004'
40
41     d xmlFreePattern  pr                  extproc('xmlFreePattern')
42     d  comp                               value like(xmlPatternPtr)
43
44     d xmlFreePatternList...
45     d                 pr                  extproc('xmlFreePatternList')
46     d  comp                               value like(xmlPatternPtr)
47
48     d xmlPatterncompile...
49     d                 pr                  extproc('xmlPatterncompile')
50     d                                     like(xmlPatternPtr)
51     d  pattern                        *   value options(*string)               const xmlChar *
52     d  dict                           *   value                                xmlDict *
53     d  flags                        10i 0 value
54     d  namespaces                     *                                        const xmlChar *(*)
55
56     d xmlPatternMatch...
57     d                 pr            10i 0 extproc('xmlPatternMatch')
58     d  comp                               value like(xmlPatternPtr)
59     d  node                               value like(xmlNodePtr)
60
61      * streaming interfaces
62
63     d xmlStreamCtxtPtr...
64     d                 s               *   based(######typedef######)
65
66     d xmlPatternStreamable...
67     d                 pr            10i 0 extproc('xmlPatternStreamable')
68     d  comp                               value like(xmlPatternPtr)
69
70     d xmlPatternMaxDepth...
71     d                 pr            10i 0 extproc('xmlPatternMaxDepth')
72     d  comp                               value like(xmlPatternPtr)
73
74     d xmlPatternMinDepth...
75     d                 pr            10i 0 extproc('xmlPatternMinDepth')
76     d  comp                               value like(xmlPatternPtr)
77
78     d xmlPatternFromRoot...
79     d                 pr            10i 0 extproc('xmlPatternFromRoot')
80     d  comp                               value like(xmlPatternPtr)
81
82     d xmlPatternGetStreamCtxt...
83     d                 pr                  extproc('xmlPatternGetStreamCtxt')
84     d                                     like(xmlStreamCtxtPtr)
85     d  comp                               value like(xmlPatternPtr)
86
87     d xmlFreeStreamCtxt...
88     d                 pr                  extproc('xmlFreeStreamCtxt')
89     d  stream                             value like(xmlStreamCtxtPtr)
90
91     d xmlStreamPushNode...
92     d                 pr            10i 0 extproc('xmlStreamPushNode')
93     d  stream                             value like(xmlStreamCtxtPtr)
94     d  name                           *   value options(*string)               const xmlChar *
95     d  ns                             *   value options(*string)               const xmlChar *
96     d  nodeType                     10i 0 value
97
98     d xmlStreamPush   pr            10i 0 extproc('xmlStreamPush')
99     d  stream                             value like(xmlStreamCtxtPtr)
100     d  name                           *   value options(*string)               const xmlChar *
101     d  ns                             *   value options(*string)               const xmlChar *
102
103     d xmlStreamPushAttr...
104     d                 pr            10i 0 extproc('xmlStreamPushAttr')
105     d  stream                             value like(xmlStreamCtxtPtr)
106     d  name                           *   value options(*string)               const xmlChar *
107     d  ns                             *   value options(*string)               const xmlChar *
108
109     d xmlStreamPop    pr            10i 0 extproc('xmlStreamPop')
110     d  stream                             value like(xmlStreamCtxtPtr)
111
112     d xmlStreamWantsAnyNode...
113     d                 pr            10i 0 extproc('xmlStreamWantsAnyNode')
114     d  stream                             value like(xmlStreamCtxtPtr)
115
116      /endif                                                                    LIBXML_PATTERN_ENBLD
117      /endif                                                                    XML_PATTERN_H__
118