Sync with trunk head (part 1 of x)
[reactos.git] / dll / 3rdparty / libxslt / extensions.h
1 /*
2 * Summary: interface for the extension support
3 * Description: This provide the API needed for simple and module
4 * extension support.
5 *
6 * Copy: See Copyright for the status of this software.
7 *
8 * Author: Daniel Veillard
9 */
10
11 #ifndef __XML_XSLT_EXTENSION_H__
12 #define __XML_XSLT_EXTENSION_H__
13
14 #include <libxml/xpath.h>
15 #include "xsltexports.h"
16 #include "xsltInternals.h"
17
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21
22 /**
23 * Extension Modules API.
24 */
25
26 /**
27 * xsltInitGlobals:
28 *
29 * Initialize the global variables for extensions
30 *
31 */
32
33 XSLTPUBFUN void XSLTCALL
34 xsltInitGlobals (void);
35
36 /**
37 * xsltStyleExtInitFunction:
38 * @ctxt: an XSLT stylesheet
39 * @URI: the namespace URI for the extension
40 *
41 * A function called at initialization time of an XSLT extension module.
42 *
43 * Returns a pointer to the module specific data for this transformation.
44 */
45 typedef void * (*xsltStyleExtInitFunction) (xsltStylesheetPtr style,
46 const xmlChar *URI);
47
48 /**
49 * xsltStyleExtShutdownFunction:
50 * @ctxt: an XSLT stylesheet
51 * @URI: the namespace URI for the extension
52 * @data: the data associated to this module
53 *
54 * A function called at shutdown time of an XSLT extension module.
55 */
56 typedef void (*xsltStyleExtShutdownFunction) (xsltStylesheetPtr style,
57 const xmlChar *URI,
58 void *data);
59
60 /**
61 * xsltExtInitFunction:
62 * @ctxt: an XSLT transformation context
63 * @URI: the namespace URI for the extension
64 *
65 * A function called at initialization time of an XSLT extension module.
66 *
67 * Returns a pointer to the module specific data for this transformation.
68 */
69 typedef void * (*xsltExtInitFunction) (xsltTransformContextPtr ctxt,
70 const xmlChar *URI);
71
72 /**
73 * xsltExtShutdownFunction:
74 * @ctxt: an XSLT transformation context
75 * @URI: the namespace URI for the extension
76 * @data: the data associated to this module
77 *
78 * A function called at shutdown time of an XSLT extension module.
79 */
80 typedef void (*xsltExtShutdownFunction) (xsltTransformContextPtr ctxt,
81 const xmlChar *URI,
82 void *data);
83
84 XSLTPUBFUN int XSLTCALL
85 xsltRegisterExtModule (const xmlChar *URI,
86 xsltExtInitFunction initFunc,
87 xsltExtShutdownFunction shutdownFunc);
88 XSLTPUBFUN int XSLTCALL
89 xsltRegisterExtModuleFull
90 (const xmlChar * URI,
91 xsltExtInitFunction initFunc,
92 xsltExtShutdownFunction shutdownFunc,
93 xsltStyleExtInitFunction styleInitFunc,
94 xsltStyleExtShutdownFunction styleShutdownFunc);
95
96 XSLTPUBFUN int XSLTCALL
97 xsltUnregisterExtModule (const xmlChar * URI);
98
99 XSLTPUBFUN void * XSLTCALL
100 xsltGetExtData (xsltTransformContextPtr ctxt,
101 const xmlChar *URI);
102
103 XSLTPUBFUN void * XSLTCALL
104 xsltStyleGetExtData (xsltStylesheetPtr style,
105 const xmlChar *URI);
106 #ifdef XSLT_REFACTORED
107 XSLTPUBFUN void * XSLTCALL
108 xsltStyleStylesheetLevelGetExtData(
109 xsltStylesheetPtr style,
110 const xmlChar * URI);
111 #endif
112 XSLTPUBFUN void XSLTCALL
113 xsltShutdownCtxtExts (xsltTransformContextPtr ctxt);
114
115 XSLTPUBFUN void XSLTCALL
116 xsltShutdownExts (xsltStylesheetPtr style);
117
118 XSLTPUBFUN xsltTransformContextPtr XSLTCALL
119 xsltXPathGetTransformContext
120 (xmlXPathParserContextPtr ctxt);
121
122 /*
123 * extension functions
124 */
125 XSLTPUBFUN int XSLTCALL
126 xsltRegisterExtModuleFunction
127 (const xmlChar *name,
128 const xmlChar *URI,
129 xmlXPathFunction function);
130 XSLTPUBFUN xmlXPathFunction XSLTCALL
131 xsltExtModuleFunctionLookup (const xmlChar *name,
132 const xmlChar *URI);
133 XSLTPUBFUN int XSLTCALL
134 xsltUnregisterExtModuleFunction
135 (const xmlChar *name,
136 const xmlChar *URI);
137
138 /*
139 * extension elements
140 */
141 typedef xsltElemPreCompPtr (*xsltPreComputeFunction)
142 (xsltStylesheetPtr style,
143 xmlNodePtr inst,
144 xsltTransformFunction function);
145
146 XSLTPUBFUN xsltElemPreCompPtr XSLTCALL
147 xsltNewElemPreComp (xsltStylesheetPtr style,
148 xmlNodePtr inst,
149 xsltTransformFunction function);
150 XSLTPUBFUN void XSLTCALL
151 xsltInitElemPreComp (xsltElemPreCompPtr comp,
152 xsltStylesheetPtr style,
153 xmlNodePtr inst,
154 xsltTransformFunction function,
155 xsltElemPreCompDeallocator freeFunc);
156
157 XSLTPUBFUN int XSLTCALL
158 xsltRegisterExtModuleElement
159 (const xmlChar *name,
160 const xmlChar *URI,
161 xsltPreComputeFunction precomp,
162 xsltTransformFunction transform);
163 XSLTPUBFUN xsltTransformFunction XSLTCALL
164 xsltExtElementLookup (xsltTransformContextPtr ctxt,
165 const xmlChar *name,
166 const xmlChar *URI);
167 XSLTPUBFUN xsltTransformFunction XSLTCALL
168 xsltExtModuleElementLookup
169 (const xmlChar *name,
170 const xmlChar *URI);
171 XSLTPUBFUN xsltPreComputeFunction XSLTCALL
172 xsltExtModuleElementPreComputeLookup
173 (const xmlChar *name,
174 const xmlChar *URI);
175 XSLTPUBFUN int XSLTCALL
176 xsltUnregisterExtModuleElement
177 (const xmlChar *name,
178 const xmlChar *URI);
179
180 /*
181 * top-level elements
182 */
183 typedef void (*xsltTopLevelFunction) (xsltStylesheetPtr style,
184 xmlNodePtr inst);
185
186 XSLTPUBFUN int XSLTCALL
187 xsltRegisterExtModuleTopLevel
188 (const xmlChar *name,
189 const xmlChar *URI,
190 xsltTopLevelFunction function);
191 XSLTPUBFUN xsltTopLevelFunction XSLTCALL
192 xsltExtModuleTopLevelLookup
193 (const xmlChar *name,
194 const xmlChar *URI);
195 XSLTPUBFUN int XSLTCALL
196 xsltUnregisterExtModuleTopLevel
197 (const xmlChar *name,
198 const xmlChar *URI);
199
200
201 /* These 2 functions are deprecated for use within modules. */
202 XSLTPUBFUN int XSLTCALL
203 xsltRegisterExtFunction (xsltTransformContextPtr ctxt,
204 const xmlChar *name,
205 const xmlChar *URI,
206 xmlXPathFunction function);
207 XSLTPUBFUN int XSLTCALL
208 xsltRegisterExtElement (xsltTransformContextPtr ctxt,
209 const xmlChar *name,
210 const xmlChar *URI,
211 xsltTransformFunction function);
212
213 /*
214 * Extension Prefix handling API.
215 * Those are used by the XSLT (pre)processor.
216 */
217
218 XSLTPUBFUN int XSLTCALL
219 xsltRegisterExtPrefix (xsltStylesheetPtr style,
220 const xmlChar *prefix,
221 const xmlChar *URI);
222 XSLTPUBFUN int XSLTCALL
223 xsltCheckExtPrefix (xsltStylesheetPtr style,
224 const xmlChar *URI);
225 XSLTPUBFUN int XSLTCALL
226 xsltCheckExtURI (xsltStylesheetPtr style,
227 const xmlChar *URI);
228 XSLTPUBFUN int XSLTCALL
229 xsltInitCtxtExts (xsltTransformContextPtr ctxt);
230 XSLTPUBFUN void XSLTCALL
231 xsltFreeCtxtExts (xsltTransformContextPtr ctxt);
232 XSLTPUBFUN void XSLTCALL
233 xsltFreeExts (xsltStylesheetPtr style);
234
235 XSLTPUBFUN xsltElemPreCompPtr XSLTCALL
236 xsltPreComputeExtModuleElement
237 (xsltStylesheetPtr style,
238 xmlNodePtr inst);
239 /*
240 * Extension Infos access.
241 * Used by exslt initialisation
242 */
243
244 XSLTPUBFUN xmlHashTablePtr XSLTCALL
245 xsltGetExtInfo (xsltStylesheetPtr style,
246 const xmlChar *URI);
247
248 /**
249 * Test module http://xmlsoft.org/XSLT/
250 */
251 XSLTPUBFUN void XSLTCALL
252 xsltRegisterTestModule (void);
253 XSLTPUBFUN void XSLTCALL
254 xsltDebugDumpExtensions (FILE * output);
255
256
257 #ifdef __cplusplus
258 }
259 #endif
260
261 #endif /* __XML_XSLT_EXTENSION_H__ */
262