File: xlink.h

package info (click to toggle)
libxml2 2.15.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental, forky, sid
  • size: 9,964 kB
  • sloc: ansic: 138,103; python: 6,692; sh: 4,736; xml: 1,476; makefile: 715
file content (197 lines) | stat: -rw-r--r-- 5,156 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
/**
 * @file
 * 
 * @brief unfinished XLink detection module
 * 
 * This module is deprecated, don't use.
 *
 * @copyright See Copyright for the status of this software.
 *
 * @author Daniel Veillard
 */

#ifndef __XML_XLINK_H__
#define __XML_XLINK_H__

#include <libxml/xmlversion.h>
#include <libxml/tree.h>

#ifdef LIBXML_XPTR_ENABLED

#ifdef __cplusplus
extern "C" {
#endif

/** @cond ignore */

/**
 * Various defines for the various Link properties.
 *
 * NOTE: the link detection layer will try to resolve QName expansion
 *       of namespaces. If "foo" is the prefix for "http://foo.com/"
 *       then the link detection layer will expand role="foo:myrole"
 *       to "http://foo.com/:myrole".
 * NOTE: the link detection layer will expand URI-References found on
 *       href attributes by using the base mechanism if found.
 */
typedef xmlChar *xlinkHRef;
typedef xmlChar *xlinkRole;
typedef xmlChar *xlinkTitle;

typedef enum {
    XLINK_TYPE_NONE = 0,
    XLINK_TYPE_SIMPLE,
    XLINK_TYPE_EXTENDED,
    XLINK_TYPE_EXTENDED_SET
} xlinkType;

typedef enum {
    XLINK_SHOW_NONE = 0,
    XLINK_SHOW_NEW,
    XLINK_SHOW_EMBED,
    XLINK_SHOW_REPLACE
} xlinkShow;

typedef enum {
    XLINK_ACTUATE_NONE = 0,
    XLINK_ACTUATE_AUTO,
    XLINK_ACTUATE_ONREQUEST
} xlinkActuate;

/** @endcond */

/**
 * This is the prototype for the link detection routine.
 * It calls the default link detection callbacks upon link detection.
 *
 * @param ctx  user data pointer
 * @param node  the node to check
 */
typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNode *node);

/*
 * The link detection module interact with the upper layers using
 * a set of callback registered at parsing time.
 */

/**
 * This is the prototype for a simple link detection callback.
 *
 * @param ctx  user data pointer
 * @param node  the node carrying the link
 * @param href  the target of the link
 * @param role  the role string
 * @param title  the link title
 */
typedef void
(*xlinkSimpleLinkFunk)	(void *ctx,
			 xmlNode *node,
			 const xlinkHRef href,
			 const xlinkRole role,
			 const xlinkTitle title);

/**
 * This is the prototype for a extended link detection callback.
 *
 * @param ctx  user data pointer
 * @param node  the node carrying the link
 * @param nbLocators  the number of locators detected on the link
 * @param hrefs  pointer to the array of locator hrefs
 * @param roles  pointer to the array of locator roles
 * @param nbArcs  the number of arcs detected on the link
 * @param from  pointer to the array of source roles found on the arcs
 * @param to  pointer to the array of target roles found on the arcs
 * @param show  array of values for the show attributes found on the arcs
 * @param actuate  array of values for the actuate attributes found on the arcs
 * @param nbTitles  the number of titles detected on the link
 * @param titles  array of titles detected on the link
 * @param langs  array of xml:lang values for the titles
 */
typedef void
(*xlinkExtendedLinkFunk)(void *ctx,
			 xmlNode *node,
			 int nbLocators,
			 const xlinkHRef *hrefs,
			 const xlinkRole *roles,
			 int nbArcs,
			 const xlinkRole *from,
			 const xlinkRole *to,
			 xlinkShow *show,
			 xlinkActuate *actuate,
			 int nbTitles,
			 const xlinkTitle *titles,
			 const xmlChar **langs);

/**
 * This is the prototype for a extended link set detection callback.
 *
 * @param ctx  user data pointer
 * @param node  the node carrying the link
 * @param nbLocators  the number of locators detected on the link
 * @param hrefs  pointer to the array of locator hrefs
 * @param roles  pointer to the array of locator roles
 * @param nbTitles  the number of titles detected on the link
 * @param titles  array of titles detected on the link
 * @param langs  array of xml:lang values for the titles
 */
typedef void
(*xlinkExtendedLinkSetFunk)	(void *ctx,
				 xmlNode *node,
				 int nbLocators,
				 const xlinkHRef *hrefs,
				 const xlinkRole *roles,
				 int nbTitles,
				 const xlinkTitle *titles,
				 const xmlChar **langs);

typedef struct _xlinkHandler xlinkHandler;
typedef xlinkHandler *xlinkHandlerPtr;
/**
 * This is the structure containing a set of Links detection callbacks.
 *
 * There is no default xlink callbacks, if one want to get link
 * recognition activated, those call backs must be provided before parsing.
 */
struct _xlinkHandler {
    xlinkSimpleLinkFunk simple;
    xlinkExtendedLinkFunk extended;
    xlinkExtendedLinkSetFunk set;
};

/*
 * The default detection routine, can be overridden, they call the default
 * detection callbacks.
 */

XML_DEPRECATED
XMLPUBFUN xlinkNodeDetectFunc
		xlinkGetDefaultDetect	(void);
XML_DEPRECATED
XMLPUBFUN void
		xlinkSetDefaultDetect	(xlinkNodeDetectFunc func);

/*
 * Routines to set/get the default handlers.
 */
XML_DEPRECATED
XMLPUBFUN xlinkHandler *
		xlinkGetDefaultHandler	(void);
XML_DEPRECATED
XMLPUBFUN void
		xlinkSetDefaultHandler	(xlinkHandler *handler);

/*
 * Link detection module itself.
 */
XML_DEPRECATED
XMLPUBFUN xlinkType
		xlinkIsLink		(xmlDoc *doc,
					 xmlNode *node);

#ifdef __cplusplus
}
#endif

#endif /* LIBXML_XPTR_ENABLED */

#endif /* __XML_XLINK_H__ */