- add sources.
[platform/framework/web/crosswalk.git] / src / third_party / libxslt / libxslt / xsltutils.h
1 /*
2  * Summary: set of utilities for the XSLT engine
3  * Description: interfaces for the utilities module of the XSLT engine.
4  *              things like message handling, profiling, and other
5  *              generally useful routines.
6  *
7  * Copy: See Copyright for the status of this software.
8  *
9  * Author: Daniel Veillard
10  */
11
12 #ifndef __XML_XSLTUTILS_H__
13 #define __XML_XSLTUTILS_H__
14
15 #include <libxslt/xsltconfig.h>
16 #ifdef HAVE_STDARG_H
17 #include <stdarg.h>
18 #endif
19 #include <libxml/xpath.h>
20 #include <libxml/dict.h>
21 #include <libxml/xmlerror.h>
22 #include "xsltexports.h"
23 #include "xsltInternals.h"
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 /**
30  * XSLT_TODO:
31  *
32  * Macro to flag unimplemented blocks.
33  */
34 #define XSLT_TODO                                                       \
35     xsltGenericError(xsltGenericErrorContext,                           \
36             "Unimplemented block at %s:%d\n",                           \
37             __FILE__, __LINE__);
38
39 /**
40  * XSLT_STRANGE:
41  *
42  * Macro to flag that a problem was detected internally.
43  */
44 #define XSLT_STRANGE                                                    \
45     xsltGenericError(xsltGenericErrorContext,                           \
46             "Internal error at %s:%d\n",                                \
47             __FILE__, __LINE__);
48
49 /**
50  * IS_XSLT_ELEM:
51  *
52  * Checks that the element pertains to XSLT namespace.
53  */
54 #define IS_XSLT_ELEM(n)                                                 \
55     (((n) != NULL) && ((n)->type == XML_ELEMENT_NODE) &&                \
56      ((n)->ns != NULL) && (xmlStrEqual((n)->ns->href, XSLT_NAMESPACE)))
57
58 /**
59  * IS_XSLT_NAME:
60  *
61  * Checks the value of an element in XSLT namespace.
62  */
63 #define IS_XSLT_NAME(n, val)                                            \
64     (xmlStrEqual((n)->name, (const xmlChar *) (val)))
65
66 /**
67  * IS_XSLT_REAL_NODE:
68  *
69  * Check that a node is a 'real' one: document, element, text or attribute.
70  */
71 #define IS_XSLT_REAL_NODE(n)                                            \
72     (((n) != NULL) &&                                                   \
73      (((n)->type == XML_ELEMENT_NODE) ||                                \
74       ((n)->type == XML_TEXT_NODE) ||                                   \
75       ((n)->type == XML_CDATA_SECTION_NODE) ||                          \
76       ((n)->type == XML_ATTRIBUTE_NODE) ||                              \
77       ((n)->type == XML_DOCUMENT_NODE) ||                               \
78       ((n)->type == XML_HTML_DOCUMENT_NODE) ||                          \
79       ((n)->type == XML_COMMENT_NODE) ||                                \
80       ((n)->type == XML_PI_NODE)))      
81
82 /*
83  * Our own version of namespaced atributes lookup.
84  */
85 XSLTPUBFUN xmlChar * XSLTCALL
86                 xsltGetNsProp   (xmlNodePtr node,
87                                  const xmlChar *name,
88                                  const xmlChar *nameSpace);
89 XSLTPUBFUN const xmlChar * XSLTCALL
90                 xsltGetCNsProp  (xsltStylesheetPtr style,
91                                  xmlNodePtr node,
92                                  const xmlChar *name,
93                                  const xmlChar *nameSpace);
94 XSLTPUBFUN int XSLTCALL
95                 xsltGetUTF8Char (const unsigned char *utf,
96                                  int *len);
97
98 /*
99  * XSLT Debug Tracing Tracing Types
100  */
101 typedef enum {
102         XSLT_TRACE_ALL =                -1,
103         XSLT_TRACE_NONE =               0,
104         XSLT_TRACE_COPY_TEXT =          1<<0,
105         XSLT_TRACE_PROCESS_NODE =       1<<1,
106         XSLT_TRACE_APPLY_TEMPLATE =     1<<2,
107         XSLT_TRACE_COPY =               1<<3,
108         XSLT_TRACE_COMMENT =            1<<4,
109         XSLT_TRACE_PI =                 1<<5,
110         XSLT_TRACE_COPY_OF =            1<<6,
111         XSLT_TRACE_VALUE_OF =           1<<7,
112         XSLT_TRACE_CALL_TEMPLATE =      1<<8,
113         XSLT_TRACE_APPLY_TEMPLATES =    1<<9,
114         XSLT_TRACE_CHOOSE =             1<<10,
115         XSLT_TRACE_IF =                 1<<11,
116         XSLT_TRACE_FOR_EACH =           1<<12,
117         XSLT_TRACE_STRIP_SPACES =       1<<13,
118         XSLT_TRACE_TEMPLATES =          1<<14,
119         XSLT_TRACE_KEYS =               1<<15,
120         XSLT_TRACE_VARIABLES =          1<<16
121 } xsltDebugTraceCodes;
122
123 /**
124  * XSLT_TRACE:
125  *
126  * Control the type of xsl debugtrace messages emitted.
127  */
128 #define XSLT_TRACE(ctxt,code,call)      \
129         if (ctxt->traceCode && (*(ctxt->traceCode) & code)) \
130             call
131
132 XSLTPUBFUN void XSLTCALL
133                 xsltDebugSetDefaultTrace(xsltDebugTraceCodes val);
134 XSLTPUBFUN xsltDebugTraceCodes XSLTCALL
135                 xsltDebugGetDefaultTrace(void);
136
137 /*
138  * XSLT specific error and debug reporting functions.
139  */
140 XSLTPUBVAR xmlGenericErrorFunc xsltGenericError;
141 XSLTPUBVAR void *xsltGenericErrorContext;
142 XSLTPUBVAR xmlGenericErrorFunc xsltGenericDebug;
143 XSLTPUBVAR void *xsltGenericDebugContext;
144
145 XSLTPUBFUN void XSLTCALL                
146                 xsltPrintErrorContext           (xsltTransformContextPtr ctxt,
147                                                  xsltStylesheetPtr style,
148                                                  xmlNodePtr node);
149 XSLTPUBFUN void XSLTCALL                
150                 xsltMessage                     (xsltTransformContextPtr ctxt,
151                                                  xmlNodePtr node,
152                                                  xmlNodePtr inst);
153 XSLTPUBFUN void XSLTCALL                
154                 xsltSetGenericErrorFunc         (void *ctx,
155                                                  xmlGenericErrorFunc handler);
156 XSLTPUBFUN void XSLTCALL                
157                 xsltSetGenericDebugFunc         (void *ctx,
158                                                  xmlGenericErrorFunc handler);
159 XSLTPUBFUN void XSLTCALL                
160                 xsltSetTransformErrorFunc       (xsltTransformContextPtr ctxt,
161                                                  void *ctx,
162                                                  xmlGenericErrorFunc handler);
163 XSLTPUBFUN void XSLTCALL                
164                 xsltTransformError              (xsltTransformContextPtr ctxt,
165                                                  xsltStylesheetPtr style,
166                                                  xmlNodePtr node,
167                                                  const char *msg,
168                                                  ...);
169
170 XSLTPUBFUN int XSLTCALL
171                 xsltSetCtxtParseOptions         (xsltTransformContextPtr ctxt,
172                                                  int options);
173 /*
174  * Sorting.
175  */
176
177 XSLTPUBFUN void XSLTCALL                
178                 xsltDocumentSortFunction        (xmlNodeSetPtr list);
179 XSLTPUBFUN void XSLTCALL                
180                 xsltSetSortFunc                 (xsltSortFunc handler);
181 XSLTPUBFUN void XSLTCALL                
182                 xsltSetCtxtSortFunc             (xsltTransformContextPtr ctxt,
183                                                  xsltSortFunc handler);
184 XSLTPUBFUN void XSLTCALL                
185                 xsltDefaultSortFunction         (xsltTransformContextPtr ctxt,
186                                                  xmlNodePtr *sorts,
187                                                  int nbsorts);
188 XSLTPUBFUN void XSLTCALL                
189                 xsltDoSortFunction              (xsltTransformContextPtr ctxt,
190                                                  xmlNodePtr * sorts,
191                                                  int nbsorts);
192 XSLTPUBFUN xmlXPathObjectPtr * XSLTCALL 
193                 xsltComputeSortResult           (xsltTransformContextPtr ctxt,
194                                                  xmlNodePtr sort);
195
196 /*
197  * QNames handling.
198  */
199
200 XSLTPUBFUN const xmlChar * XSLTCALL
201                 xsltSplitQName                  (xmlDictPtr dict,
202                                                  const xmlChar *name,
203                                                  const xmlChar **prefix);
204 XSLTPUBFUN const xmlChar * XSLTCALL 
205                 xsltGetQNameURI                 (xmlNodePtr node,
206                                                  xmlChar **name);
207
208 XSLTPUBFUN const xmlChar * XSLTCALL
209                 xsltGetQNameURI2                (xsltStylesheetPtr style,
210                                                  xmlNodePtr node,
211                                                  const xmlChar **name);
212
213 /*
214  * Output, reuse libxml I/O buffers.
215  */
216 XSLTPUBFUN int XSLTCALL         
217                 xsltSaveResultTo                (xmlOutputBufferPtr buf,
218                                                  xmlDocPtr result,
219                                                  xsltStylesheetPtr style);
220 XSLTPUBFUN int XSLTCALL         
221                 xsltSaveResultToFilename        (const char *URI,
222                                                  xmlDocPtr result,
223                                                  xsltStylesheetPtr style,
224                                                  int compression);
225 XSLTPUBFUN int XSLTCALL         
226                 xsltSaveResultToFile            (FILE *file,
227                                                  xmlDocPtr result,
228                                                  xsltStylesheetPtr style);
229 XSLTPUBFUN int XSLTCALL         
230                 xsltSaveResultToFd              (int fd,
231                                                  xmlDocPtr result,
232                                                  xsltStylesheetPtr style);
233 XSLTPUBFUN int XSLTCALL             
234                 xsltSaveResultToString          (xmlChar **doc_txt_ptr, 
235                                                  int * doc_txt_len, 
236                                                  xmlDocPtr result, 
237                                                  xsltStylesheetPtr style);
238
239 /*
240  * XPath interface
241  */
242 XSLTPUBFUN xmlXPathCompExprPtr XSLTCALL
243                 xsltXPathCompile                (xsltStylesheetPtr style,
244                                                  const xmlChar *str);
245
246 /*
247  * Profiling.
248  */
249 XSLTPUBFUN void XSLTCALL                
250                 xsltSaveProfiling               (xsltTransformContextPtr ctxt,
251                                                  FILE *output);
252 XSLTPUBFUN xmlDocPtr XSLTCALL   
253                 xsltGetProfileInformation       (xsltTransformContextPtr ctxt);
254
255 XSLTPUBFUN long XSLTCALL                
256                 xsltTimestamp                   (void);
257 XSLTPUBFUN void XSLTCALL                
258                 xsltCalibrateAdjust             (long delta);
259
260 /**
261  * XSLT_TIMESTAMP_TICS_PER_SEC:
262  *
263  * Sampling precision for profiling
264  */
265 #define XSLT_TIMESTAMP_TICS_PER_SEC 100000l
266
267 /*
268  * Hooks for the debugger.
269  */
270
271 typedef enum {
272     XSLT_DEBUG_NONE = 0, /* no debugging allowed */
273     XSLT_DEBUG_INIT,
274     XSLT_DEBUG_STEP,
275     XSLT_DEBUG_STEPOUT,
276     XSLT_DEBUG_NEXT,
277     XSLT_DEBUG_STOP,
278     XSLT_DEBUG_CONT,
279     XSLT_DEBUG_RUN,
280     XSLT_DEBUG_RUN_RESTART,
281     XSLT_DEBUG_QUIT
282 } xsltDebugStatusCodes;
283
284 XSLTPUBVAR int xslDebugStatus;
285
286 typedef void (*xsltHandleDebuggerCallback) (xmlNodePtr cur, xmlNodePtr node,
287                         xsltTemplatePtr templ, xsltTransformContextPtr ctxt);
288 typedef int (*xsltAddCallCallback) (xsltTemplatePtr templ, xmlNodePtr source);
289 typedef void (*xsltDropCallCallback) (void);
290
291 XSLTPUBFUN void XSLTCALL
292                 xsltSetDebuggerStatus           (int value);
293 XSLTPUBFUN int XSLTCALL
294                 xsltGetDebuggerStatus           (void);
295 XSLTPUBFUN int XSLTCALL         
296                 xsltSetDebuggerCallbacks        (int no, void *block);
297 XSLTPUBFUN int XSLTCALL         
298                 xslAddCall                      (xsltTemplatePtr templ,
299                                                  xmlNodePtr source);
300 XSLTPUBFUN void XSLTCALL                
301                 xslDropCall                     (void);
302
303 #ifdef __cplusplus
304 }
305 #endif
306
307 #endif /* __XML_XSLTUTILS_H__ */
308
309