blob: dde1dfb3d16889caf88df9ce87a74e30ab1ecd56 [file] [log] [blame]
Owen Taylor3473f882001-02-23 17:55:21 +00001/*
Daniel Veillardbe586972003-11-18 20:56:51 +00002 * 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
Owen Taylor3473f882001-02-23 17:55:21 +00007 *
Daniel Veillardbe586972003-11-18 20:56:51 +00008 * 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/
Owen Taylor3473f882001-02-23 17:55:21 +000011 *
Daniel Veillardbe586972003-11-18 20:56:51 +000012 * Copy: See Copyright for the status of this software.
Owen Taylor3473f882001-02-23 17:55:21 +000013 *
Daniel Veillardbe586972003-11-18 20:56:51 +000014 * Author: Daniel Veillard
Owen Taylor3473f882001-02-23 17:55:21 +000015 */
16
17#ifndef __XML_XPTR_H__
18#define __XML_XPTR_H__
19
Igor Zlatkovic76874e42003-08-25 09:05:12 +000020#include <libxml/xmlversion.h>
Daniel Veillarda2351322004-06-27 12:08:10 +000021
22#ifdef LIBXML_XPTR_ENABLED
23
Owen Taylor3473f882001-02-23 17:55:21 +000024#include <libxml/tree.h>
25#include <libxml/xpath.h>
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31/*
32 * A Location Set
33 */
34typedef struct _xmlLocationSet xmlLocationSet;
35typedef xmlLocationSet *xmlLocationSetPtr;
36struct _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/*
Daniel Veillard61f26172002-03-12 18:46:39 +000043 * Handling of location sets.
Owen Taylor3473f882001-02-23 17:55:21 +000044 */
45
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000046XMLPUBFUN xmlLocationSetPtr XMLCALL
47 xmlXPtrLocationSetCreate (xmlXPathObjectPtr val);
48XMLPUBFUN void XMLCALL
49 xmlXPtrFreeLocationSet (xmlLocationSetPtr obj);
50XMLPUBFUN xmlLocationSetPtr XMLCALL
51 xmlXPtrLocationSetMerge (xmlLocationSetPtr val1,
Owen Taylor3473f882001-02-23 17:55:21 +000052 xmlLocationSetPtr val2);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000053XMLPUBFUN xmlXPathObjectPtr XMLCALL
54 xmlXPtrNewRange (xmlNodePtr start,
Daniel Veillard56a4cb82001-03-24 17:00:36 +000055 int startindex,
56 xmlNodePtr end,
57 int endindex);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000058XMLPUBFUN xmlXPathObjectPtr XMLCALL
59 xmlXPtrNewRangePoints (xmlXPathObjectPtr start,
Daniel Veillard56a4cb82001-03-24 17:00:36 +000060 xmlXPathObjectPtr end);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000061XMLPUBFUN xmlXPathObjectPtr XMLCALL
62 xmlXPtrNewRangeNodePoint (xmlNodePtr start,
Daniel Veillard56a4cb82001-03-24 17:00:36 +000063 xmlXPathObjectPtr end);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000064XMLPUBFUN xmlXPathObjectPtr XMLCALL
65 xmlXPtrNewRangePointNode (xmlXPathObjectPtr start,
Daniel Veillard56a4cb82001-03-24 17:00:36 +000066 xmlNodePtr end);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000067XMLPUBFUN xmlXPathObjectPtr XMLCALL
68 xmlXPtrNewRangeNodes (xmlNodePtr start,
Daniel Veillard56a4cb82001-03-24 17:00:36 +000069 xmlNodePtr end);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000070XMLPUBFUN xmlXPathObjectPtr XMLCALL
71 xmlXPtrNewLocationSetNodes (xmlNodePtr start,
Daniel Veillard56a4cb82001-03-24 17:00:36 +000072 xmlNodePtr end);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000073XMLPUBFUN xmlXPathObjectPtr XMLCALL
74 xmlXPtrNewLocationSetNodeSet(xmlNodeSetPtr set);
75XMLPUBFUN xmlXPathObjectPtr XMLCALL
76 xmlXPtrNewRangeNodeObject (xmlNodePtr start,
Daniel Veillard9e7160d2001-03-18 23:17:47 +000077 xmlXPathObjectPtr end);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000078XMLPUBFUN xmlXPathObjectPtr XMLCALL
79 xmlXPtrNewCollapsedRange (xmlNodePtr start);
80XMLPUBFUN void XMLCALL
81 xmlXPtrLocationSetAdd (xmlLocationSetPtr cur,
Daniel Veillard9e7160d2001-03-18 23:17:47 +000082 xmlXPathObjectPtr val);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000083XMLPUBFUN xmlXPathObjectPtr XMLCALL
84 xmlXPtrWrapLocationSet (xmlLocationSetPtr val);
85XMLPUBFUN void XMLCALL
86 xmlXPtrLocationSetDel (xmlLocationSetPtr cur,
Daniel Veillard56a4cb82001-03-24 17:00:36 +000087 xmlXPathObjectPtr val);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000088XMLPUBFUN void XMLCALL
89 xmlXPtrLocationSetRemove (xmlLocationSetPtr cur,
Daniel Veillard56a4cb82001-03-24 17:00:36 +000090 int val);
Owen Taylor3473f882001-02-23 17:55:21 +000091
92/*
Daniel Veillard61f26172002-03-12 18:46:39 +000093 * Functions.
Owen Taylor3473f882001-02-23 17:55:21 +000094 */
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000095XMLPUBFUN xmlXPathContextPtr XMLCALL
96 xmlXPtrNewContext (xmlDocPtr doc,
Owen Taylor3473f882001-02-23 17:55:21 +000097 xmlNodePtr here,
98 xmlNodePtr origin);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +000099XMLPUBFUN xmlXPathObjectPtr XMLCALL
100 xmlXPtrEval (const xmlChar *str,
Owen Taylor3473f882001-02-23 17:55:21 +0000101 xmlXPathContextPtr ctx);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000102XMLPUBFUN void XMLCALL
103 xmlXPtrRangeToFunction (xmlXPathParserContextPtr ctxt,
Owen Taylor3473f882001-02-23 17:55:21 +0000104 int nargs);
Igor Zlatkovicaa3cfbd2003-08-27 08:59:58 +0000105XMLPUBFUN xmlNodePtr XMLCALL
106 xmlXPtrBuildNodeList (xmlXPathObjectPtr obj);
107XMLPUBFUN void XMLCALL
108 xmlXPtrEvalRangePredicate (xmlXPathParserContextPtr ctxt);
Owen Taylor3473f882001-02-23 17:55:21 +0000109#ifdef __cplusplus
110}
111#endif
Daniel Veillarda2351322004-06-27 12:08:10 +0000112
113#endif /* LIBXML_XPTR_ENABLED */
Owen Taylor3473f882001-02-23 17:55:21 +0000114#endif /* __XML_XPTR_H__ */