From 2abd71732c5d4cb31a3177262c605920918d7b54 Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Mon, 18 Mar 2002 15:24:51 +0000 Subject: [PATCH] applied the same kind of fixes to the Python Makefiels than to libxml2 * python/Makefile.am python/generator.py python/libxslt.c python/types.c python/tests/Makefile.am: applied the same kind of fixes to the Python Makefiels than to libxml2 ones. Updates and cleanups too. Daniel --- ChangeLog | 7 + doc/libxslt-api.xml | 180 ++--- doc/libxslt-decl.txt | 1354 +++++++++++++++++++------------------- doc/libxslt-refs.xml | 298 ++++----- python/Makefile.am | 41 +- python/generator.py | 26 +- python/libxslt.c | 121 +--- python/tests/Makefile.am | 2 +- python/types.c | 403 ++++++++---- 9 files changed, 1265 insertions(+), 1167 deletions(-) diff --git a/ChangeLog b/ChangeLog index 77b47565..1db7cfb9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Mon Mar 18 16:22:46 CET 2002 Daniel Veillard + + * python/Makefile.am python/generator.py python/libxslt.c + python/types.c python/tests/Makefile.am: applied the same kind of + fixes to the Python Makefiels than to libxml2 ones. Updates + and cleanups too. + Sat Mar 16 23:48:21 CET 2002 Daniel Veillard * libexslt/common.c libxslt/pattern.c libxslt/transform.c diff --git a/doc/libxslt-api.xml b/doc/libxslt-api.xml index 3eb421f0..006888ba 100644 --- a/doc/libxslt-api.xml +++ b/doc/libxslt-api.xml @@ -31,10 +31,19 @@ - - - - + + + + + + + + + + + + + @@ -84,15 +93,10 @@ - - - - - - - - - + + + + @@ -141,9 +145,77 @@ - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -177,62 +249,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -241,22 +257,6 @@ - - - - - - - - - - - - - - - - @@ -326,7 +326,7 @@ the version string like "1.2.3" - + This macro is needed on Win32 when using MSVC. It enables the client code to access exported variables. It should expand to nothing when compiling this library itself, but must expand to __declspec(dllimport) when a client includes the library header and that only if it links dynamically against this library. @@ -792,7 +792,7 @@ - + Looks up an extension element. ctxt can be NULL to search only in module elements. diff --git a/doc/libxslt-decl.txt b/doc/libxslt-decl.txt index dca8a50c..0591a30b 100644 --- a/doc/libxslt-decl.txt +++ b/doc/libxslt-decl.txt @@ -1,33 +1,4 @@ -XSLT_DEFAULT_VERSION -#define XSLT_DEFAULT_VERSION "1.0" - - -XSLT_DEFAULT_VENDOR -#define XSLT_DEFAULT_VENDOR "libxslt" - - -XSLT_DEFAULT_URL -#define XSLT_DEFAULT_URL "http://xmlsoft.org/XSLT/" - - -XSLT_NAMESPACE -#define XSLT_NAMESPACE ((xmlChar *) "http://www.w3.org/1999/XSL/Transform") - - -LIBXSLT_PUBLIC -#define LIBXSLT_PUBLIC __declspec(dllimport) - - -LIBXSLT_PUBLIC -#define LIBXSLT_PUBLIC - - -xsltCleanupGlobals -void -void - - LIBXSLT_DOTTED_VERSION #define LIBXSLT_DOTTED_VERSION "1.0.13" @@ -71,615 +42,97 @@ void LIBXSLT_PUBLIC #define LIBXSLT_PUBLIC - -LIBXSLT_DOTTED_VERSION -#define LIBXSLT_DOTTED_VERSION "1.0.13" - - -LIBXSLT_VERSION -#define LIBXSLT_VERSION 10013 - - -LIBXSLT_VERSION_STRING -#define LIBXSLT_VERSION_STRING "10013" - - -WITH_XSLT_DEBUG -#define WITH_XSLT_DEBUG - - -DEBUG_MEMORY -#define DEBUG_MEMORY - - -DEBUG_MEMORY_LOCATION -#define DEBUG_MEMORY_LOCATION - - -ATTRIBUTE_UNUSED -#define ATTRIBUTE_UNUSED - - -LIBXSLT_PUBLIC -#define LIBXSLT_PUBLIC __declspec(dllimport) - - -LIBXSLT_PUBLIC -#define LIBXSLT_PUBLIC - -xsltAddKey -int -xsltStylesheetPtr style,const xmlChar *name,const xmlChar *nameURI,const xmlChar *match,const xmlChar *use,xmlNodePtr inst - - -xsltGetKey -xmlNodeSetPtr -xsltTransformContextPtr ctxt,const xmlChar *name,const xmlChar *nameURI,const xmlChar *value - - -xsltInitCtxtKeys +xsltParseStylesheetAttributeSet void -xsltTransformContextPtr ctxt,xsltDocumentPtr doc +xsltStylesheetPtr style,xmlNodePtr cur -xsltFreeKeys +xsltFreeAttributeSetsHashes void xsltStylesheetPtr style -xsltFreeDocumentKeys +xsltApplyAttributeSet void -xsltDocumentPtr doc +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xmlChar *attributes - -xsltCompMatch - - -xsltCompMatchPtr -typedef xsltCompMatch *xsltCompMatchPtr; - + +XSLT_LIBXSLT_NAMESPACE +#define XSLT_LIBXSLT_NAMESPACE ((xmlChar *) "http://xmlsoft.org/XSLT/namespace") + + +XSLT_SAXON_NAMESPACE +#define XSLT_SAXON_NAMESPACE ((xmlChar *) "http://icl.com/saxon") + + +XSLT_XT_NAMESPACE +#define XSLT_XT_NAMESPACE ((xmlChar *) "http://www.jclark.com/xt") + + +XSLT_XALAN_NAMESPACE +#define XSLT_XALAN_NAMESPACE ((xmlChar *) \ + "org.apache.xalan.xslt.extensions.Redirect") + + +XSLT_NORM_SAXON_NAMESPACE +#define XSLT_NORM_SAXON_NAMESPACE ((xmlChar *) \ + "http://nwalsh.com/xslt/ext/com.nwalsh.saxon.CVS") + -xsltCompilePattern -xsltCompMatchPtr -const xmlChar *pattern,xmlDocPtr doc,xmlNodePtr node,xsltStylesheetPtr style,xsltTransformContextPtr runtime - - -xsltFreeCompMatchList +xsltFunctionNodeSet void -xsltCompMatchPtr comp +xmlXPathParserContextPtr ctxt,int nargs -xsltTestCompMatchList -int -xsltTransformContextPtr ctxt,xmlNodePtr node,xsltCompMatchPtr comp - - -xsltAddTemplate -int -xsltStylesheetPtr style,xsltTemplatePtr cur,const xmlChar *mode,const xmlChar *modeURI - - -xsltGetTemplate -xsltTemplatePtr -xsltTransformContextPtr ctxt,xmlNodePtr node,xsltStylesheetPtr style - - -xsltFreeTemplateHashes +xsltDebug void -xsltStylesheetPtr style +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp -xsltCleanupTemplates +xsltRegisterExtras void -xsltStylesheetPtr style +xsltTransformContextPtr ctxt -xsltMatchPattern -int -xsltTransformContextPtr ctxt,xmlNodePtr node,const xmlChar *pattern,xmlDocPtr ctxtdoc,xmlNodePtr ctxtnode - - -xsltSetXIncludeDefault +xsltRegisterAllExtras void -int xinclude - - -xsltGetXIncludeDefault -int void -xsltNewTransformContext -xsltTransformContextPtr +xsltNewDocument +xsltDocumentPtr +xsltTransformContextPtr ctxt,xmlDocPtr doc + + +xsltLoadDocument +xsltDocumentPtr +xsltTransformContextPtr ctxt,const xmlChar *URI + + +xsltFindDocument +xsltDocumentPtr +xsltTransformContextPtr ctxt,xmlDocPtr doc + + +xsltFreeDocuments +void +xsltTransformContextPtr ctxt + + +xsltLoadStyleDocument +xsltDocumentPtr +xsltStylesheetPtr style,const xmlChar *URI + + +xsltNewStyleDocument +xsltDocumentPtr xsltStylesheetPtr style,xmlDocPtr doc -xsltFreeTransformContext +xsltFreeStyleDocuments void -xsltTransformContextPtr ctxt - - -xsltApplyStylesheetUser -xmlDocPtr -xsltStylesheetPtr style,xmlDocPtr doc,const char **params,const char *output,FILE * profile,xsltTransformContextPtr userCtxt - - -xsltApplyStripSpaces -void -xsltTransformContextPtr ctxt,xmlNodePtr node - - -xsltExtElementLookup -xsltTransformFunction -xsltTransformContextPtr ctxt,const xmlChar *name,const xmlChar *URI - - -xsltApplyStylesheet -xmlDocPtr -xsltStylesheetPtr style,xmlDocPtr doc,const char **params - - -xsltProfileStylesheet -xmlDocPtr -xsltStylesheetPtr style,xmlDocPtr doc,const char **params,FILE * output - - -xsltRunStylesheet -int -xsltStylesheetPtr style,xmlDocPtr doc,const char **params,const char *output,xmlSAXHandlerPtr SAX,xmlOutputBufferPtr IObuf - - -xsltApplyOneTemplate -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr list,xsltTemplatePtr templ,xsltStackElemPtr params - - -xsltDocumentElem -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltSort -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltCopy -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltText -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltElement -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltComment -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltAttribute -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltProcessingInstruction -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltCopyOf -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltValueOf -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltNumber -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltApplyImports -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltCallTemplate -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltApplyTemplates -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltChoose -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltIf -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltForEach -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltRegisterAllElement -void -xsltTransformContextPtr ctxt - - -xslHandleDebugger -void -xmlNodePtr cur,xmlNodePtr node,xsltTemplatePtr templ,xsltTransformContextPtr ctxt - - -XSLT_TODO -#define XSLT_TODO \ - xsltGenericError(xsltGenericErrorContext, \ - "Unimplemented block at %s:%d\n", \ - __FILE__, __LINE__); - - -XSLT_STRANGE -#define XSLT_STRANGE \ - xsltGenericError(xsltGenericErrorContext, \ - "Internal error at %s:%d\n", \ - __FILE__, __LINE__); - - -IS_XSLT_ELEM -#define IS_XSLT_ELEM(n) \ - (((n) != NULL) && ((n)->ns != NULL) && \ - (xmlStrEqual((n)->ns->href, XSLT_NAMESPACE))) - - -IS_XSLT_NAME -#define IS_XSLT_NAME(n, val) \ - (xmlStrEqual((n)->name, (const xmlChar *) (val))) - - -IS_XSLT_REAL_NODE -#define IS_XSLT_REAL_NODE(n) \ - (((n) != NULL) && \ - (((n)->type == XML_ELEMENT_NODE) || \ - ((n)->type == XML_TEXT_NODE) || \ - ((n)->type == XML_ATTRIBUTE_NODE) || \ - ((n)->type == XML_DOCUMENT_NODE) || \ - ((n)->type == XML_HTML_DOCUMENT_NODE) || \ - ((n)->type == XML_DOCB_DOCUMENT_NODE))) - - -IS_XSLT_REAL_NODE -#define IS_XSLT_REAL_NODE(n) \ - (((n) != NULL) && \ - (((n)->type == XML_ELEMENT_NODE) || \ - ((n)->type == XML_TEXT_NODE) || \ - ((n)->type == XML_ATTRIBUTE_NODE) || \ - ((n)->type == XML_DOCUMENT_NODE) || \ - ((n)->type == XML_HTML_DOCUMENT_NODE))) - - -xsltGetNsProp -xmlChar * -xmlNodePtr node,const xmlChar *name,const xmlChar *nameSpace - - -xsltPrintErrorContext -void -xsltTransformContextPtr ctxt,xsltStylesheetPtr style,xmlNodePtr node - - -xsltMessage -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst - - -xsltSetGenericErrorFunc -void -void *ctx,xmlGenericErrorFunc handler - - -xsltSetGenericDebugFunc -void -void *ctx,xmlGenericErrorFunc handler - - -xsltDocumentSortFunction -void -xmlNodeSetPtr list - - -xsltDoSortFunction -void -xsltTransformContextPtr ctxt,xmlNodePtr *sorts,int nbsorts - - -xsltGetQNameURI -const xmlChar * -xmlNodePtr node,xmlChar **name - - -xsltSaveResultTo -int -xmlOutputBufferPtr buf,xmlDocPtr result,xsltStylesheetPtr style - - -xsltSaveResultToFilename -int -const char *URI,xmlDocPtr result,xsltStylesheetPtr style,int compression - - -xsltSaveResultToFile -int -FILE *file,xmlDocPtr result,xsltStylesheetPtr style - - -xsltSaveResultToFd -int -int fd,xmlDocPtr result,xsltStylesheetPtr style - - -xsltSaveProfiling -void -xsltTransformContextPtr ctxt,FILE *output - - -xsltTimestamp -long -void - - -xsltCalibrateAdjust -void -long delta - - -XSLT_TIMESTAMP_TICS_PER_SEC -#define XSLT_TIMESTAMP_TICS_PER_SEC 100000l - - -xsltDebugStatusCodes -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; - - -xsltHandleDebuggerCallback -void -xmlNodePtr cur, xmlNodePtr node, - xsltTemplatePtr templ, xsltTransformContextPtr ctxt - - -xsltAddCallCallback -int -xsltTemplatePtr templ, xmlNodePtr source - - -xsltDropCallCallback -void -void - - -xsltSetDebuggerCallbacks -int -int no, void *block - - -xslAddCall -int -xsltTemplatePtr templ,xmlNodePtr source - - -xslDropCall -void -void - - -xsltEvalXPathPredicate -int -xsltTransformContextPtr ctxt,xmlXPathCompExprPtr comp,xmlNsPtr *nsList,int nsNr - - -xsltEvalTemplateString -xmlChar * -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr parent - - -xsltEvalAttrValueTemplate -xmlChar * -xsltTransformContextPtr ctxt,xmlNodePtr node,const xmlChar *name,const xmlChar *ns - - -xsltEvalStaticAttrValueTemplate -xmlChar * -xsltStylesheetPtr style,xmlNodePtr node,const xmlChar *name,const xmlChar *ns,int *found - - -xsltEvalXPathString -xmlChar * -xsltTransformContextPtr ctxt,xmlXPathCompExprPtr comp - - -xsltTemplateProcess -xmlNodePtr * -xsltTransformContextPtr ctxt,xmlNodePtr node - - -xsltAttrListTemplateProcess -xmlAttrPtr -xsltTransformContextPtr ctxt,xmlNodePtr target,xmlAttrPtr cur - - -xsltAttrTemplateProcess -xmlAttrPtr -xsltTransformContextPtr ctxt,xmlNodePtr target,xmlAttrPtr attr - - -xsltAttrTemplateValueProcess -xmlChar * -xsltTransformContextPtr ctxt,const xmlChar* attr - - -XSLT_REGISTER_VARIABLE_LOOKUP -#define XSLT_REGISTER_VARIABLE_LOOKUP(ctxt) \ - xmlXPathRegisterVariableLookup((ctxt)->xpathCtxt, \ - xsltXPathVariableLookup, (void *)(ctxt)); \ - xsltRegisterAllFunctions((ctxt)->xpathCtxt); \ - xsltRegisterAllElement(ctxt); \ - (ctxt)->xpathCtxt->extra = ctxt - - -xsltEvalGlobalVariables -int -xsltTransformContextPtr ctxt - - -xsltEvalUserParams -int -xsltTransformContextPtr ctxt,const char **params - - -xsltQuoteUserParams -int -xsltTransformContextPtr ctxt,const char **params - - -xsltEvalOneUserParam -int -xsltTransformContextPtr ctxt,const xmlChar * name,const xmlChar * value - - -xsltQuoteOneUserParam -int -xsltTransformContextPtr ctxt,const xmlChar * name,const xmlChar * value - - -xsltParseGlobalVariable -void -xsltStylesheetPtr style,xmlNodePtr cur - - -xsltParseGlobalParam -void -xsltStylesheetPtr style,xmlNodePtr cur - - -xsltParseStylesheetVariable -void -xsltTransformContextPtr ctxt,xmlNodePtr cur - - -xsltParseStylesheetParam -void -xsltTransformContextPtr ctxt,xmlNodePtr cur - - -xsltParseStylesheetCallerParam -xsltStackElemPtr -xsltTransformContextPtr ctxt,xmlNodePtr cur - - -xsltAddStackElemList -int -xsltTransformContextPtr ctxt,xsltStackElemPtr elems - - -xsltFreeGlobalVariables -void -xsltTransformContextPtr ctxt - - -xsltVariableLookup -xmlXPathObjectPtr -xsltTransformContextPtr ctxt,const xmlChar *name,const xmlChar *ns_uri - - -xsltXPathVariableLookup -xmlXPathObjectPtr -void *ctxt,const xmlChar *name,const xmlChar *ns_uri - - -XSLT_REGISTER_FUNCTION_LOOKUP -#define XSLT_REGISTER_FUNCTION_LOOKUP(ctxt) \ - xmlXPathRegisterFuncLookup((ctxt)->xpathCtxt, \ - (xmlXPathFuncLookupFunc) xsltXPathFunctionLookup, \ - (void *)(ctxt->xpathCtxt)); - - -xsltXPathFunctionLookup -xmlXPathFunction -xmlXPathContextPtr ctxt,const xmlChar *name,const xmlChar *ns_uri - - -xsltDocumentFunction -void -xmlXPathParserContextPtr ctxt,int nargs - - -xsltKeyFunction -void -xmlXPathParserContextPtr ctxt,int nargs - - -xsltUnparsedEntityURIFunction -void -xmlXPathParserContextPtr ctxt,int nargs - - -xsltFormatNumberFunction -void -xmlXPathParserContextPtr ctxt,int nargs - - -xsltGenerateIdFunction -void -xmlXPathParserContextPtr ctxt,int nargs - - -xsltSystemPropertyFunction -void -xmlXPathParserContextPtr ctxt,int nargs - - -xsltElementAvailableFunction -void -xmlXPathParserContextPtr ctxt,int nargs - - -xsltFunctionAvailableFunction -void -xmlXPathParserContextPtr ctxt,int nargs - - -xsltRegisterAllFunctions -void -xmlXPathContextPtr ctxt +xsltStylesheetPtr style xsltStyleExtInitFunction @@ -869,6 +322,63 @@ xsltStylesheetPtr style,xmlNodePtr inst void +XSLT_REGISTER_FUNCTION_LOOKUP +#define XSLT_REGISTER_FUNCTION_LOOKUP(ctxt) \ + xmlXPathRegisterFuncLookup((ctxt)->xpathCtxt, \ + (xmlXPathFuncLookupFunc) xsltXPathFunctionLookup, \ + (void *)(ctxt->xpathCtxt)); + + +xsltXPathFunctionLookup +xmlXPathFunction +xmlXPathContextPtr ctxt,const xmlChar *name,const xmlChar *ns_uri + + +xsltDocumentFunction +void +xmlXPathParserContextPtr ctxt,int nargs + + +xsltKeyFunction +void +xmlXPathParserContextPtr ctxt,int nargs + + +xsltUnparsedEntityURIFunction +void +xmlXPathParserContextPtr ctxt,int nargs + + +xsltFormatNumberFunction +void +xmlXPathParserContextPtr ctxt,int nargs + + +xsltGenerateIdFunction +void +xmlXPathParserContextPtr ctxt,int nargs + + +xsltSystemPropertyFunction +void +xmlXPathParserContextPtr ctxt,int nargs + + +xsltElementAvailableFunction +void +xmlXPathParserContextPtr ctxt,int nargs + + +xsltFunctionAvailableFunction +void +xmlXPathParserContextPtr ctxt,int nargs + + +xsltRegisterAllFunctions +void +xmlXPathContextPtr ctxt + + XSLT_GET_IMPORT_PTR #define XSLT_GET_IMPORT_PTR(res, style, name) { \ xsltStylesheetPtr st = style; \ @@ -919,20 +429,42 @@ xsltTransformContextPtr ctxt,xmlNodePtr node xsltTransformContextPtr ctxt,const xmlChar *name,const xmlChar *nameURI -xsltParseStylesheetAttributeSet -void -xsltStylesheetPtr style,xmlNodePtr cur +xsltAddKey +int +xsltStylesheetPtr style,const xmlChar *name,const xmlChar *nameURI,const xmlChar *match,const xmlChar *use,xmlNodePtr inst -xsltFreeAttributeSetsHashes +xsltGetKey +xmlNodeSetPtr +xsltTransformContextPtr ctxt,const xmlChar *name,const xmlChar *nameURI,const xmlChar *value + + +xsltInitCtxtKeys +void +xsltTransformContextPtr ctxt,xsltDocumentPtr doc + + +xsltFreeKeys void xsltStylesheetPtr style -xsltApplyAttributeSet +xsltFreeDocumentKeys void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xmlChar *attributes +xsltDocumentPtr doc + +IN_LIBXSLT +#define IN_LIBXSLT + + +LIBXSLT_PUBLIC +#define LIBXSLT_PUBLIC __declspec(dllimport) + + +LIBXSLT_PUBLIC +#define LIBXSLT_PUBLIC + xsltNamespaceAlias void @@ -963,82 +495,52 @@ xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNsPtr cur void xsltStylesheetPtr style + +xsltCompMatch + + +xsltCompMatchPtr +typedef xsltCompMatch *xsltCompMatchPtr; + -xsltNewDocument -xsltDocumentPtr -xsltTransformContextPtr ctxt,xmlDocPtr doc +xsltCompilePattern +xsltCompMatchPtr +const xmlChar *pattern,xmlDocPtr doc,xmlNodePtr node,xsltStylesheetPtr style,xsltTransformContextPtr runtime -xsltLoadDocument -xsltDocumentPtr -xsltTransformContextPtr ctxt,const xmlChar *URI - - -xsltFindDocument -xsltDocumentPtr -xsltTransformContextPtr ctxt,xmlDocPtr doc - - -xsltFreeDocuments +xsltFreeCompMatchList void -xsltTransformContextPtr ctxt +xsltCompMatchPtr comp -xsltLoadStyleDocument -xsltDocumentPtr -xsltStylesheetPtr style,const xmlChar *URI +xsltTestCompMatchList +int +xsltTransformContextPtr ctxt,xmlNodePtr node,xsltCompMatchPtr comp -xsltNewStyleDocument -xsltDocumentPtr -xsltStylesheetPtr style,xmlDocPtr doc +xsltAddTemplate +int +xsltStylesheetPtr style,xsltTemplatePtr cur,const xmlChar *mode,const xmlChar *modeURI -xsltFreeStyleDocuments +xsltGetTemplate +xsltTemplatePtr +xsltTransformContextPtr ctxt,xmlNodePtr node,xsltStylesheetPtr style + + +xsltFreeTemplateHashes void xsltStylesheetPtr style - -XSLT_LIBXSLT_NAMESPACE -#define XSLT_LIBXSLT_NAMESPACE ((xmlChar *) "http://xmlsoft.org/XSLT/namespace") - - -XSLT_SAXON_NAMESPACE -#define XSLT_SAXON_NAMESPACE ((xmlChar *) "http://icl.com/saxon") - - -XSLT_XT_NAMESPACE -#define XSLT_XT_NAMESPACE ((xmlChar *) "http://www.jclark.com/xt") - - -XSLT_XALAN_NAMESPACE -#define XSLT_XALAN_NAMESPACE ((xmlChar *) \ - "org.apache.xalan.xslt.extensions.Redirect") - - -XSLT_NORM_SAXON_NAMESPACE -#define XSLT_NORM_SAXON_NAMESPACE ((xmlChar *) \ - "http://nwalsh.com/xslt/ext/com.nwalsh.saxon.CVS") - -xsltFunctionNodeSet +xsltCleanupTemplates void -xmlXPathParserContextPtr ctxt,int nargs +xsltStylesheetPtr style -xsltDebug -void -xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp - - -xsltRegisterExtras -void -xsltTransformContextPtr ctxt - - -xsltRegisterAllExtras -void -void +xsltMatchPattern +int +xsltTransformContextPtr ctxt,xmlNodePtr node,const xmlChar *pattern,xmlDocPtr ctxtdoc,xmlNodePtr ctxtnode xsltExtMarker @@ -1059,9 +561,295 @@ xsltStylesheetPtr style,xmlNodePtr inst void xsltStylesheetPtr style + +xsltEvalXPathPredicate +int +xsltTransformContextPtr ctxt,xmlXPathCompExprPtr comp,xmlNsPtr *nsList,int nsNr + + +xsltEvalTemplateString +xmlChar * +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr parent + + +xsltEvalAttrValueTemplate +xmlChar * +xsltTransformContextPtr ctxt,xmlNodePtr node,const xmlChar *name,const xmlChar *ns + + +xsltEvalStaticAttrValueTemplate +xmlChar * +xsltStylesheetPtr style,xmlNodePtr node,const xmlChar *name,const xmlChar *ns,int *found + + +xsltEvalXPathString +xmlChar * +xsltTransformContextPtr ctxt,xmlXPathCompExprPtr comp + + +xsltTemplateProcess +xmlNodePtr * +xsltTransformContextPtr ctxt,xmlNodePtr node + + +xsltAttrListTemplateProcess +xmlAttrPtr +xsltTransformContextPtr ctxt,xmlNodePtr target,xmlAttrPtr cur + + +xsltAttrTemplateProcess +xmlAttrPtr +xsltTransformContextPtr ctxt,xmlNodePtr target,xmlAttrPtr attr + + +xsltAttrTemplateValueProcess +xmlChar * +xsltTransformContextPtr ctxt,const xmlChar* attr + + +xsltSetXIncludeDefault +void +int xinclude + + +xsltGetXIncludeDefault +int +void + + +xsltNewTransformContext +xsltTransformContextPtr +xsltStylesheetPtr style,xmlDocPtr doc + + +xsltFreeTransformContext +void +xsltTransformContextPtr ctxt + + +xsltApplyStylesheetUser +xmlDocPtr +xsltStylesheetPtr style,xmlDocPtr doc,const char **params,const char *output,FILE * profile,xsltTransformContextPtr userCtxt + + +xsltApplyStripSpaces +void +xsltTransformContextPtr ctxt,xmlNodePtr node + + +xsltExtElementLookup +xsltTransformFunction +xsltTransformContextPtr ctxt,const xmlChar *name,const xmlChar *URI + + +xsltApplyStylesheet +xmlDocPtr +xsltStylesheetPtr style,xmlDocPtr doc,const char **params + + +xsltProfileStylesheet +xmlDocPtr +xsltStylesheetPtr style,xmlDocPtr doc,const char **params,FILE * output + + +xsltRunStylesheet +int +xsltStylesheetPtr style,xmlDocPtr doc,const char **params,const char *output,xmlSAXHandlerPtr SAX,xmlOutputBufferPtr IObuf + + +xsltApplyOneTemplate +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr list,xsltTemplatePtr templ,xsltStackElemPtr params + + +xsltDocumentElem +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltSort +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltCopy +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltText +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltElement +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltComment +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltAttribute +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltProcessingInstruction +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltCopyOf +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltValueOf +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltNumber +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltApplyImports +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltCallTemplate +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltApplyTemplates +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltChoose +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltIf +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltForEach +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst,xsltStylePreCompPtr comp + + +xsltRegisterAllElement +void +xsltTransformContextPtr ctxt + + +xslHandleDebugger +void +xmlNodePtr cur,xmlNodePtr node,xsltTemplatePtr templ,xsltTransformContextPtr ctxt + -IN_LIBXSLT -#define IN_LIBXSLT +XSLT_REGISTER_VARIABLE_LOOKUP +#define XSLT_REGISTER_VARIABLE_LOOKUP(ctxt) \ + xmlXPathRegisterVariableLookup((ctxt)->xpathCtxt, \ + xsltXPathVariableLookup, (void *)(ctxt)); \ + xsltRegisterAllFunctions((ctxt)->xpathCtxt); \ + xsltRegisterAllElement(ctxt); \ + (ctxt)->xpathCtxt->extra = ctxt + + +xsltEvalGlobalVariables +int +xsltTransformContextPtr ctxt + + +xsltEvalUserParams +int +xsltTransformContextPtr ctxt,const char **params + + +xsltQuoteUserParams +int +xsltTransformContextPtr ctxt,const char **params + + +xsltEvalOneUserParam +int +xsltTransformContextPtr ctxt,const xmlChar * name,const xmlChar * value + + +xsltQuoteOneUserParam +int +xsltTransformContextPtr ctxt,const xmlChar * name,const xmlChar * value + + +xsltParseGlobalVariable +void +xsltStylesheetPtr style,xmlNodePtr cur + + +xsltParseGlobalParam +void +xsltStylesheetPtr style,xmlNodePtr cur + + +xsltParseStylesheetVariable +void +xsltTransformContextPtr ctxt,xmlNodePtr cur + + +xsltParseStylesheetParam +void +xsltTransformContextPtr ctxt,xmlNodePtr cur + + +xsltParseStylesheetCallerParam +xsltStackElemPtr +xsltTransformContextPtr ctxt,xmlNodePtr cur + + +xsltAddStackElemList +int +xsltTransformContextPtr ctxt,xsltStackElemPtr elems + + +xsltFreeGlobalVariables +void +xsltTransformContextPtr ctxt + + +xsltVariableLookup +xmlXPathObjectPtr +xsltTransformContextPtr ctxt,const xmlChar *name,const xmlChar *ns_uri + + +xsltXPathVariableLookup +xmlXPathObjectPtr +void *ctxt,const xmlChar *name,const xmlChar *ns_uri + + +XSLT_DEFAULT_VERSION +#define XSLT_DEFAULT_VERSION "1.0" + + +XSLT_DEFAULT_VENDOR +#define XSLT_DEFAULT_VENDOR "libxslt" + + +XSLT_DEFAULT_URL +#define XSLT_DEFAULT_URL "http://xmlsoft.org/XSLT/" + + +XSLT_NAMESPACE +#define XSLT_NAMESPACE ((xmlChar *) "http://www.w3.org/1999/XSL/Transform") LIBXSLT_PUBLIC @@ -1071,6 +859,11 @@ xsltStylesheetPtr style LIBXSLT_PUBLIC #define LIBXSLT_PUBLIC + +xsltCleanupGlobals +void +void + XSLT_MAX_SORT #define XSLT_MAX_SORT 5 @@ -1591,3 +1384,210 @@ xsltStylesheetPtr style int xsltTransformContextPtr ctxt + +XSLT_TODO +#define XSLT_TODO \ + xsltGenericError(xsltGenericErrorContext, \ + "Unimplemented block at %s:%d\n", \ + __FILE__, __LINE__); + + +XSLT_STRANGE +#define XSLT_STRANGE \ + xsltGenericError(xsltGenericErrorContext, \ + "Internal error at %s:%d\n", \ + __FILE__, __LINE__); + + +IS_XSLT_ELEM +#define IS_XSLT_ELEM(n) \ + (((n) != NULL) && ((n)->ns != NULL) && \ + (xmlStrEqual((n)->ns->href, XSLT_NAMESPACE))) + + +IS_XSLT_NAME +#define IS_XSLT_NAME(n, val) \ + (xmlStrEqual((n)->name, (const xmlChar *) (val))) + + +IS_XSLT_REAL_NODE +#define IS_XSLT_REAL_NODE(n) \ + (((n) != NULL) && \ + (((n)->type == XML_ELEMENT_NODE) || \ + ((n)->type == XML_TEXT_NODE) || \ + ((n)->type == XML_ATTRIBUTE_NODE) || \ + ((n)->type == XML_DOCUMENT_NODE) || \ + ((n)->type == XML_HTML_DOCUMENT_NODE) || \ + ((n)->type == XML_DOCB_DOCUMENT_NODE))) + + +IS_XSLT_REAL_NODE +#define IS_XSLT_REAL_NODE(n) \ + (((n) != NULL) && \ + (((n)->type == XML_ELEMENT_NODE) || \ + ((n)->type == XML_TEXT_NODE) || \ + ((n)->type == XML_ATTRIBUTE_NODE) || \ + ((n)->type == XML_DOCUMENT_NODE) || \ + ((n)->type == XML_HTML_DOCUMENT_NODE))) + + +xsltGetNsProp +xmlChar * +xmlNodePtr node,const xmlChar *name,const xmlChar *nameSpace + + +xsltPrintErrorContext +void +xsltTransformContextPtr ctxt,xsltStylesheetPtr style,xmlNodePtr node + + +xsltMessage +void +xsltTransformContextPtr ctxt,xmlNodePtr node,xmlNodePtr inst + + +xsltSetGenericErrorFunc +void +void *ctx,xmlGenericErrorFunc handler + + +xsltSetGenericDebugFunc +void +void *ctx,xmlGenericErrorFunc handler + + +xsltDocumentSortFunction +void +xmlNodeSetPtr list + + +xsltDoSortFunction +void +xsltTransformContextPtr ctxt,xmlNodePtr *sorts,int nbsorts + + +xsltGetQNameURI +const xmlChar * +xmlNodePtr node,xmlChar **name + + +xsltSaveResultTo +int +xmlOutputBufferPtr buf,xmlDocPtr result,xsltStylesheetPtr style + + +xsltSaveResultToFilename +int +const char *URI,xmlDocPtr result,xsltStylesheetPtr style,int compression + + +xsltSaveResultToFile +int +FILE *file,xmlDocPtr result,xsltStylesheetPtr style + + +xsltSaveResultToFd +int +int fd,xmlDocPtr result,xsltStylesheetPtr style + + +xsltSaveProfiling +void +xsltTransformContextPtr ctxt,FILE *output + + +xsltTimestamp +long +void + + +xsltCalibrateAdjust +void +long delta + + +XSLT_TIMESTAMP_TICS_PER_SEC +#define XSLT_TIMESTAMP_TICS_PER_SEC 100000l + + +xsltDebugStatusCodes +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; + + +xsltHandleDebuggerCallback +void +xmlNodePtr cur, xmlNodePtr node, + xsltTemplatePtr templ, xsltTransformContextPtr ctxt + + +xsltAddCallCallback +int +xsltTemplatePtr templ, xmlNodePtr source + + +xsltDropCallCallback +void +void + + +xsltSetDebuggerCallbacks +int +int no, void *block + + +xslAddCall +int +xsltTemplatePtr templ,xmlNodePtr source + + +xslDropCall +void +void + + +LIBXSLT_DOTTED_VERSION +#define LIBXSLT_DOTTED_VERSION "1.0.13" + + +LIBXSLT_VERSION +#define LIBXSLT_VERSION 10013 + + +LIBXSLT_VERSION_STRING +#define LIBXSLT_VERSION_STRING "10013" + + +WITH_XSLT_DEBUG +#define WITH_XSLT_DEBUG + + +DEBUG_MEMORY +#define DEBUG_MEMORY + + +DEBUG_MEMORY_LOCATION +#define DEBUG_MEMORY_LOCATION + + +ATTRIBUTE_UNUSED +#define ATTRIBUTE_UNUSED + + +LIBXSLT_PUBLIC +#define LIBXSLT_PUBLIC __declspec(dllimport) + + +LIBXSLT_PUBLIC +#define LIBXSLT_PUBLIC + diff --git a/doc/libxslt-refs.xml b/doc/libxslt-refs.xml index 54775f07..e30a5e36 100644 --- a/doc/libxslt-refs.xml +++ b/doc/libxslt-refs.xml @@ -518,12 +518,12 @@ - + @@ -546,9 +546,9 @@ - + @@ -587,20 +587,20 @@ - + - + - + @@ -619,35 +619,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -688,12 +661,39 @@ + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + @@ -709,12 +709,12 @@ + + + - - - @@ -727,10 +727,13 @@ - + + + + @@ -738,28 +741,53 @@ + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -799,6 +827,16 @@ + + + + + + + + + + @@ -808,44 +846,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -881,6 +881,8 @@ + + @@ -889,8 +891,6 @@ - - @@ -937,6 +937,7 @@ + @@ -954,29 +955,13 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + @@ -991,22 +976,37 @@ - - + + - - - + + + + + + + + + + + + + + + + + + @@ -1020,12 +1020,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1050,19 +1082,6 @@ - - - - - - - - - - - - - @@ -1074,33 +1093,14 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + diff --git a/python/Makefile.am b/python/Makefile.am index 84cfc973..bd30ef57 100644 --- a/python/Makefile.am +++ b/python/Makefile.am @@ -4,13 +4,13 @@ AUTOMAKE_OPTIONS = 1.4 foreign SUBDIRS= . tests INCLUDES = \ - -I/usr/include/python$(PYTHON_VERSION) \ -I$(PYTHON_INCLUDES) \ $(LIBXML_CFLAGS) \ -I$(top_srcdir) DOCS_DIR = $(prefix)/share/doc/libxslt-python-$(LIBXML_VERSION) -DOCS = TODO libxsltclass.txt +# libxsltclass.txt is generated +DOCS = TODO EXTRA_DIST = \ libxslt.c \ @@ -22,37 +22,20 @@ EXTRA_DIST = \ libxslt-python-api.xml \ $(DOCS) +libxsltmod_la_LDFLAGS = -module -avoid-version + if WITH_PYTHON mylibs = \ $(top_builddir)/libxslt/libxslt.la \ $(top_builddir)/libexslt/libexslt.la -LDADD = -lxslt -lexslt -CFLAGS = -Wall -g +all: libxslt.py pythondir = $(prefix)/lib/python${PYTHON_VERSION}/site-packages -python_PROGRAMS = libxsltmod.so - -libxsltmod_so_SOURCES = -libxsltmod_so_LDFLAGS = $(mylibs) $(LIBS) -shared -Wl,-soname,libxsltmod.so - -noinst_LTLIBRARIES = libxsltmodule.la -libxsltmodule_la_SOURCES = libxslt.c types.c libxslt-py.c - -GENERATE = generator.py -API_DESC = $(top_srcdir)/doc/libxslt-api.xml $(srcdir)/libxslt-python-api.xml -GENERATED= $(srcdir)/libxsltclass.py \ - $(srcdir)/libxslt-export.c \ - $(srcdir)/libxslt-py.c \ - $(srcdir)/libxslt-py.h - -all: $(GENERATED) libxsltmod.so libxslt.py $(PYTHONSODV) - -libxsltmod.so: $(libxsltmodule_la_OBJECTS) libxsltmodule.la - -(rm -f .libs/libxsltmod.so; \ - $(LINK) -o $@ $(libxsltmodule_la_OBJECTS) $(libxsltmod_so_LDFLAGS);\ - if [ -r .libs/libxsltmod.so ] ; then cp .libs/libxsltmod.so . ; fi) +python_LTLIBRARIES = libxsltmod.la +libxsltmod_la_SOURCES = libxslt.c types.c libxslt-py.c +libxsltmod_la_LIBADD = $(mylibs) libxslt.py: $(srcdir)/libxsl.py libxsltclass.py cat $(srcdir)/libxsl.py libxsltclass.py > libxslt.py @@ -64,6 +47,13 @@ install-data-local: -@(for doc in $(DOCS) ; \ do @INSTALL@ -m 0644 $$doc $(DESTDIR)$(DOCS_DIR) ; done) +GENERATE = generator.py +API_DESC = $(top_srcdir)/doc/libxslt-api.xml $(srcdir)/libxslt-python-api.xml +GENERATED= $(srcdir)/libxsltclass.py \ + $(srcdir)/libxslt-export.c \ + $(srcdir)/libxslt-py.c \ + $(srcdir)/libxslt-py.h + $(GENERATED): $(srcdir)/$(GENERATE) $(API_DESC) cd $(srcdir) && $(PYTHON) $(GENERATE) @@ -78,4 +68,3 @@ tests test: all clean: rm -f $(GENERATED) *.o libxslt.so *.pyc libxslt.py - diff --git a/python/generator.py b/python/generator.py index 6a6abe4a..0ea7ae6d 100755 --- a/python/generator.py +++ b/python/generator.py @@ -351,8 +351,14 @@ def print_function_wrapper(name, output, export, include): if ret[0] == 'void': if file == "python_accessor": - c_call = "\n %s->%s = %s;\n" % (args[0][0], args[1][0], - args[1][0]) + if args[1][1] == "char *" or args[1][1] == "xmlChar *": + c_call = "\n if (%s->%s != NULL) xmlFree(%s->%s);\n" % ( + args[0][0], args[1][0], args[0][0], args[1][0]) + c_call = c_call + " %s->%s = xmlStrdup((const xmlChar *)%s);\n" % (args[0][0], + args[1][0], args[1][0]) + else: + c_call = "\n %s->%s = %s;\n" % (args[0][0], args[1][0], + args[1][0]) else: c_call = "\n %s(%s);\n" % (name, c_call); ret_convert = " Py_INCREF(Py_None);\n return(Py_None);\n" @@ -368,7 +374,10 @@ def print_function_wrapper(name, output, export, include): elif py_return_types.has_key(ret[0]): (f, t, n, c, p) = py_return_types[ret[0]] c_return = " %s c_retval;\n" % (ret[0]) - c_call = "\n c_retval = %s(%s);\n" % (name, c_call); + if file == "python_accessor" and ret[2] != None: + c_call = "\n c_retval = %s->%s;\n" % (args[0][0], ret[2]) + else: + c_call = "\n c_retval = %s(%s);\n" % (name, c_call); ret_convert = " py_retval = %s%sWrap((%s) c_retval);\n" % (p,n,c) ret_convert = ret_convert + " return(py_retval);\n" else: @@ -384,7 +393,7 @@ def print_function_wrapper(name, output, export, include): include.write("PyObject * ") include.write("libxslt_%s(PyObject *self, PyObject *args);\n" % (name)) - export.write(" { \"%s\", libxslt_%s, METH_VARARGS, NULL },\n" % (name, name)) + export.write(" { (char *)\"%s\", libxslt_%s, METH_VARARGS, NULL },\n" % (name, name)) if file == "python": # Those have been manually generated @@ -394,7 +403,10 @@ def print_function_wrapper(name, output, export, include): return 1 output.write("PyObject *\n") - output.write("libxslt_%s(PyObject *self, PyObject *args) {\n" % (name)) + output.write("libxslt_%s(ATTRIBUTE_UNUSED PyObject *self," % (name)) + if format == "": + output.write("ATTRIBUTE_UNUSED ") + output.write(" PyObject *args) {\n") if ret[0] != 'void': output.write(" PyObject *py_retval;\n") if c_return != "": @@ -402,7 +414,7 @@ def print_function_wrapper(name, output, export, include): if c_args != "": output.write(c_args) if format != "": - output.write("\n if (!PyArg_ParseTuple(args, \"%s\"%s))\n" % + output.write("\n if (!PyArg_ParseTuple(args, (char *)\"%s\"%s))\n" % (format, format_args)) output.write(" return(NULL);\n") if c_convert != "": @@ -461,6 +473,8 @@ def buildStubs(): export.write("/* Generated */\n\n") wrapper = open("libxslt-py.c", "w") wrapper.write("/* Generated */\n\n") + wrapper.write("#include \"config.h\"\n") + wrapper.write("#include \n") wrapper.write("#include \"libxslt_wrap.h\"\n") wrapper.write("#include \"libxslt-py.h\"\n\n") for function in functions.keys(): diff --git a/python/libxslt.c b/python/libxslt.c index 50e9b5b2..5c9eb0eb 100644 --- a/python/libxslt.c +++ b/python/libxslt.c @@ -12,17 +12,21 @@ * daniel@veillard.com */ #include +#include "config.h" #include #include #include #include "libxslt_wrap.h" #include "libxslt-py.h" + /* #define DEBUG */ /* #define DEBUG_XPATH */ /* #define DEBUG_ERROR */ /* #define DEBUG_MEMORY */ +void initlibxsltmod(void); + /************************************************************************ * * * Per type specific glue * @@ -40,7 +44,8 @@ libxslt_xsltStylesheetPtrWrap(xsltStylesheetPtr style) { Py_INCREF(Py_None); return(Py_None); } - ret = PyCObject_FromVoidPtrAndDesc((void *) style, "xsltStylesheetPtr", NULL); + ret = PyCObject_FromVoidPtrAndDesc((void *) style, + (char *)"xsltStylesheetPtr", NULL); return(ret); } @@ -55,95 +60,11 @@ libxslt_xsltTransformContextPtrWrap(xsltTransformContextPtr ctxt) { Py_INCREF(Py_None); return(Py_None); } - ret = PyCObject_FromVoidPtrAndDesc((void *) ctxt, "xsltTransformContextPtr", NULL); + ret = PyCObject_FromVoidPtrAndDesc((void *) ctxt, + (char *)"xsltTransformContextPtr", NULL); return(ret); } -/************************************************************************ - * * - * Memory debug interface * - * * - ************************************************************************/ - -extern void xmlMemFree(void *ptr); -extern void *xmlMemMalloc(size_t size); -extern void *xmlMemRealloc(void *ptr,size_t size); -extern char *xmlMemoryStrdup(const char *str); - -static int libxsltMemoryDebugActivated = 0; -static long libxsltMemoryAllocatedBase = 0; - -static int libxsltMemoryDebug = 0; -static xmlFreeFunc freeFunc = NULL; -static xmlMallocFunc mallocFunc = NULL; -static xmlReallocFunc reallocFunc = NULL; -static xmlStrdupFunc strdupFunc = NULL; - -PyObject * -libxslt_xmlDebugMemory(PyObject *self, PyObject *args) { - int activate; - PyObject *py_retval; - long ret; - - if (!PyArg_ParseTuple(args, "i:xmlDebugMemory", &activate)) - return(NULL); - -#ifdef DEBUG_MEMORY - printf("libxslt_xmlDebugMemory(%d) called\n", activate); -#endif - - if (activate != 0) { - if (libxsltMemoryDebug == 0) { - /* - * First initialize the library and grab the old memory handlers - * and switch the library to memory debugging - */ - xmlMemGet((xmlFreeFunc *) &freeFunc, - (xmlMallocFunc *)&mallocFunc, - (xmlReallocFunc *)&reallocFunc, - (xmlStrdupFunc *) &strdupFunc); - if ((freeFunc == xmlMemFree) && (mallocFunc == xmlMemMalloc) && - (reallocFunc == xmlMemRealloc) && - (strdupFunc == xmlMemoryStrdup)) { - libxsltMemoryAllocatedBase = xmlMemUsed(); - } else { - ret = (long) xmlMemSetup(xmlMemFree, xmlMemMalloc, - xmlMemRealloc, xmlMemoryStrdup); - if (ret < 0) - goto error; - libxsltMemoryAllocatedBase = xmlMemUsed(); - } - xmlInitParser(); - ret = 0; - } else if (libxsltMemoryDebugActivated == 0) { - libxsltMemoryAllocatedBase = xmlMemUsed(); - ret = 0; - } else { - ret = xmlMemUsed() - libxsltMemoryAllocatedBase; - } - libxsltMemoryDebug = 1; - libxsltMemoryDebugActivated = 1; - } else { - if (libxsltMemoryDebugActivated == 1) - ret = xmlMemUsed() - libxsltMemoryAllocatedBase; - else - ret = 0; - libxsltMemoryDebugActivated = 0; - } -error: - py_retval = libxml_longWrap(ret); - return(py_retval); -} - -PyObject * -libxslt_xmlDumpMemory(PyObject *self, PyObject *args) { - - if (libxsltMemoryDebug != 0) - xmlMemoryDump(); - Py_INCREF(Py_None); - return(Py_None); -} - /************************************************************************ * * * Extending the API * @@ -199,14 +120,15 @@ libxslt_xmlXPathFuncCallback(xmlXPathParserContextPtr ctxt, int nargs) { } PyObject * -libxslt_xsltRegisterExtModuleFunction(PyObject *self, PyObject *args) { +libxslt_xsltRegisterExtModuleFunction(PyObject *self ATTRIBUTE_UNUSED, + PyObject *args) { PyObject *py_retval; int ret = 0; xmlChar *name; xmlChar *ns_uri; PyObject *pyobj_f; - if (!PyArg_ParseTuple(args, "szO:registerXPathFunction", + if (!PyArg_ParseTuple(args, (char *)"szO:registerXPathFunction", &name, &ns_uri, &pyobj_f)) return(NULL); @@ -239,8 +161,8 @@ libxslt_xsltRegisterExtModuleFunction(PyObject *self, PyObject *args) { return(py_retval); } -void -deallocateCallback(void *payload, xmlChar *name) { +static void +deallocateCallback(void *payload, xmlChar *name ATTRIBUTE_UNUSED) { PyObject *function = (PyObject *) payload; #ifdef DEBUG_XPATH @@ -257,7 +179,7 @@ deallocateCallback(void *payload, xmlChar *name) { ************************************************************************/ PyObject * -libxslt_xsltApplyStylesheet(PyObject *self, PyObject *args) { +libxslt_xsltApplyStylesheet(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) { PyObject *py_retval; xmlDocPtr c_retval; xsltStylesheetPtr style; @@ -270,7 +192,8 @@ libxslt_xsltApplyStylesheet(PyObject *self, PyObject *args) { PyObject *name; PyObject *value; - if (!PyArg_ParseTuple(args, "OOO:xsltApplyStylesheet", &pyobj_style, &pyobj_doc, &pyobj_params)) + if (!PyArg_ParseTuple(args, (char *) "OOO:xsltApplyStylesheet", + &pyobj_style, &pyobj_doc, &pyobj_params)) return(NULL); if (pyobj_params != Py_None) { @@ -291,11 +214,12 @@ libxslt_xsltApplyStylesheet(PyObject *self, PyObject *args) { tmp = PyString_AS_STRING(name); size = PyString_GET_SIZE(name); - params[j * 2] = xmlCharStrndup(tmp, size); + params[j * 2] = (char *) xmlCharStrndup(tmp, size); if (PyString_Check(value)) { tmp = PyString_AS_STRING(value); size = PyString_GET_SIZE(value); - params[(j * 2) + 1] = xmlCharStrndup(tmp, size); + params[(j * 2) + 1] = (char *) + xmlCharStrndup(tmp, size); } else { params[(j * 2) + 1] = NULL; } @@ -334,7 +258,8 @@ libxslt_xsltApplyStylesheet(PyObject *self, PyObject *args) { ************************************************************************/ PyObject * -libxslt_xsltCleanup(PyObject *self, PyObject *args) { +libxslt_xsltCleanup(PyObject *self ATTRIBUTE_UNUSED, + PyObject *args ATTRIBUTE_UNUSED) { if (libxslt_extModuleFunctions != NULL) { xmlHashFree(libxslt_extModuleFunctions, deallocateCallback); @@ -352,7 +277,7 @@ libxslt_xsltCleanup(PyObject *self, PyObject *args) { ************************************************************************/ static PyMethodDef libxsltMethods[] = { #include "libxslt-export.c" - { NULL } + { NULL, NULL, 0, NULL } }; #ifdef MERGED_MODULES @@ -369,7 +294,7 @@ void initlibxsltmod(void) { if (initialized != 0) return; - m = Py_InitModule("libxsltmod", libxsltMethods); + m = Py_InitModule((char *)"libxsltmod", libxsltMethods); initialized = 1; /* libxslt_xmlErrorInitialize(); */ /* diff --git a/python/tests/Makefile.am b/python/tests/Makefile.am index 8cc110d0..d4589e9f 100644 --- a/python/tests/Makefile.am +++ b/python/tests/Makefile.am @@ -15,7 +15,7 @@ EXTRA_DIST = $(TESTSPY) $(XMLS) $(EXTRAS) if WITH_PYTHON tests: $(TESTSPY) - -@(PYTHONPATH=".." ; export PYTHONPATH; \ + -@(PYTHONPATH="..:../.libs" ; export PYTHONPATH; \ for test in $(TESTSPY) ; do echo "-- $$test" ; $(PYTHON) $$test ; done) else tests: diff --git a/python/types.c b/python/types.c index 29fe84f2..2eff1a3e 100644 --- a/python/types.c +++ b/python/types.c @@ -6,303 +6,466 @@ * * daniel@veillard.com */ -#include "libxslt_wrap.h" +#include "libxml_wrap.h" PyObject * -libxml_intWrap(int val) { +libxml_intWrap(int val) +{ PyObject *ret; #ifdef DEBUG printf("libxml_intWrap: val = %d\n", val); #endif ret = PyInt_FromLong((long) val); - return(ret); + return (ret); } PyObject * -libxml_longWrap(long val) { +libxml_longWrap(long val) +{ PyObject *ret; #ifdef DEBUG printf("libxml_longWrap: val = %ld\n", val); #endif ret = PyInt_FromLong(val); - return(ret); + return (ret); } PyObject * -libxml_doubleWrap(double val) { +libxml_doubleWrap(double val) +{ PyObject *ret; #ifdef DEBUG printf("libxml_doubleWrap: val = %f\n", val); #endif ret = PyFloat_FromDouble((double) val); - return(ret); + return (ret); } PyObject * -libxml_charPtrWrap(char *str) { +libxml_charPtrWrap(char *str) +{ PyObject *ret; #ifdef DEBUG printf("libxml_xmlcharPtrWrap: str = %s\n", str); #endif if (str == NULL) { - Py_INCREF(Py_None); - return(Py_None); + Py_INCREF(Py_None); + return (Py_None); } /* TODO: look at deallocation */ ret = PyString_FromString(str); xmlFree(str); - return(ret); + return (ret); } PyObject * -libxml_xmlCharPtrWrap(xmlChar *str) { - PyObject *ret; - -#ifdef DEBUG - printf("libxml_xmlCharPtrWrap: str = %s\n", str); -#endif - if (str == NULL) { - Py_INCREF(Py_None); - return(Py_None); - } - /* TODO: look at deallocation */ - ret = PyString_FromString(str); - xmlFree(str); - return(ret); -} - -PyObject * -libxml_constcharPtrWrap(const char *str) { +libxml_charPtrConstWrap(const char *str) +{ PyObject *ret; #ifdef DEBUG printf("libxml_xmlcharPtrWrap: str = %s\n", str); #endif if (str == NULL) { - Py_INCREF(Py_None); - return(Py_None); + Py_INCREF(Py_None); + return (Py_None); } /* TODO: look at deallocation */ ret = PyString_FromString(str); - return(ret); + return (ret); } PyObject * -libxml_constxmlCharPtrWrap(const xmlChar *str) { +libxml_xmlCharPtrWrap(xmlChar * str) +{ PyObject *ret; #ifdef DEBUG printf("libxml_xmlCharPtrWrap: str = %s\n", str); #endif if (str == NULL) { - Py_INCREF(Py_None); - return(Py_None); + Py_INCREF(Py_None); + return (Py_None); } /* TODO: look at deallocation */ - ret = PyString_FromString(str); - return(ret); + ret = PyString_FromString((char *) str); + xmlFree(str); + return (ret); } PyObject * -libxml_xmlDocPtrWrap(xmlDocPtr doc) { +libxml_xmlCharPtrConstWrap(const xmlChar * str) +{ + PyObject *ret; + +#ifdef DEBUG + printf("libxml_xmlCharPtrWrap: str = %s\n", str); +#endif + if (str == NULL) { + Py_INCREF(Py_None); + return (Py_None); + } + /* TODO: look at deallocation */ + ret = PyString_FromString((char *) str); + return (ret); +} + +PyObject * +libxml_constcharPtrWrap(const char *str) +{ + PyObject *ret; + +#ifdef DEBUG + printf("libxml_xmlcharPtrWrap: str = %s\n", str); +#endif + if (str == NULL) { + Py_INCREF(Py_None); + return (Py_None); + } + /* TODO: look at deallocation */ + ret = PyString_FromString(str); + return (ret); +} + +PyObject * +libxml_constxmlCharPtrWrap(const xmlChar * str) +{ + PyObject *ret; + +#ifdef DEBUG + printf("libxml_xmlCharPtrWrap: str = %s\n", str); +#endif + if (str == NULL) { + Py_INCREF(Py_None); + return (Py_None); + } + /* TODO: look at deallocation */ + ret = PyString_FromString((char *) str); + return (ret); +} + +PyObject * +libxml_xmlDocPtrWrap(xmlDocPtr doc) +{ PyObject *ret; #ifdef DEBUG printf("libxml_xmlDocPtrWrap: doc = %p\n", doc); #endif if (doc == NULL) { - Py_INCREF(Py_None); - return(Py_None); + Py_INCREF(Py_None); + return (Py_None); } /* TODO: look at deallocation */ - ret = PyCObject_FromVoidPtrAndDesc((void *) doc, "xmlDocPtr", NULL); - return(ret); + ret = + PyCObject_FromVoidPtrAndDesc((void *) doc, (char *) "xmlDocPtr", + NULL); + return (ret); } PyObject * -libxml_xmlNodePtrWrap(xmlNodePtr node) { +libxml_xmlNodePtrWrap(xmlNodePtr node) +{ PyObject *ret; #ifdef DEBUG printf("libxml_xmlNodePtrWrap: node = %p\n", node); #endif if (node == NULL) { - Py_INCREF(Py_None); - return(Py_None); + Py_INCREF(Py_None); + return (Py_None); } - ret = PyCObject_FromVoidPtrAndDesc((void *) node, "xmlNodePtr", NULL); - return(ret); + ret = + PyCObject_FromVoidPtrAndDesc((void *) node, (char *) "xmlNodePtr", + NULL); + return (ret); } PyObject * -libxml_xmlNsPtrWrap(xmlNsPtr ns) { +libxml_xmlURIPtrWrap(xmlURIPtr uri) +{ + PyObject *ret; + +#ifdef DEBUG + printf("libxml_xmlURIPtrWrap: uri = %p\n", uri); +#endif + if (uri == NULL) { + Py_INCREF(Py_None); + return (Py_None); + } + ret = + PyCObject_FromVoidPtrAndDesc((void *) uri, (char *) "xmlURIPtr", + NULL); + return (ret); +} + +PyObject * +libxml_xmlNsPtrWrap(xmlNsPtr ns) +{ PyObject *ret; #ifdef DEBUG printf("libxml_xmlNsPtrWrap: node = %p\n", ns); #endif if (ns == NULL) { - Py_INCREF(Py_None); - return(Py_None); + Py_INCREF(Py_None); + return (Py_None); } - ret = PyCObject_FromVoidPtrAndDesc((void *) ns, "xmlNsPtr", NULL); - return(ret); + ret = + PyCObject_FromVoidPtrAndDesc((void *) ns, (char *) "xmlNsPtr", + NULL); + return (ret); } PyObject * -libxml_xmlAttrPtrWrap(xmlAttrPtr attr) { +libxml_xmlAttrPtrWrap(xmlAttrPtr attr) +{ PyObject *ret; #ifdef DEBUG printf("libxml_xmlAttrNodePtrWrap: attr = %p\n", attr); #endif if (attr == NULL) { - Py_INCREF(Py_None); - return(Py_None); + Py_INCREF(Py_None); + return (Py_None); } - ret = PyCObject_FromVoidPtrAndDesc((void *) attr, "xmlAttrPtr", NULL); - return(ret); + ret = + PyCObject_FromVoidPtrAndDesc((void *) attr, (char *) "xmlAttrPtr", + NULL); + return (ret); } PyObject * -libxml_xmlAttributePtrWrap(xmlAttributePtr attr) { +libxml_xmlAttributePtrWrap(xmlAttributePtr attr) +{ PyObject *ret; #ifdef DEBUG printf("libxml_xmlAttributePtrWrap: attr = %p\n", attr); #endif if (attr == NULL) { - Py_INCREF(Py_None); - return(Py_None); + Py_INCREF(Py_None); + return (Py_None); } - ret = PyCObject_FromVoidPtrAndDesc((void *) attr, "xmlAttributePtr", NULL); - return(ret); + ret = + PyCObject_FromVoidPtrAndDesc((void *) attr, + (char *) "xmlAttributePtr", NULL); + return (ret); } PyObject * -libxml_xmlElementPtrWrap(xmlElementPtr elem) { +libxml_xmlElementPtrWrap(xmlElementPtr elem) +{ PyObject *ret; #ifdef DEBUG printf("libxml_xmlElementNodePtrWrap: elem = %p\n", elem); #endif if (elem == NULL) { - Py_INCREF(Py_None); - return(Py_None); + Py_INCREF(Py_None); + return (Py_None); } - ret = PyCObject_FromVoidPtrAndDesc((void *) elem, "xmlElementPtr", NULL); - return(ret); + ret = + PyCObject_FromVoidPtrAndDesc((void *) elem, + (char *) "xmlElementPtr", NULL); + return (ret); } PyObject * -libxml_xmlXPathContextPtrWrap(xmlXPathContextPtr ctxt) { +libxml_xmlXPathContextPtrWrap(xmlXPathContextPtr ctxt) +{ PyObject *ret; #ifdef DEBUG printf("libxml_xmlXPathContextPtrWrap: ctxt = %p\n", ctxt); #endif if (ctxt == NULL) { - Py_INCREF(Py_None); - return(Py_None); + Py_INCREF(Py_None); + return (Py_None); } - ret = PyCObject_FromVoidPtrAndDesc((void *) ctxt, "xmlXPathContextPtr", - NULL); - return(ret); + ret = + PyCObject_FromVoidPtrAndDesc((void *) ctxt, + (char *) "xmlXPathContextPtr", NULL); + return (ret); } PyObject * -libxml_xmlParserCtxtPtrWrap(xmlParserCtxtPtr ctxt) { +libxml_xmlXPathParserContextPtrWrap(xmlXPathParserContextPtr ctxt) +{ + PyObject *ret; + +#ifdef DEBUG + printf("libxml_xmlXPathParserContextPtrWrap: ctxt = %p\n", ctxt); +#endif + if (ctxt == NULL) { + Py_INCREF(Py_None); + return (Py_None); + } + ret = PyCObject_FromVoidPtrAndDesc((void *) ctxt, + (char *) "xmlXPathParserContextPtr", + NULL); + return (ret); +} + +PyObject * +libxml_xmlParserCtxtPtrWrap(xmlParserCtxtPtr ctxt) +{ PyObject *ret; #ifdef DEBUG printf("libxml_xmlParserCtxtPtrWrap: ctxt = %p\n", ctxt); #endif if (ctxt == NULL) { - Py_INCREF(Py_None); - return(Py_None); + Py_INCREF(Py_None); + return (Py_None); } - ret = PyCObject_FromVoidPtrAndDesc((void *) ctxt, "xmlParserCtxtPtr", - NULL); - return(ret); + ret = + PyCObject_FromVoidPtrAndDesc((void *) ctxt, + (char *) "xmlParserCtxtPtr", NULL); + return (ret); } PyObject * -libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj) { +libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj) +{ PyObject *ret; #ifdef DEBUG printf("libxml_xmlXPathObjectPtrWrap: ctxt = %p\n", obj); #endif if (obj == NULL) { - Py_INCREF(Py_None); - return(Py_None); + Py_INCREF(Py_None); + return (Py_None); } - switch(obj->type) { + switch (obj->type) { case XPATH_XSLT_TREE: - /* TODO !!!! Allocation problems */ + /* TODO !!!! Allocation problems */ case XPATH_NODESET: - if ((obj->nodesetval == NULL) || (obj->nodesetval->nodeNr == 0)) - ret = PyList_New(0); - else { - int i; - xmlNodePtr node; + if ((obj->nodesetval == NULL) + || (obj->nodesetval->nodeNr == 0)) + ret = PyList_New(0); + else { + int i; + xmlNodePtr node; - ret = PyList_New(obj->nodesetval->nodeNr); - for (i = 0;i < obj->nodesetval->nodeNr;i++) { - node = obj->nodesetval->nodeTab[i]; - /* TODO: try to cast directly to the proper node type */ - PyList_SetItem(ret, i, libxml_xmlNodePtrWrap(node)); - } - } - break; + ret = PyList_New(obj->nodesetval->nodeNr); + for (i = 0; i < obj->nodesetval->nodeNr; i++) { + node = obj->nodesetval->nodeTab[i]; + /* TODO: try to cast directly to the proper node type */ + PyList_SetItem(ret, i, libxml_xmlNodePtrWrap(node)); + } + } + break; case XPATH_BOOLEAN: - ret = PyInt_FromLong((long) obj->boolval); - break; + ret = PyInt_FromLong((long) obj->boolval); + break; case XPATH_NUMBER: - ret = PyFloat_FromDouble(obj->floatval); - break; + ret = PyFloat_FromDouble(obj->floatval); + break; case XPATH_STRING: - ret = PyString_FromString(obj->stringval); - break; + ret = PyString_FromString((char *) obj->stringval); + break; case XPATH_POINT: case XPATH_RANGE: case XPATH_LOCATIONSET: - default: - printf("Unable to convert XPath object type %d\n", obj->type); - Py_INCREF(Py_None); - ret = Py_None; + default: + printf("Unable to convert XPath object type %d\n", obj->type); + Py_INCREF(Py_None); + ret = Py_None; } xmlXPathFreeObject(obj); - return(ret); + return (ret); } xmlXPathObjectPtr -libxml_xmlXPathObjectPtrConvert(PyObject * obj) { - xmlXPathObjectPtr ret; +libxml_xmlXPathObjectPtrConvert(PyObject * obj) +{ + xmlXPathObjectPtr ret = NULL; #ifdef DEBUG printf("libxml_xmlXPathObjectPtrConvert: obj = %p\n", obj); #endif if (obj == NULL) { - return(NULL); + return (NULL); } - if PyFloat_Check(obj) { - ret = xmlXPathNewFloat((double) PyFloat_AS_DOUBLE(obj)); - } else if PyString_Check(obj) { - xmlChar *str; + if PyFloat_Check + (obj) { + ret = xmlXPathNewFloat((double) PyFloat_AS_DOUBLE(obj)); + } else if PyString_Check + (obj) { + xmlChar *str; - str = xmlStrndup((const xmlChar *)PyString_AS_STRING(obj), - PyString_GET_SIZE(obj)); - ret = xmlXPathWrapString(str); + str = xmlStrndup((const xmlChar *) PyString_AS_STRING(obj), + PyString_GET_SIZE(obj)); + ret = xmlXPathWrapString(str); + } else if PyList_Check + (obj) { + int i; + PyObject *node; + xmlNodePtr cur; + xmlNodeSetPtr set; + + set = xmlXPathNodeSetCreate(NULL); + + for (i = 0; i < PyList_Size(obj); i++) { + node = PyList_GetItem(obj, i); + if ((node == NULL) || (node->ob_type == NULL)) + continue; + + cur = NULL; + if (PyCObject_Check(node)) { + printf("Got a CObject\n"); + cur = PyxmlNode_Get(node); + } else if (PyInstance_Check(node)) { + PyInstanceObject *inst = (PyInstanceObject *) node; + PyObject *name = inst->in_class->cl_name; + + if PyString_Check + (name) { + char *type = PyString_AS_STRING(name); + PyObject *wrapper; + + if (!strcmp(type, "xmlNode")) { + wrapper = + PyObject_GetAttrString(node, (char *) "_o"); + if (wrapper != NULL) { + cur = PyxmlNode_Get(wrapper); + } + } + } + } else { + printf("Unknown object in Python return list\n"); + } + if (cur != NULL) { + xmlXPathNodeSetAdd(set, cur); + } + } + ret = xmlXPathWrapNodeSet(set); } else { - printf("Unable to convert Python Object to XPath"); + printf("Unable to convert Python Object to XPath"); } Py_DECREF(obj); - return(ret); + return (ret); } +PyObject * +libxml_xmlCatalogPtrWrap(xmlCatalogPtr catal) +{ + PyObject *ret; +#ifdef DEBUG + printf("libxml_xmlNodePtrWrap: catal = %p\n", catal); +#endif + if (catal == NULL) { + Py_INCREF(Py_None); + return (Py_None); + } + ret = + PyCObject_FromVoidPtrAndDesc((void *) catal, + (char *) "xmlCatalogPtr", NULL); + return (ret); +}