| Viewing file:  xsltutils.h (8.1 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
/** Summary: set of utilities for the XSLT engine
 * Description: interfaces for the utilities module of the XSLT engine.
 *              things like message handling, profiling, and other
 *              generally useful routines.
 *
 * Copy: See Copyright for the status of this software.
 *
 * Author: Daniel Veillard
 */
 
 #ifndef __XML_XSLTUTILS_H__
 #define __XML_XSLTUTILS_H__
 
 #include <libxslt/xsltconfig.h>
 #ifdef HAVE_STDARG_H
 #include <stdarg.h>
 #endif
 #include <libxml/xpath.h>
 #include <libxml/dict.h>
 #include <libxml/xmlerror.h>
 #include "xsltexports.h"
 #include "xsltInternals.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /**
 * XSLT_TODO:
 *
 * Macro to flag unimplemented blocks.
 */
 #define XSLT_TODO                            \
 xsltGenericError(xsltGenericErrorContext,                \
 "Unimplemented block at %s:%d\n",                \
 __FILE__, __LINE__);
 
 /**
 * XSLT_STRANGE:
 *
 * Macro to flag that a problem was detected internally.
 */
 #define XSLT_STRANGE                            \
 xsltGenericError(xsltGenericErrorContext,                \
 "Internal error at %s:%d\n",                \
 __FILE__, __LINE__);
 
 /**
 * IS_XSLT_ELEM:
 *
 * Checks that the element pertains to XSLT namespace.
 */
 #define IS_XSLT_ELEM(n)                            \
 (((n) != NULL) && ((n)->type == XML_ELEMENT_NODE) &&                \
 ((n)->ns != NULL) && (xmlStrEqual((n)->ns->href, XSLT_NAMESPACE)))
 
 /**
 * IS_XSLT_NAME:
 *
 * Checks the value of an element in XSLT namespace.
 */
 #define IS_XSLT_NAME(n, val)                        \
 (xmlStrEqual((n)->name, (const xmlChar *) (val)))
 
 /**
 * IS_XSLT_REAL_NODE:
 *
 * Check that a node is a 'real' one: document, element, text or attribute.
 */
 #define IS_XSLT_REAL_NODE(n)                        \
 (((n) != NULL) &&                            \
 (((n)->type == XML_ELEMENT_NODE) ||                \
 ((n)->type == XML_TEXT_NODE) ||                    \
 ((n)->type == XML_CDATA_SECTION_NODE) ||                \
 ((n)->type == XML_ATTRIBUTE_NODE) ||                \
 ((n)->type == XML_DOCUMENT_NODE) ||                \
 ((n)->type == XML_HTML_DOCUMENT_NODE) ||                \
 ((n)->type == XML_COMMENT_NODE) ||                \
 ((n)->type == XML_PI_NODE)))
 
 /*
 * Our own version of namespaced attributes lookup.
 */
 XSLTPUBFUN xmlChar * XSLTCALL
 xsltGetNsProp    (xmlNodePtr node,
 const xmlChar *name,
 const xmlChar *nameSpace);
 XSLTPUBFUN const xmlChar * XSLTCALL
 xsltGetCNsProp    (xsltStylesheetPtr style,
 xmlNodePtr node,
 const xmlChar *name,
 const xmlChar *nameSpace);
 XSLTPUBFUN int XSLTCALL
 xsltGetUTF8Char    (const unsigned char *utf,
 int *len);
 
 /*
 * XSLT Debug Tracing Tracing Types
 */
 typedef enum {
 XSLT_TRACE_ALL =        -1,
 XSLT_TRACE_NONE =        0,
 XSLT_TRACE_COPY_TEXT =        1<<0,
 XSLT_TRACE_PROCESS_NODE =    1<<1,
 XSLT_TRACE_APPLY_TEMPLATE =    1<<2,
 XSLT_TRACE_COPY =        1<<3,
 XSLT_TRACE_COMMENT =        1<<4,
 XSLT_TRACE_PI =            1<<5,
 XSLT_TRACE_COPY_OF =        1<<6,
 XSLT_TRACE_VALUE_OF =        1<<7,
 XSLT_TRACE_CALL_TEMPLATE =    1<<8,
 XSLT_TRACE_APPLY_TEMPLATES =    1<<9,
 XSLT_TRACE_CHOOSE =        1<<10,
 XSLT_TRACE_IF =            1<<11,
 XSLT_TRACE_FOR_EACH =        1<<12,
 XSLT_TRACE_STRIP_SPACES =    1<<13,
 XSLT_TRACE_TEMPLATES =        1<<14,
 XSLT_TRACE_KEYS =        1<<15,
 XSLT_TRACE_VARIABLES =        1<<16
 } xsltDebugTraceCodes;
 
 /**
 * XSLT_TRACE:
 *
 * Control the type of xsl debugtrace messages emitted.
 */
 #define XSLT_TRACE(ctxt,code,call)    \
 if (ctxt->traceCode && (*(ctxt->traceCode) & code)) \
 call
 
 XSLTPUBFUN void XSLTCALL
 xsltDebugSetDefaultTrace(xsltDebugTraceCodes val);
 XSLTPUBFUN xsltDebugTraceCodes XSLTCALL
 xsltDebugGetDefaultTrace(void);
 
 /*
 * XSLT specific error and debug reporting functions.
 */
 XSLTPUBVAR xmlGenericErrorFunc xsltGenericError;
 XSLTPUBVAR void *xsltGenericErrorContext;
 XSLTPUBVAR xmlGenericErrorFunc xsltGenericDebug;
 XSLTPUBVAR void *xsltGenericDebugContext;
 
 XSLTPUBFUN void XSLTCALL
 xsltPrintErrorContext        (xsltTransformContextPtr ctxt,
 xsltStylesheetPtr style,
 xmlNodePtr node);
 XSLTPUBFUN void XSLTCALL
 xsltMessage            (xsltTransformContextPtr ctxt,
 xmlNodePtr node,
 xmlNodePtr inst);
 XSLTPUBFUN void XSLTCALL
 xsltSetGenericErrorFunc        (void *ctx,
 xmlGenericErrorFunc handler);
 XSLTPUBFUN void XSLTCALL
 xsltSetGenericDebugFunc        (void *ctx,
 xmlGenericErrorFunc handler);
 XSLTPUBFUN void XSLTCALL
 xsltSetTransformErrorFunc    (xsltTransformContextPtr ctxt,
 void *ctx,
 xmlGenericErrorFunc handler);
 XSLTPUBFUN void XSLTCALL
 xsltTransformError        (xsltTransformContextPtr ctxt,
 xsltStylesheetPtr style,
 xmlNodePtr node,
 const char *msg,
 ...) LIBXSLT_ATTR_FORMAT(4,5);
 
 XSLTPUBFUN int XSLTCALL
 xsltSetCtxtParseOptions        (xsltTransformContextPtr ctxt,
 int options);
 /*
 * Sorting.
 */
 
 XSLTPUBFUN void XSLTCALL
 xsltDocumentSortFunction    (xmlNodeSetPtr list);
 XSLTPUBFUN void XSLTCALL
 xsltSetSortFunc            (xsltSortFunc handler);
 XSLTPUBFUN void XSLTCALL
 xsltSetCtxtSortFunc        (xsltTransformContextPtr ctxt,
 xsltSortFunc handler);
 XSLTPUBFUN void XSLTCALL
 xsltDefaultSortFunction        (xsltTransformContextPtr ctxt,
 xmlNodePtr *sorts,
 int nbsorts);
 XSLTPUBFUN void XSLTCALL
 xsltDoSortFunction        (xsltTransformContextPtr ctxt,
 xmlNodePtr * sorts,
 int nbsorts);
 XSLTPUBFUN xmlXPathObjectPtr * XSLTCALL
 xsltComputeSortResult        (xsltTransformContextPtr ctxt,
 xmlNodePtr sort);
 
 /*
 * QNames handling.
 */
 
 XSLTPUBFUN const xmlChar * XSLTCALL
 xsltSplitQName            (xmlDictPtr dict,
 const xmlChar *name,
 const xmlChar **prefix);
 XSLTPUBFUN const xmlChar * XSLTCALL
 xsltGetQNameURI            (xmlNodePtr node,
 xmlChar **name);
 
 XSLTPUBFUN const xmlChar * XSLTCALL
 xsltGetQNameURI2        (xsltStylesheetPtr style,
 xmlNodePtr node,
 const xmlChar **name);
 
 /*
 * Output, reuse libxml I/O buffers.
 */
 XSLTPUBFUN int XSLTCALL
 xsltSaveResultTo        (xmlOutputBufferPtr buf,
 xmlDocPtr result,
 xsltStylesheetPtr style);
 XSLTPUBFUN int XSLTCALL
 xsltSaveResultToFilename    (const char *URI,
 xmlDocPtr result,
 xsltStylesheetPtr style,
 int compression);
 XSLTPUBFUN int XSLTCALL
 xsltSaveResultToFile        (FILE *file,
 xmlDocPtr result,
 xsltStylesheetPtr style);
 XSLTPUBFUN int XSLTCALL
 xsltSaveResultToFd        (int fd,
 xmlDocPtr result,
 xsltStylesheetPtr style);
 XSLTPUBFUN int XSLTCALL
 xsltSaveResultToString          (xmlChar **doc_txt_ptr,
 int * doc_txt_len,
 xmlDocPtr result,
 xsltStylesheetPtr style);
 
 /*
 * XPath interface
 */
 XSLTPUBFUN xmlXPathCompExprPtr XSLTCALL
 xsltXPathCompile        (xsltStylesheetPtr style,
 const xmlChar *str);
 XSLTPUBFUN xmlXPathCompExprPtr XSLTCALL
 xsltXPathCompileFlags        (xsltStylesheetPtr style,
 const xmlChar *str,
 int flags);
 
 /*
 * Profiling.
 */
 XSLTPUBFUN void XSLTCALL
 xsltSaveProfiling        (xsltTransformContextPtr ctxt,
 FILE *output);
 XSLTPUBFUN xmlDocPtr XSLTCALL
 xsltGetProfileInformation    (xsltTransformContextPtr ctxt);
 
 XSLTPUBFUN long XSLTCALL
 xsltTimestamp            (void);
 XSLTPUBFUN void XSLTCALL
 xsltCalibrateAdjust        (long delta);
 
 /**
 * XSLT_TIMESTAMP_TICS_PER_SEC:
 *
 * Sampling precision for profiling
 */
 #define XSLT_TIMESTAMP_TICS_PER_SEC 100000l
 
 /*
 * Hooks for the debugger.
 */
 
 typedef enum {
 XSLT_DEBUG_NONE = 0, /* no debugging allowed */
 XSLT_DEBUG_INIT,
 XSLT_DEBUG_STEP,
 XSLT_DEBUG_STEPOUT,
 XSLT_DEBUG_NEXT,
 XSLT_DEBUG_STOP,
 XSLT_DEBUG_CONT,
 XSLT_DEBUG_RUN,
 XSLT_DEBUG_RUN_RESTART,
 XSLT_DEBUG_QUIT
 } xsltDebugStatusCodes;
 
 XSLTPUBVAR int xslDebugStatus;
 
 typedef void (*xsltHandleDebuggerCallback) (xmlNodePtr cur, xmlNodePtr node,
 xsltTemplatePtr templ, xsltTransformContextPtr ctxt);
 typedef int (*xsltAddCallCallback) (xsltTemplatePtr templ, xmlNodePtr source);
 typedef void (*xsltDropCallCallback) (void);
 
 XSLTPUBFUN void XSLTCALL
 xsltSetDebuggerStatus        (int value);
 XSLTPUBFUN int XSLTCALL
 xsltGetDebuggerStatus        (void);
 XSLTPUBFUN int XSLTCALL
 xsltSetDebuggerCallbacks    (int no, void *block);
 XSLTPUBFUN int XSLTCALL
 xslAddCall            (xsltTemplatePtr templ,
 xmlNodePtr source);
 XSLTPUBFUN void XSLTCALL
 xslDropCall            (void);
 
 #ifdef __cplusplus
 }
 #endif
 
 #endif /* __XML_XSLTUTILS_H__ */
 
 
 
 |