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 | |
263 | |