Path: blob/master/venv/Lib/site-packages/lxml/includes/libxslt/xsltutils.h
811 views
/*1* Summary: set of utilities for the XSLT engine2* Description: interfaces for the utilities module of the XSLT engine.3* things like message handling, profiling, and other4* generally useful routines.5*6* Copy: See Copyright for the status of this software.7*8* Author: Daniel Veillard9*/1011#ifndef __XML_XSLTUTILS_H__12#define __XML_XSLTUTILS_H__1314#include <libxslt/xsltconfig.h>15#ifdef HAVE_STDARG_H16#include <stdarg.h>17#endif18#include <libxml/xpath.h>19#include <libxml/dict.h>20#include <libxml/xmlerror.h>21#include "xsltexports.h"22#include "xsltInternals.h"2324#ifdef __cplusplus25extern "C" {26#endif2728/**29* XSLT_TODO:30*31* Macro to flag unimplemented blocks.32*/33#define XSLT_TODO \34xsltGenericError(xsltGenericErrorContext, \35"Unimplemented block at %s:%d\n", \36__FILE__, __LINE__);3738/**39* XSLT_STRANGE:40*41* Macro to flag that a problem was detected internally.42*/43#define XSLT_STRANGE \44xsltGenericError(xsltGenericErrorContext, \45"Internal error at %s:%d\n", \46__FILE__, __LINE__);4748/**49* IS_XSLT_ELEM:50*51* Checks that the element pertains to XSLT namespace.52*/53#define IS_XSLT_ELEM(n) \54(((n) != NULL) && ((n)->type == XML_ELEMENT_NODE) && \55((n)->ns != NULL) && (xmlStrEqual((n)->ns->href, XSLT_NAMESPACE)))5657/**58* IS_XSLT_NAME:59*60* Checks the value of an element in XSLT namespace.61*/62#define IS_XSLT_NAME(n, val) \63(xmlStrEqual((n)->name, (const xmlChar *) (val)))6465/**66* IS_XSLT_REAL_NODE:67*68* Check that a node is a 'real' one: document, element, text or attribute.69*/70#define IS_XSLT_REAL_NODE(n) \71(((n) != NULL) && \72(((n)->type == XML_ELEMENT_NODE) || \73((n)->type == XML_TEXT_NODE) || \74((n)->type == XML_CDATA_SECTION_NODE) || \75((n)->type == XML_ATTRIBUTE_NODE) || \76((n)->type == XML_DOCUMENT_NODE) || \77((n)->type == XML_HTML_DOCUMENT_NODE) || \78((n)->type == XML_COMMENT_NODE) || \79((n)->type == XML_PI_NODE)))8081/*82* Our own version of namespaced atributes lookup.83*/84XSLTPUBFUN xmlChar * XSLTCALL85xsltGetNsProp (xmlNodePtr node,86const xmlChar *name,87const xmlChar *nameSpace);88XSLTPUBFUN const xmlChar * XSLTCALL89xsltGetCNsProp (xsltStylesheetPtr style,90xmlNodePtr node,91const xmlChar *name,92const xmlChar *nameSpace);93XSLTPUBFUN int XSLTCALL94xsltGetUTF8Char (const unsigned char *utf,95int *len);9697/*98* XSLT Debug Tracing Tracing Types99*/100typedef enum {101XSLT_TRACE_ALL = -1,102XSLT_TRACE_NONE = 0,103XSLT_TRACE_COPY_TEXT = 1<<0,104XSLT_TRACE_PROCESS_NODE = 1<<1,105XSLT_TRACE_APPLY_TEMPLATE = 1<<2,106XSLT_TRACE_COPY = 1<<3,107XSLT_TRACE_COMMENT = 1<<4,108XSLT_TRACE_PI = 1<<5,109XSLT_TRACE_COPY_OF = 1<<6,110XSLT_TRACE_VALUE_OF = 1<<7,111XSLT_TRACE_CALL_TEMPLATE = 1<<8,112XSLT_TRACE_APPLY_TEMPLATES = 1<<9,113XSLT_TRACE_CHOOSE = 1<<10,114XSLT_TRACE_IF = 1<<11,115XSLT_TRACE_FOR_EACH = 1<<12,116XSLT_TRACE_STRIP_SPACES = 1<<13,117XSLT_TRACE_TEMPLATES = 1<<14,118XSLT_TRACE_KEYS = 1<<15,119XSLT_TRACE_VARIABLES = 1<<16120} xsltDebugTraceCodes;121122/**123* XSLT_TRACE:124*125* Control the type of xsl debugtrace messages emitted.126*/127#define XSLT_TRACE(ctxt,code,call) \128if (ctxt->traceCode && (*(ctxt->traceCode) & code)) \129call130131XSLTPUBFUN void XSLTCALL132xsltDebugSetDefaultTrace(xsltDebugTraceCodes val);133XSLTPUBFUN xsltDebugTraceCodes XSLTCALL134xsltDebugGetDefaultTrace(void);135136/*137* XSLT specific error and debug reporting functions.138*/139XSLTPUBVAR xmlGenericErrorFunc xsltGenericError;140XSLTPUBVAR void *xsltGenericErrorContext;141XSLTPUBVAR xmlGenericErrorFunc xsltGenericDebug;142XSLTPUBVAR void *xsltGenericDebugContext;143144XSLTPUBFUN void XSLTCALL145xsltPrintErrorContext (xsltTransformContextPtr ctxt,146xsltStylesheetPtr style,147xmlNodePtr node);148XSLTPUBFUN void XSLTCALL149xsltMessage (xsltTransformContextPtr ctxt,150xmlNodePtr node,151xmlNodePtr inst);152XSLTPUBFUN void XSLTCALL153xsltSetGenericErrorFunc (void *ctx,154xmlGenericErrorFunc handler);155XSLTPUBFUN void XSLTCALL156xsltSetGenericDebugFunc (void *ctx,157xmlGenericErrorFunc handler);158XSLTPUBFUN void XSLTCALL159xsltSetTransformErrorFunc (xsltTransformContextPtr ctxt,160void *ctx,161xmlGenericErrorFunc handler);162XSLTPUBFUN void XSLTCALL163xsltTransformError (xsltTransformContextPtr ctxt,164xsltStylesheetPtr style,165xmlNodePtr node,166const char *msg,167...) LIBXSLT_ATTR_FORMAT(4,5);168169XSLTPUBFUN int XSLTCALL170xsltSetCtxtParseOptions (xsltTransformContextPtr ctxt,171int options);172/*173* Sorting.174*/175176XSLTPUBFUN void XSLTCALL177xsltDocumentSortFunction (xmlNodeSetPtr list);178XSLTPUBFUN void XSLTCALL179xsltSetSortFunc (xsltSortFunc handler);180XSLTPUBFUN void XSLTCALL181xsltSetCtxtSortFunc (xsltTransformContextPtr ctxt,182xsltSortFunc handler);183XSLTPUBFUN void XSLTCALL184xsltDefaultSortFunction (xsltTransformContextPtr ctxt,185xmlNodePtr *sorts,186int nbsorts);187XSLTPUBFUN void XSLTCALL188xsltDoSortFunction (xsltTransformContextPtr ctxt,189xmlNodePtr * sorts,190int nbsorts);191XSLTPUBFUN xmlXPathObjectPtr * XSLTCALL192xsltComputeSortResult (xsltTransformContextPtr ctxt,193xmlNodePtr sort);194195/*196* QNames handling.197*/198199XSLTPUBFUN const xmlChar * XSLTCALL200xsltSplitQName (xmlDictPtr dict,201const xmlChar *name,202const xmlChar **prefix);203XSLTPUBFUN const xmlChar * XSLTCALL204xsltGetQNameURI (xmlNodePtr node,205xmlChar **name);206207XSLTPUBFUN const xmlChar * XSLTCALL208xsltGetQNameURI2 (xsltStylesheetPtr style,209xmlNodePtr node,210const xmlChar **name);211212/*213* Output, reuse libxml I/O buffers.214*/215XSLTPUBFUN int XSLTCALL216xsltSaveResultTo (xmlOutputBufferPtr buf,217xmlDocPtr result,218xsltStylesheetPtr style);219XSLTPUBFUN int XSLTCALL220xsltSaveResultToFilename (const char *URI,221xmlDocPtr result,222xsltStylesheetPtr style,223int compression);224XSLTPUBFUN int XSLTCALL225xsltSaveResultToFile (FILE *file,226xmlDocPtr result,227xsltStylesheetPtr style);228XSLTPUBFUN int XSLTCALL229xsltSaveResultToFd (int fd,230xmlDocPtr result,231xsltStylesheetPtr style);232XSLTPUBFUN int XSLTCALL233xsltSaveResultToString (xmlChar **doc_txt_ptr,234int * doc_txt_len,235xmlDocPtr result,236xsltStylesheetPtr style);237238/*239* XPath interface240*/241XSLTPUBFUN xmlXPathCompExprPtr XSLTCALL242xsltXPathCompile (xsltStylesheetPtr style,243const xmlChar *str);244XSLTPUBFUN xmlXPathCompExprPtr XSLTCALL245xsltXPathCompileFlags (xsltStylesheetPtr style,246const xmlChar *str,247int flags);248249/*250* Profiling.251*/252XSLTPUBFUN void XSLTCALL253xsltSaveProfiling (xsltTransformContextPtr ctxt,254FILE *output);255XSLTPUBFUN xmlDocPtr XSLTCALL256xsltGetProfileInformation (xsltTransformContextPtr ctxt);257258XSLTPUBFUN long XSLTCALL259xsltTimestamp (void);260XSLTPUBFUN void XSLTCALL261xsltCalibrateAdjust (long delta);262263/**264* XSLT_TIMESTAMP_TICS_PER_SEC:265*266* Sampling precision for profiling267*/268#define XSLT_TIMESTAMP_TICS_PER_SEC 100000l269270/*271* Hooks for the debugger.272*/273274typedef enum {275XSLT_DEBUG_NONE = 0, /* no debugging allowed */276XSLT_DEBUG_INIT,277XSLT_DEBUG_STEP,278XSLT_DEBUG_STEPOUT,279XSLT_DEBUG_NEXT,280XSLT_DEBUG_STOP,281XSLT_DEBUG_CONT,282XSLT_DEBUG_RUN,283XSLT_DEBUG_RUN_RESTART,284XSLT_DEBUG_QUIT285} xsltDebugStatusCodes;286287XSLTPUBVAR int xslDebugStatus;288289typedef void (*xsltHandleDebuggerCallback) (xmlNodePtr cur, xmlNodePtr node,290xsltTemplatePtr templ, xsltTransformContextPtr ctxt);291typedef int (*xsltAddCallCallback) (xsltTemplatePtr templ, xmlNodePtr source);292typedef void (*xsltDropCallCallback) (void);293294XSLTPUBFUN void XSLTCALL295xsltSetDebuggerStatus (int value);296XSLTPUBFUN int XSLTCALL297xsltGetDebuggerStatus (void);298XSLTPUBFUN int XSLTCALL299xsltSetDebuggerCallbacks (int no, void *block);300XSLTPUBFUN int XSLTCALL301xslAddCall (xsltTemplatePtr templ,302xmlNodePtr source);303XSLTPUBFUN void XSLTCALL304xslDropCall (void);305306#ifdef __cplusplus307}308#endif309310#endif /* __XML_XSLTUTILS_H__ */311312313314315