blob: 45efd791a995d68edf6d9e62b2be81b3285309fa [file] [log] [blame]
Owen Taylor3473f882001-02-23 17:55:21 +00001/*
2 * xpointer.h : API to handle XML Pointers
3 *
4 * World Wide Web Consortium Working Draft 03-March-1998
5 * http://www.w3.org/TR/1998/WD-xptr-19980303
6 *
7 * See Copyright for the status of this software.
8 *
9 * Daniel.Veillard@w3.org
10 */
11
12#ifndef __XML_XPTR_H__
13#define __XML_XPTR_H__
14
15#include <libxml/tree.h>
16#include <libxml/xpath.h>
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22/*
23 * A Location Set
24 */
25typedef struct _xmlLocationSet xmlLocationSet;
26typedef xmlLocationSet *xmlLocationSetPtr;
27struct _xmlLocationSet {
28 int locNr; /* number of locations in the set */
29 int locMax; /* size of the array as allocated */
30 xmlXPathObjectPtr *locTab;/* array of locations */
31};
32
33/*
34 * Handling of location sets
35 */
36
Daniel Veillard9e7160d2001-03-18 23:17:47 +000037xmlLocationSetPtr xmlXPtrLocationSetCreate(xmlXPathObjectPtr val);
Owen Taylor3473f882001-02-23 17:55:21 +000038void xmlXPtrFreeLocationSet (xmlLocationSetPtr obj);
39xmlLocationSetPtr xmlXPtrLocationSetMerge (xmlLocationSetPtr val1,
40 xmlLocationSetPtr val2);
Daniel Veillard56a4cb82001-03-24 17:00:36 +000041xmlXPathObjectPtr xmlXPtrNewRange (xmlNodePtr start,
42 int startindex,
43 xmlNodePtr end,
44 int endindex);
45xmlXPathObjectPtr xmlXPtrNewRangePoints (xmlXPathObjectPtr start,
46 xmlXPathObjectPtr end);
47xmlXPathObjectPtr xmlXPtrNewRangeNodePoint(xmlNodePtr start,
48 xmlXPathObjectPtr end);
49xmlXPathObjectPtr xmlXPtrNewRangePointNode(xmlXPathObjectPtr start,
50 xmlNodePtr end);
51xmlXPathObjectPtr xmlXPtrNewRangeNodes (xmlNodePtr start,
52 xmlNodePtr end);
53xmlXPathObjectPtr xmlXPtrNewLocationSetNodes(xmlNodePtr start,
54 xmlNodePtr end);
55xmlXPathObjectPtr xmlXPtrNewLocationSetNodeSet(xmlNodeSetPtr set);
Daniel Veillard9e7160d2001-03-18 23:17:47 +000056xmlXPathObjectPtr xmlXPtrNewRangeNodeObject(xmlNodePtr start,
57 xmlXPathObjectPtr end);
Daniel Veillard56a4cb82001-03-24 17:00:36 +000058xmlXPathObjectPtr xmlXPtrNewCollapsedRange(xmlNodePtr start);
Daniel Veillard9e7160d2001-03-18 23:17:47 +000059void xmlXPtrLocationSetAdd (xmlLocationSetPtr cur,
60 xmlXPathObjectPtr val);
61xmlXPathObjectPtr xmlXPtrWrapLocationSet (xmlLocationSetPtr val);
Daniel Veillard56a4cb82001-03-24 17:00:36 +000062void xmlXPtrLocationSetDel (xmlLocationSetPtr cur,
63 xmlXPathObjectPtr val);
64void xmlXPtrLocationSetRemove(xmlLocationSetPtr cur,
65 int val);
Owen Taylor3473f882001-02-23 17:55:21 +000066
67/*
68 * Functions
69 */
70xmlXPathContextPtr xmlXPtrNewContext (xmlDocPtr doc,
71 xmlNodePtr here,
72 xmlNodePtr origin);
73xmlXPathObjectPtr xmlXPtrEval (const xmlChar *str,
74 xmlXPathContextPtr ctx);
75void xmlXPtrRangeToFunction (xmlXPathParserContextPtr ctxt,
76 int nargs);
77xmlNodePtr xmlXPtrBuildNodeList (xmlXPathObjectPtr obj);
78void xmlXPtrEvalRangePredicate (xmlXPathParserContextPtr ctxt);
79
80#ifdef __cplusplus
81}
82#endif
83#endif /* __XML_XPTR_H__ */