as Ralf Junker pointed out xsltExtFunctionLookup was defined but never
[platform/upstream/libxslt.git] / 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  * xsltStyleExtInitFunction:
28  * @ctxt:  an XSLT stylesheet
29  * @URI:  the namespace URI for the extension
30  *
31  * A function called at initialization time of an XSLT extension module.
32  *
33  * Returns a pointer to the module specific data for this transformation.
34  */
35 typedef void * (*xsltStyleExtInitFunction)      (xsltStylesheetPtr style,
36                                                  const xmlChar *URI);
37
38 /**
39  * xsltStyleExtShutdownFunction:
40  * @ctxt:  an XSLT stylesheet
41  * @URI:  the namespace URI for the extension
42  * @data:  the data associated to this module
43  *
44  * A function called at shutdown time of an XSLT extension module.
45  */
46 typedef void (*xsltStyleExtShutdownFunction)    (xsltStylesheetPtr style,
47                                                  const xmlChar *URI,
48                                                  void *data);
49
50 /**
51  * xsltExtInitFunction:
52  * @ctxt:  an XSLT transformation context
53  * @URI:  the namespace URI for the extension
54  *
55  * A function called at initialization time of an XSLT extension module.
56  *
57  * Returns a pointer to the module specific data for this transformation.
58  */
59 typedef void * (*xsltExtInitFunction)   (xsltTransformContextPtr ctxt,
60                                          const xmlChar *URI);
61
62 /**
63  * xsltExtShutdownFunction:
64  * @ctxt:  an XSLT transformation context
65  * @URI:  the namespace URI for the extension
66  * @data:  the data associated to this module
67  *
68  * A function called at shutdown time of an XSLT extension module.
69  */
70 typedef void (*xsltExtShutdownFunction) (xsltTransformContextPtr ctxt,
71                                          const xmlChar *URI,
72                                          void *data);
73
74 XSLTPUBFUN int XSLTCALL
75                 xsltRegisterExtModule   (const xmlChar *URI,
76                                          xsltExtInitFunction initFunc,
77                                          xsltExtShutdownFunction shutdownFunc);
78 XSLTPUBFUN int XSLTCALL
79                 xsltRegisterExtModuleFull
80                                         (const xmlChar * URI,
81                                          xsltExtInitFunction initFunc,
82                                          xsltExtShutdownFunction shutdownFunc,
83                                          xsltStyleExtInitFunction styleInitFunc,
84                                          xsltStyleExtShutdownFunction styleShutdownFunc);
85
86 XSLTPUBFUN int XSLTCALL
87                 xsltUnregisterExtModule (const xmlChar * URI);
88
89 XSLTPUBFUN void * XSLTCALL              
90                 xsltGetExtData          (xsltTransformContextPtr ctxt,
91                                          const xmlChar *URI);
92
93 XSLTPUBFUN void * XSLTCALL              
94                 xsltStyleGetExtData     (xsltStylesheetPtr style,
95                                          const xmlChar *URI);
96 #ifdef XSLT_REFACTORED
97 XSLTPUBFUN void * XSLTCALL
98                 xsltStyleStylesheetLevelGetExtData(
99                                          xsltStylesheetPtr style,
100                                          const xmlChar * URI);
101 #endif
102 XSLTPUBFUN void XSLTCALL                
103                 xsltShutdownCtxtExts    (xsltTransformContextPtr ctxt);
104
105 XSLTPUBFUN void XSLTCALL                
106                 xsltShutdownExts        (xsltStylesheetPtr style);
107
108 XSLTPUBFUN xsltTransformContextPtr XSLTCALL 
109                 xsltXPathGetTransformContext
110                                         (xmlXPathParserContextPtr ctxt);
111
112 /*
113  * extension functions
114 */
115 XSLTPUBFUN int XSLTCALL 
116                 xsltRegisterExtModuleFunction   
117                                         (const xmlChar *name,
118                                          const xmlChar *URI,
119                                          xmlXPathFunction function);
120 XSLTPUBFUN xmlXPathFunction XSLTCALL
121         xsltExtModuleFunctionLookup     (const xmlChar *name,
122                                          const xmlChar *URI);
123 XSLTPUBFUN int XSLTCALL 
124                 xsltUnregisterExtModuleFunction 
125                                         (const xmlChar *name,
126                                          const xmlChar *URI);
127
128 /*
129  * extension elements
130  */
131 typedef xsltElemPreCompPtr (*xsltPreComputeFunction)
132                                         (xsltStylesheetPtr style,
133                                          xmlNodePtr inst,
134                                          xsltTransformFunction function);
135
136 XSLTPUBFUN xsltElemPreCompPtr XSLTCALL
137                 xsltNewElemPreComp      (xsltStylesheetPtr style,
138                                          xmlNodePtr inst,
139                                          xsltTransformFunction function);
140 XSLTPUBFUN void XSLTCALL        
141                 xsltInitElemPreComp     (xsltElemPreCompPtr comp,
142                                          xsltStylesheetPtr style,
143                                          xmlNodePtr inst,
144                                          xsltTransformFunction function,
145                                          xsltElemPreCompDeallocator freeFunc);
146
147 XSLTPUBFUN int XSLTCALL 
148                 xsltRegisterExtModuleElement    
149                                         (const xmlChar *name,
150                                          const xmlChar *URI,
151                                          xsltPreComputeFunction precomp,
152                                          xsltTransformFunction transform);
153 XSLTPUBFUN xsltTransformFunction XSLTCALL 
154                 xsltExtElementLookup    (xsltTransformContextPtr ctxt,
155                                          const xmlChar *name,
156                                          const xmlChar *URI);
157 XSLTPUBFUN xsltTransformFunction XSLTCALL 
158                 xsltExtModuleElementLookup
159                                         (const xmlChar *name,
160                                          const xmlChar *URI);
161 XSLTPUBFUN xsltPreComputeFunction XSLTCALL 
162                 xsltExtModuleElementPreComputeLookup 
163                                         (const xmlChar *name,
164                                          const xmlChar *URI);
165 XSLTPUBFUN int XSLTCALL 
166                 xsltUnregisterExtModuleElement  
167                                         (const xmlChar *name,
168                                          const xmlChar *URI);
169
170 /*
171  * top-level elements
172  */
173 typedef void (*xsltTopLevelFunction)    (xsltStylesheetPtr style,
174                                          xmlNodePtr inst);
175
176 XSLTPUBFUN int XSLTCALL 
177                 xsltRegisterExtModuleTopLevel
178                                         (const xmlChar *name,
179                                          const xmlChar *URI,
180                                          xsltTopLevelFunction function);
181 XSLTPUBFUN xsltTopLevelFunction XSLTCALL 
182                 xsltExtModuleTopLevelLookup 
183                                         (const xmlChar *name,
184                                          const xmlChar *URI);
185 XSLTPUBFUN int XSLTCALL 
186                 xsltUnregisterExtModuleTopLevel 
187                                         (const xmlChar *name,
188                                          const xmlChar *URI);
189
190
191 /* These 2 functions are deprecated for use within modules. */
192 XSLTPUBFUN int XSLTCALL         
193                 xsltRegisterExtFunction (xsltTransformContextPtr ctxt,
194                                          const xmlChar *name,
195                                          const xmlChar *URI,
196                                          xmlXPathFunction function);
197 XSLTPUBFUN int XSLTCALL         
198                 xsltRegisterExtElement  (xsltTransformContextPtr ctxt,
199                                          const xmlChar *name,
200                                          const xmlChar *URI,
201                                          xsltTransformFunction function);
202
203 /*
204  * Extension Prefix handling API.
205  * Those are used by the XSLT (pre)processor.
206  */
207
208 XSLTPUBFUN int XSLTCALL         
209                 xsltRegisterExtPrefix   (xsltStylesheetPtr style,
210                                          const xmlChar *prefix,
211                                          const xmlChar *URI);
212 XSLTPUBFUN int XSLTCALL         
213                 xsltCheckExtPrefix      (xsltStylesheetPtr style,
214                                          const xmlChar *URI);
215 XSLTPUBFUN int XSLTCALL
216                 xsltCheckExtURI         (xsltStylesheetPtr style,
217                                          const xmlChar *URI);
218 XSLTPUBFUN int XSLTCALL         
219                 xsltInitCtxtExts        (xsltTransformContextPtr ctxt);
220 XSLTPUBFUN void XSLTCALL                
221                 xsltFreeCtxtExts        (xsltTransformContextPtr ctxt);
222 XSLTPUBFUN void XSLTCALL                
223                 xsltFreeExts            (xsltStylesheetPtr style);
224
225 XSLTPUBFUN xsltElemPreCompPtr XSLTCALL 
226                 xsltPreComputeExtModuleElement
227                                         (xsltStylesheetPtr style,
228                                          xmlNodePtr inst);
229 /*
230  * Extension Infos access.
231  * Used by exslt initialisation
232  */
233
234 XSLTPUBFUN xmlHashTablePtr XSLTCALL 
235                 xsltGetExtInfo          (xsltStylesheetPtr style, 
236                                          const xmlChar *URI);
237
238 /**
239  * Test module http://xmlsoft.org/XSLT/
240  */
241 XSLTPUBFUN void XSLTCALL        
242                 xsltRegisterTestModule  (void);
243 XSLTPUBFUN void XSLTCALL        
244                 xsltDebugDumpExtensions (FILE * output);
245
246
247 #ifdef __cplusplus
248 }
249 #endif
250
251 #endif /* __XML_XSLT_EXTENSION_H__ */
252