codekingpro/portable-devtools
114k
1/*2 * Summary: set of utilities for the XSLT engine3 * Description: interfaces for the utilities module of the XSLT engine.4 * things like message handling, profiling, and other5 * generally useful routines.6 *7 * Copy: See Copyright for the status of this software.8 *9 * Author: Daniel Veillard10 */11 12#ifndef __XML_XSLTUTILS_H__13#define __XML_XSLTUTILS_H__14 15#include <libxslt/xsltconfig.h>16#include <libxml/xpath.h>17#include <libxml/dict.h>18#include <libxml/xmlerror.h>19#include "xsltexports.h"20#include "xsltInternals.h"21 22#ifdef __cplusplus23extern "C" {24#endif25 26/**27 * XSLT_TODO:28 *29 * Macro to flag unimplemented blocks.30 */31#define XSLT_TODO \32 xsltGenericError(xsltGenericErrorContext, \33 "Unimplemented block at %s:%d\n", \34 __FILE__, __LINE__);35 36/**37 * XSLT_STRANGE:38 *39 * Macro to flag that a problem was detected internally.40 */41#define XSLT_STRANGE \42 xsltGenericError(xsltGenericErrorContext, \43 "Internal error at %s:%d\n", \44 __FILE__, __LINE__);45 46/**47 * IS_XSLT_ELEM:48 *49 * Checks that the element pertains to XSLT namespace.50 */51#define IS_XSLT_ELEM(n) \52 (((n) != NULL) && ((n)->type == XML_ELEMENT_NODE) && \53 ((n)->ns != NULL) && (xmlStrEqual((n)->ns->href, XSLT_NAMESPACE)))54 55/**56 * IS_XSLT_NAME:57 *58 * Checks the value of an element in XSLT namespace.59 */60#define IS_XSLT_NAME(n, val) \61 (xmlStrEqual((n)->name, (const xmlChar *) (val)))62 63/**64 * IS_XSLT_REAL_NODE:65 *66 * Check that a node is a 'real' one: document, element, text or attribute.67 */68#define IS_XSLT_REAL_NODE(n) \69 (((n) != NULL) && \70 (((n)->type == XML_ELEMENT_NODE) || \71 ((n)->type == XML_TEXT_NODE) || \72 ((n)->type == XML_CDATA_SECTION_NODE) || \73 ((n)->type == XML_ATTRIBUTE_NODE) || \74 ((n)->type == XML_DOCUMENT_NODE) || \75 ((n)->type == XML_HTML_DOCUMENT_NODE) || \76 ((n)->type == XML_COMMENT_NODE) || \77 ((n)->type == XML_PI_NODE)))78 79/*80 * Our own version of namespaced attributes lookup.81 */82XSLTPUBFUN xmlChar * XSLTCALL83 xsltGetNsProp (xmlNodePtr node,84 const xmlChar *name,85 const xmlChar *nameSpace);86XSLTPUBFUN const xmlChar * XSLTCALL87 xsltGetCNsProp (xsltStylesheetPtr style,88 xmlNodePtr node,89 const xmlChar *name,90 const xmlChar *nameSpace);91XSLTPUBFUN int XSLTCALL92 xsltGetUTF8Char (const unsigned char *utf,93 int *len);94#ifdef IN_LIBXSLT95/** DOC_DISABLE */96XSLTPUBFUN int XSLTCALL97 xsltGetUTF8CharZ (const unsigned char *utf,98 int *len);99/** DOC_ENABLE */100#endif101 102/*103 * XSLT Debug Tracing Tracing Types104 */105typedef enum {106 XSLT_TRACE_ALL = -1,107 XSLT_TRACE_NONE = 0,108 XSLT_TRACE_COPY_TEXT = 1<<0,109 XSLT_TRACE_PROCESS_NODE = 1<<1,110 XSLT_TRACE_APPLY_TEMPLATE = 1<<2,111 XSLT_TRACE_COPY = 1<<3,112 XSLT_TRACE_COMMENT = 1<<4,113 XSLT_TRACE_PI = 1<<5,114 XSLT_TRACE_COPY_OF = 1<<6,115 XSLT_TRACE_VALUE_OF = 1<<7,116 XSLT_TRACE_CALL_TEMPLATE = 1<<8,117 XSLT_TRACE_APPLY_TEMPLATES = 1<<9,118 XSLT_TRACE_CHOOSE = 1<<10,119 XSLT_TRACE_IF = 1<<11,120 XSLT_TRACE_FOR_EACH = 1<<12,121 XSLT_TRACE_STRIP_SPACES = 1<<13,122 XSLT_TRACE_TEMPLATES = 1<<14,123 XSLT_TRACE_KEYS = 1<<15,124 XSLT_TRACE_VARIABLES = 1<<16125} xsltDebugTraceCodes;126 127/**128 * XSLT_TRACE:129 *130 * Control the type of xsl debugtrace messages emitted.131 */132#define XSLT_TRACE(ctxt,code,call) \133 if (ctxt->traceCode && (*(ctxt->traceCode) & code)) \134 call135 136XSLTPUBFUN void XSLTCALL137 xsltDebugSetDefaultTrace(xsltDebugTraceCodes val);138XSLTPUBFUN xsltDebugTraceCodes XSLTCALL139 xsltDebugGetDefaultTrace(void);140 141/*142 * XSLT specific error and debug reporting functions.143 */144XSLTPUBVAR xmlGenericErrorFunc xsltGenericError;145XSLTPUBVAR void *xsltGenericErrorContext;146XSLTPUBVAR xmlGenericErrorFunc xsltGenericDebug;147XSLTPUBVAR void *xsltGenericDebugContext;148 149XSLTPUBFUN void XSLTCALL150 xsltPrintErrorContext (xsltTransformContextPtr ctxt,151 xsltStylesheetPtr style,152 xmlNodePtr node);153XSLTPUBFUN void XSLTCALL154 xsltMessage (xsltTransformContextPtr ctxt,155 xmlNodePtr node,156 xmlNodePtr inst);157XSLTPUBFUN void XSLTCALL158 xsltSetGenericErrorFunc (void *ctx,159 xmlGenericErrorFunc handler);160XSLTPUBFUN void XSLTCALL161 xsltSetGenericDebugFunc (void *ctx,162 xmlGenericErrorFunc handler);163XSLTPUBFUN void XSLTCALL164 xsltSetTransformErrorFunc (xsltTransformContextPtr ctxt,165 void *ctx,166 xmlGenericErrorFunc handler);167XSLTPUBFUN void XSLTCALL168 xsltTransformError (xsltTransformContextPtr ctxt,169 xsltStylesheetPtr style,170 xmlNodePtr node,171 const char *msg,172 ...) LIBXSLT_ATTR_FORMAT(4,5);173 174XSLTPUBFUN int XSLTCALL175 xsltSetCtxtParseOptions (xsltTransformContextPtr ctxt,176 int options);177/*178 * Sorting.179 */180 181XSLTPUBFUN void XSLTCALL182 xsltDocumentSortFunction (xmlNodeSetPtr list);183XSLTPUBFUN void XSLTCALL184 xsltSetSortFunc (xsltSortFunc handler);185XSLTPUBFUN void XSLTCALL186 xsltSetCtxtSortFunc (xsltTransformContextPtr ctxt,187 xsltSortFunc handler);188XSLTPUBFUN void XSLTCALL189 xsltSetCtxtLocaleHandlers (xsltTransformContextPtr ctxt,190 xsltNewLocaleFunc newLocale,191 xsltFreeLocaleFunc freeLocale,192 xsltGenSortKeyFunc genSortKey);193XSLTPUBFUN void XSLTCALL194 xsltDefaultSortFunction (xsltTransformContextPtr ctxt,195 xmlNodePtr *sorts,196 int nbsorts);197XSLTPUBFUN void XSLTCALL198 xsltDoSortFunction (xsltTransformContextPtr ctxt,199 xmlNodePtr * sorts,200 int nbsorts);201XSLTPUBFUN xmlXPathObjectPtr * XSLTCALL202 xsltComputeSortResult (xsltTransformContextPtr ctxt,203 xmlNodePtr sort);204 205/*206 * QNames handling.207 */208 209XSLTPUBFUN const xmlChar * XSLTCALL210 xsltSplitQName (xmlDictPtr dict,211 const xmlChar *name,212 const xmlChar **prefix);213XSLTPUBFUN const xmlChar * XSLTCALL214 xsltGetQNameURI (xmlNodePtr node,215 xmlChar **name);216 217XSLTPUBFUN const xmlChar * XSLTCALL218 xsltGetQNameURI2 (xsltStylesheetPtr style,219 xmlNodePtr node,220 const xmlChar **name);221 222/*223 * Output, reuse libxml I/O buffers.224 */225XSLTPUBFUN int XSLTCALL226 xsltSaveResultTo (xmlOutputBufferPtr buf,227 xmlDocPtr result,228 xsltStylesheetPtr style);229XSLTPUBFUN int XSLTCALL230 xsltSaveResultToFilename (const char *URI,231 xmlDocPtr result,232 xsltStylesheetPtr style,233 int compression);234XSLTPUBFUN int XSLTCALL235 xsltSaveResultToFile (FILE *file,236 xmlDocPtr result,237 xsltStylesheetPtr style);238XSLTPUBFUN int XSLTCALL239 xsltSaveResultToFd (int fd,240 xmlDocPtr result,241 xsltStylesheetPtr style);242XSLTPUBFUN int XSLTCALL243 xsltSaveResultToString (xmlChar **doc_txt_ptr,244 int * doc_txt_len,245 xmlDocPtr result,246 xsltStylesheetPtr style);247 248/*249 * XPath interface250 */251XSLTPUBFUN xmlXPathCompExprPtr XSLTCALL252 xsltXPathCompile (xsltStylesheetPtr style,253 const xmlChar *str);254XSLTPUBFUN xmlXPathCompExprPtr XSLTCALL255 xsltXPathCompileFlags (xsltStylesheetPtr style,256 const xmlChar *str,257 int flags);258 259#ifdef IN_LIBXSLT260/** DOC_DISABLE */261#define XSLT_SOURCE_NODE_MASK 15u262#define XSLT_SOURCE_NODE_HAS_KEY 1u263#define XSLT_SOURCE_NODE_HAS_ID 2u264int265xsltGetSourceNodeFlags(xmlNodePtr node);266int267xsltSetSourceNodeFlags(xsltTransformContextPtr ctxt, xmlNodePtr node,268 int flags);269int270xsltClearSourceNodeFlags(xmlNodePtr node, int flags);271void **272xsltGetPSVIPtr(xmlNodePtr cur);273/** DOC_ENABLE */274#endif275 276#ifdef WITH_PROFILER277/*278 * Profiling.279 */280XSLTPUBFUN void XSLTCALL281 xsltSaveProfiling (xsltTransformContextPtr ctxt,282 FILE *output);283XSLTPUBFUN xmlDocPtr XSLTCALL284 xsltGetProfileInformation (xsltTransformContextPtr ctxt);285 286XSLTPUBFUN long XSLTCALL287 xsltTimestamp (void);288XSLTPUBFUN void XSLTCALL289 xsltCalibrateAdjust (long delta);290#endif291 292/**293 * XSLT_TIMESTAMP_TICS_PER_SEC:294 *295 * Sampling precision for profiling296 */297#define XSLT_TIMESTAMP_TICS_PER_SEC 100000l298 299/*300 * Hooks for the debugger.301 */302 303typedef enum {304 XSLT_DEBUG_NONE = 0, /* no debugging allowed */305 XSLT_DEBUG_INIT,306 XSLT_DEBUG_STEP,307 XSLT_DEBUG_STEPOUT,308 XSLT_DEBUG_NEXT,309 XSLT_DEBUG_STOP,310 XSLT_DEBUG_CONT,311 XSLT_DEBUG_RUN,312 XSLT_DEBUG_RUN_RESTART,313 XSLT_DEBUG_QUIT314} xsltDebugStatusCodes;315 316XSLTPUBVAR int xslDebugStatus;317 318typedef void (*xsltHandleDebuggerCallback) (xmlNodePtr cur, xmlNodePtr node,319 xsltTemplatePtr templ, xsltTransformContextPtr ctxt);320typedef int (*xsltAddCallCallback) (xsltTemplatePtr templ, xmlNodePtr source);321typedef void (*xsltDropCallCallback) (void);322 323XSLTPUBFUN int XSLTCALL324 xsltGetDebuggerStatus (void);325#ifdef WITH_DEBUGGER326XSLTPUBFUN void XSLTCALL327 xsltSetDebuggerStatus (int value);328XSLTPUBFUN int XSLTCALL329 xsltSetDebuggerCallbacks (int no, void *block);330XSLTPUBFUN int XSLTCALL331 xslAddCall (xsltTemplatePtr templ,332 xmlNodePtr source);333XSLTPUBFUN void XSLTCALL334 xslDropCall (void);335#endif336 337#ifdef __cplusplus338}339#endif340 341#endif /* __XML_XSLTUTILS_H__ */342 343 344 