1 | /* |
2 | * Summary: API to handle XML Pointers |
3 | * Description: API to handle XML Pointers |
4 | * Base implementation was made accordingly to |
5 | * W3C Candidate Recommendation 7 June 2000 |
6 | * http://www.w3.org/TR/2000/CR-xptr-20000607 |
7 | * |
8 | * Added support for the element() scheme described in: |
9 | * W3C Proposed Recommendation 13 November 2002 |
10 | * http://www.w3.org/TR/2002/PR-xptr-element-20021113/ |
11 | * |
12 | * Copy: See Copyright for the status of this software. |
13 | * |
14 | * Author: Daniel Veillard |
15 | */ |
16 | |
17 | #ifndef __XML_XPTR_H__ |
18 | #define __XML_XPTR_H__ |
19 | |
20 | #include <libxml/xmlversion.h> |
21 | |
22 | #ifdef LIBXML_XPTR_ENABLED |
23 | |
24 | #include <libxml/tree.h> |
25 | #include <libxml/xpath.h> |
26 | |
27 | #ifdef __cplusplus |
28 | extern "C" { |
29 | #endif |
30 | |
31 | /* |
32 | * A Location Set |
33 | */ |
34 | typedef struct _xmlLocationSet xmlLocationSet; |
35 | typedef xmlLocationSet *xmlLocationSetPtr; |
36 | struct _xmlLocationSet { |
37 | int locNr; /* number of locations in the set */ |
38 | int locMax; /* size of the array as allocated */ |
39 | xmlXPathObjectPtr *locTab;/* array of locations */ |
40 | }; |
41 | |
42 | /* |
43 | * Handling of location sets. |
44 | */ |
45 | |
46 | XMLPUBFUN xmlLocationSetPtr XMLCALL |
47 | xmlXPtrLocationSetCreate (xmlXPathObjectPtr val); |
48 | XMLPUBFUN void XMLCALL |
49 | xmlXPtrFreeLocationSet (xmlLocationSetPtr obj); |
50 | XMLPUBFUN xmlLocationSetPtr XMLCALL |
51 | xmlXPtrLocationSetMerge (xmlLocationSetPtr val1, |
52 | xmlLocationSetPtr val2); |
53 | XMLPUBFUN xmlXPathObjectPtr XMLCALL |
54 | xmlXPtrNewRange (xmlNodePtr start, |
55 | int startindex, |
56 | xmlNodePtr end, |
57 | int endindex); |
58 | XMLPUBFUN xmlXPathObjectPtr XMLCALL |
59 | xmlXPtrNewRangePoints (xmlXPathObjectPtr start, |
60 | xmlXPathObjectPtr end); |
61 | XMLPUBFUN xmlXPathObjectPtr XMLCALL |
62 | xmlXPtrNewRangeNodePoint (xmlNodePtr start, |
63 | xmlXPathObjectPtr end); |
64 | XMLPUBFUN xmlXPathObjectPtr XMLCALL |
65 | xmlXPtrNewRangePointNode (xmlXPathObjectPtr start, |
66 | xmlNodePtr end); |
67 | XMLPUBFUN xmlXPathObjectPtr XMLCALL |
68 | xmlXPtrNewRangeNodes (xmlNodePtr start, |
69 | xmlNodePtr end); |
70 | XMLPUBFUN xmlXPathObjectPtr XMLCALL |
71 | xmlXPtrNewLocationSetNodes (xmlNodePtr start, |
72 | xmlNodePtr end); |
73 | XMLPUBFUN xmlXPathObjectPtr XMLCALL |
74 | xmlXPtrNewLocationSetNodeSet(xmlNodeSetPtr set); |
75 | XMLPUBFUN xmlXPathObjectPtr XMLCALL |
76 | xmlXPtrNewRangeNodeObject (xmlNodePtr start, |
77 | xmlXPathObjectPtr end); |
78 | XMLPUBFUN xmlXPathObjectPtr XMLCALL |
79 | xmlXPtrNewCollapsedRange (xmlNodePtr start); |
80 | XMLPUBFUN void XMLCALL |
81 | xmlXPtrLocationSetAdd (xmlLocationSetPtr cur, |
82 | xmlXPathObjectPtr val); |
83 | XMLPUBFUN xmlXPathObjectPtr XMLCALL |
84 | xmlXPtrWrapLocationSet (xmlLocationSetPtr val); |
85 | XMLPUBFUN void XMLCALL |
86 | xmlXPtrLocationSetDel (xmlLocationSetPtr cur, |
87 | xmlXPathObjectPtr val); |
88 | XMLPUBFUN void XMLCALL |
89 | xmlXPtrLocationSetRemove (xmlLocationSetPtr cur, |
90 | int val); |
91 | |
92 | /* |
93 | * Functions. |
94 | */ |
95 | XMLPUBFUN xmlXPathContextPtr XMLCALL |
96 | xmlXPtrNewContext (xmlDocPtr doc, |
97 | xmlNodePtr here, |
98 | xmlNodePtr origin); |
99 | XMLPUBFUN xmlXPathObjectPtr XMLCALL |
100 | xmlXPtrEval (const xmlChar *str, |
101 | xmlXPathContextPtr ctx); |
102 | XMLPUBFUN void XMLCALL |
103 | xmlXPtrRangeToFunction (xmlXPathParserContextPtr ctxt, |
104 | int nargs); |
105 | XMLPUBFUN xmlNodePtr XMLCALL |
106 | xmlXPtrBuildNodeList (xmlXPathObjectPtr obj); |
107 | XMLPUBFUN void XMLCALL |
108 | xmlXPtrEvalRangePredicate (xmlXPathParserContextPtr ctxt); |
109 | #ifdef __cplusplus |
110 | } |
111 | #endif |
112 | |
113 | #endif /* LIBXML_XPTR_ENABLED */ |
114 | #endif /* __XML_XPTR_H__ */ |
115 | |