diff options
author | David Sommerseth <davids@redhat.com> | 2009-12-10 19:52:35 +0100 |
---|---|---|
committer | David Sommerseth <davids@redhat.com> | 2009-12-10 19:52:35 +0100 |
commit | 38537193a62d45db108527d242988f6dc13793af (patch) | |
tree | 0bfe12a66334a66ed06ca0b7776f51fd8c580dd2 | |
parent | 734eed972d6065f8b71590b95b9a2f97573a2dcf (diff) | |
download | python-dmidecode-38537193a62d45db108527d242988f6dc13793af.tar.gz python-dmidecode-38537193a62d45db108527d242988f6dc13793af.tar.xz python-dmidecode-38537193a62d45db108527d242988f6dc13793af.zip |
Removed not needed code and fixed Makefile to run test unit test
-rw-r--r-- | unit-tests/Makefile | 30 | ||||
-rw-r--r-- | unit-tests/POCDemo.py | 12 | ||||
-rw-r--r-- | unit-tests/demo.c | 99 | ||||
-rw-r--r-- | unit-tests/demo.h | 14 | ||||
-rw-r--r-- | unit-tests/dmixml.c | 248 | ||||
-rw-r--r-- | unit-tests/dmixml.h | 43 | ||||
-rw-r--r-- | unit-tests/libxml_wrap.h | 249 |
7 files changed, 1 insertions, 694 deletions
diff --git a/unit-tests/Makefile b/unit-tests/Makefile index 01706a3..be2fcf9 100644 --- a/unit-tests/Makefile +++ b/unit-tests/Makefile @@ -1,33 +1,5 @@ -## This one is important to get right ... -## We need to link in the libxml2mod.so file from here -PYLIBDIR := /usr/lib64/python2.5/site-packages -PYLIBDIR := /usr/lib/python-support/python-libxml2/python2.5 - -# Defaults, should be fine -CFLAGS=-I. $(shell xml2-config --cflags) -g -Wall $(shell python-config --cflags) - -LIBS=$(shell xml2-config --libs) -lxml2mod $(shell python-config --libs) -LIBDIR=-L $(PYLIBDIR) - -.SUFFIX=.c .o .so - -all : test - -demomodule.so : demo.o dmixml.o - @echo "Linking: $@" - @gcc -fPIC --shared -o $@ $^ $(LIBS) $(LIBDIR) - -.c.o : - @echo "Compiling $<" - @gcc -fPIC -c $< $(CFLAGS) - -#test : demomodule.so test : - @echo "==========================================" - @echo " Running proof-of-concept code" - @echo "==========================================" - @echo "" - @python unit + python unit clean : rm -f *.{py[oc],o,so} *~ diff --git a/unit-tests/POCDemo.py b/unit-tests/POCDemo.py deleted file mode 100644 index 475a62b..0000000 --- a/unit-tests/POCDemo.py +++ /dev/null @@ -1,12 +0,0 @@ -import libxml2 -import demomodule # This is our core module - -class POCDemo: - """Demo of a wrapper class to return proper python libxml2 objects""" - - def GetXMLdoc(self): - return libxml2.xmlDoc( _obj = demomodule.dump_doc() ) - - def GetXMLnode(self): - return libxml2.xmlNode( _obj = demomodule.dump_node() ) - diff --git a/unit-tests/demo.c b/unit-tests/demo.c deleted file mode 100644 index 265f3cb..0000000 --- a/unit-tests/demo.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For the avoidance of doubt the "preferred form" of this code is one which - * is in an open unpatent encumbered format. Where cryptographic key signing - * forms part of the process of creating an executable the information - * including keys needed to generate an equivalently functional executable - * are deemed to be part of the source code. - */ - -#include "demo.h" - -xmlNode *gen_nodes(const char *entry ) { - xmlNode *c_xmlNode_root = NULL; - xmlNode *c_xmlNode_tag = NULL; - - // Prepare a root node - c_xmlNode_root = xmlNewNode(NULL, (xmlChar *) "dmixml_demo"); - assert( c_xmlNode_root != NULL ); - - dmixml_AddAttribute(c_xmlNode_root, "entrypoint", "%s", entry); - - // Populate XML - dmixml_AddTextChild(c_xmlNode_root, "Test", "Yes, just testing"); - - c_xmlNode_tag = dmixml_AddTextChild(c_xmlNode_root, "tag1", "Another test"); - dmixml_AddAttribute(c_xmlNode_tag, "TestTagID", "%i", 1); - - c_xmlNode_tag = c_xmlNode_root; - int i; - for(i = 0; i <= 3; ++i) { - c_xmlNode_tag = xmlNewChild(c_xmlNode_tag, NULL, (xmlChar *) "subtag", NULL); - dmixml_AddAttribute(c_xmlNode_tag, "SubLevel", "%i", i); - } - dmixml_AddTextContent(c_xmlNode_tag, "%s - Adding data to the tag at sublevel %i", "TEST", i-1); - - return c_xmlNode_root; -} - - - - -PyObject* demo_dump_doc() { - PyObject *py_xmlDoc = NULL; - xmlDoc *c_xmlDoc = NULL; - - // Create an XML document - c_xmlDoc = xmlNewDoc((xmlChar *) "1.0"); - assert( c_xmlDoc != NULL ); - - // Generate XML nodes and assign the root node to the document - xmlDocSetRootElement( c_xmlDoc, gen_nodes("demo_dump_doc") ); - - py_xmlDoc = libxml_xmlDocPtrWrap((xmlDocPtr) c_xmlDoc); - Py_INCREF(py_xmlDoc); - - return py_xmlDoc; -} - -PyObject* demo_dump_node() { - PyObject *py_xmlNode = NULL; - xmlNode *nodes = NULL; - - nodes = gen_nodes("demo_dump_node"); - py_xmlNode = libxml_xmlNodePtrWrap((xmlNodePtr) nodes); - Py_INCREF(py_xmlNode); - - return py_xmlNode; -} - - - -static PyMethodDef DemoMethods[] = { - { "dump_doc", demo_dump_doc, METH_NOARGS, (char *)"Return an XML document" }, - { "dump_node", demo_dump_node, METH_NOARGS, (char *)"Retuen an XML node" }, - { NULL, NULL, 0, NULL } -}; - -PyMODINIT_FUNC initdemomodule(void) { - PyObject *module = - Py_InitModule3((char *)"demomodule", DemoMethods, - "LibXML2 DMIDecode Proof-of-Concept Python Module"); - - PyObject *version = PyString_FromString("0.10"); - Py_INCREF(version); - PyModule_AddObject(module, "version", version); -} diff --git a/unit-tests/demo.h b/unit-tests/demo.h deleted file mode 100644 index 21a5468..0000000 --- a/unit-tests/demo.h +++ /dev/null @@ -1,14 +0,0 @@ -#include <Python.h> -#include <stdio.h> -#include <string.h> -#include <assert.h> - -#include <libxml/tree.h> -#include "libxml_wrap.h" - -#include "dmixml.h" - -extern PyObject* demo_dump(void); -PyMODINIT_FUNC initdemomodule(void); -PyObject* demo_dump_doc(void); -PyObject* demo_dump_node(void); diff --git a/unit-tests/dmixml.c b/unit-tests/dmixml.c deleted file mode 100644 index dbca0c3..0000000 --- a/unit-tests/dmixml.c +++ /dev/null @@ -1,248 +0,0 @@ -/* Simplified XML API for dmidecode - * - * Copyright 2009 David Sommerseth <davids@redhat.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For the avoidance of doubt the "preferred form" of this code is one which - * is in an open unpatent encumbered format. Where cryptographic key signing - * forms part of the process of creating an executable the information - * including keys needed to generate an equivalently functional executable - * are deemed to be part of the source code. - */ - -#include <string.h> -#include <stdarg.h> -#include <assert.h> - -#include <libxml/tree.h> -#include <libxml/xpath.h> -#include <libxml/xmlstring.h> - -// Internal function for dmixml_* functions ... builds up a variable xmlChar* string -xmlChar *dmixml_buildstr(size_t len, const char *fmt, va_list ap) { - xmlChar *ret = NULL, *xmlfmt = NULL; - xmlChar *ptr = NULL; - - ret = (xmlChar *) malloc(len+2); - assert( ret != NULL ); - memset(ret, 0, len+2); - - xmlfmt = xmlCharStrdup(fmt); - assert( xmlfmt != NULL ); - - xmlStrVPrintf(ret, len, xmlfmt, ap); - free(xmlfmt); - - // Right trim the string - ptr = ret + xmlStrlen(ret)-1; - while( (ptr >= ret) && (*ptr == ' ') ) { - *ptr = 0; - ptr--; - } - return ret; -} - - -// Adds an XML property/attribute to the given XML node -// -// xmldata_n = "<test/>"; -// dmixml_AddAttribute(xmldata_n, "value", "1234"); -// gives: xmldata_n = "<test value="1234/>" -// - -xmlAttr *dmixml_AddAttribute(xmlNode *node, const char *atrname, const char *fmt, ...) -{ - xmlChar *val_s = NULL, *atrname_s = NULL; - xmlAttr *res = NULL; - va_list ap; - - if( (node == NULL) || (atrname == NULL) || (fmt == NULL) ) { - return NULL; - } - - atrname_s = xmlCharStrdup(atrname); - assert( atrname_s != NULL ); - - va_start(ap, fmt); - val_s = dmixml_buildstr(2048, fmt, ap); - va_end(ap); - - res = xmlNewProp(node, atrname_s, - (xmlStrcmp(val_s, (xmlChar *) "(null)") == 0 ? NULL : val_s)); - - free(atrname_s); - free(val_s); - - assert( res != NULL ); - return res; -} - - -// Adds a new XML tag to the current node with the given tag name and value. -// -// xmldata_n = "<test>"; -// dmixml_AddTextChild(xmldata_n, "sublevel1", "value"); -// gives: xmldata_n = "<test><sublevel1>value</sublevel1></test>" -// -xmlNode *dmixml_AddTextChild(xmlNode *node, const char *tagname, const char *fmt, ...) -{ - xmlChar *val_s = NULL, *tagname_s = NULL; - xmlNode *res = NULL; - va_list ap; - - if( (node == NULL) || (tagname == NULL) || (fmt == NULL) ) { - return NULL; - } - - tagname_s = xmlCharStrdup(tagname); - assert( tagname_s != NULL ); - - va_start(ap, fmt); - val_s = dmixml_buildstr(2048, fmt, ap); - va_end(ap); - - // Do not add any contents if the string contents is "(null)" - res = xmlNewTextChild(node, NULL, tagname_s, - (xmlStrcmp(val_s, (xmlChar *) "(null)") == 0 ? NULL : val_s)); - - free(tagname_s); - free(val_s); - - assert( res != NULL ); - return res; -} - -// Adds a text node child to the current XML node -// -// xmldata_n = "<testdata/>; -// dmixml_AddTextContent(xmldata_n, "some data value"); -// gives: xmldata_n = "<testdata>some data value</testdata>" -// -xmlNode *dmixml_AddTextContent(xmlNode *node, const char *fmt, ...) -{ - xmlChar *val_s = NULL; - xmlNode *res = NULL; - va_list ap; - - if( (node == NULL) || (fmt == NULL) ) { - return NULL; - } - - va_start(ap, fmt); - val_s = dmixml_buildstr(2048, fmt, ap); - va_end(ap); - - if( xmlStrcmp(val_s, (xmlChar *) "(null)") != 0 ) { - res = xmlAddChild(node, xmlNewText(val_s)); - } else { - res = node; - } - free(val_s); - - assert( res != NULL ); - return res; -} - - -char *dmixml_GetAttrValue(xmlNode *node, const char *key) { - xmlAttr *aptr = NULL; - xmlChar *key_s = NULL; - - if( node == NULL ) { - return NULL; - } - - key_s = xmlCharStrdup(key); - assert( key_s != NULL ); - - for( aptr = node->properties; aptr != NULL; aptr = aptr->next ) { - if( xmlStrcmp(aptr->name, key_s) == 0 ) { - free(key_s); key_s = NULL; - // FIXME: Should find better way how to return UTF-8 data - return (char *)(aptr->children != NULL ? aptr->children->content : NULL); - } - } - free(key_s); key_s = NULL; - return NULL; -} - -xmlNode *dmixml_FindNode(xmlNode *node, const char *key) { - xmlNode *ptr_n = NULL; - xmlChar *key_s = NULL; - - if( node->children == NULL ) { - return NULL; - } - - key_s = xmlCharStrdup(key); - assert( key_s != NULL ); - - for( ptr_n = node->children; ptr_n != NULL; ptr_n = ptr_n->next ) { - if( (ptr_n->type == XML_ELEMENT_NODE) - && (xmlStrcmp(ptr_n->name, key_s) == 0) ) { - free(key_s); key_s = NULL; - return ptr_n; - } - } - free(key_s); key_s = NULL; - return NULL; -} - -inline char *dmixml_GetContent(xmlNode *node) { - // FIXME: Should find better way how to return UTF-8 data - return (((node != NULL) && (node->children != NULL)) ? (char *) node->children->content : NULL); -} - -inline char *dmixml_GetNodeContent(xmlNode *node, const char *key) { - return dmixml_GetContent(dmixml_FindNode(node, key)); -} - -char *dmixml_GetXPathContent(char *buf, size_t buflen, xmlXPathObject *xpo, int idx) { - memset(buf, 0, buflen); - - if( xpo == NULL ) { - return NULL; - } - - switch( xpo->type ) { - case XPATH_STRING: - strncpy(buf, (char *)xpo->stringval, buflen-1); - break; - - case XPATH_NUMBER: - snprintf(buf, buflen-1, "%f", xpo->floatval); - break; - - case XPATH_NODESET: - if( (xpo->nodesetval != NULL) && (xpo->nodesetval->nodeNr >= (idx+1)) ) { - char *str = dmixml_GetContent(xpo->nodesetval->nodeTab[idx]); - if( str != NULL ) { - strncpy(buf, str, buflen-1); - } else { - memset(buf, 0, buflen); - } - } - break; - - default: - fprintf(stderr, "dmixml_GetXPathContent(...):: " - "Do not know how to handle XPath type %i\n", - xpo->type); - return NULL; - } - return buf; -} - diff --git a/unit-tests/dmixml.h b/unit-tests/dmixml.h deleted file mode 100644 index b1d86c6..0000000 --- a/unit-tests/dmixml.h +++ /dev/null @@ -1,43 +0,0 @@ -/* Simplified XML API for dmidecode - * - * Copyright 2009 David Sommerseth <davids@redhat.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * For the avoidance of doubt the "preferred form" of this code is one which - * is in an open unpatent encumbered format. Where cryptographic key signing - * forms part of the process of creating an executable the information - * including keys needed to generate an equivalently functional executable - * are deemed to be part of the source code. - */ - -#ifndef _XMLHELPER_H -#define _XMLHELPER_H - -#include <stdarg.h> -#include <libxml/tree.h> -#include <libxml/xpath.h> - -xmlAttr *dmixml_AddAttribute(xmlNode *node, const char *atrname, const char *fmt, ...); -xmlNode *dmixml_AddTextChild(xmlNode *node, const char *tagname, const char *fmt, ...); -xmlNode *dmixml_AddTextContent(xmlNode *node, const char *fmt, ...); - -char *dmixml_GetAttrValue(xmlNode *node, const char *key); -xmlNode *dmixml_FindNode(xmlNode *, const char *key); -inline char *dmixml_GetContent(xmlNode *node); -inline char *dmixml_GetNodeContent(xmlNode *node, const char *key); -char *dmixml_GetXPathContent(char *buf, size_t buflen, xmlXPathObject *xpo, int idx); - -#endif diff --git a/unit-tests/libxml_wrap.h b/unit-tests/libxml_wrap.h deleted file mode 100644 index eaa5e96..0000000 --- a/unit-tests/libxml_wrap.h +++ /dev/null @@ -1,249 +0,0 @@ -#include <Python.h> -#include <libxml/tree.h> -#include <libxml/parser.h> -#include <libxml/parserInternals.h> -#include <libxml/catalog.h> -#include <libxml/threads.h> -#include <libxml/nanoftp.h> -#include <libxml/nanohttp.h> -#include <libxml/uri.h> -#include <libxml/xpath.h> -#include <libxml/xpathInternals.h> -#include <libxml/debugXML.h> -#include <libxml/HTMLparser.h> -#include <libxml/HTMLtree.h> -#include <libxml/xinclude.h> -#include <libxml/xpointer.h> -#include <libxml/xmlunicode.h> -#include <libxml/xmlregexp.h> -#include <libxml/xmlautomata.h> -#include <libxml/xmlreader.h> -#ifdef LIBXML_SCHEMAS_ENABLED -#include <libxml/relaxng.h> -#include <libxml/xmlschemas.h> -#endif - -/** - * ATTRIBUTE_UNUSED: - * - * Macro used to signal to GCC unused function parameters - * Repeated here since the definition is not available when - * compiled outside the libxml2 build tree. - */ -#ifdef __GNUC__ -#ifdef ATTRIBUTE_UNUSED -#undef ATTRIBUTE_UNUSED -#endif -#ifndef ATTRIBUTE_UNUSED -#define ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -#endif /* ATTRIBUTE_UNUSED */ -#else -#define ATTRIBUTE_UNUSED -#endif - -#define PyxmlNode_Get(v) (((v) == Py_None) ? NULL : \ - (((PyxmlNode_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlNodePtr obj; -} PyxmlNode_Object; - -#define PyxmlXPathContext_Get(v) (((v) == Py_None) ? NULL : \ - (((PyxmlXPathContext_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlXPathContextPtr obj; -} PyxmlXPathContext_Object; - -#define PyxmlXPathParserContext_Get(v) (((v) == Py_None) ? NULL : \ - (((PyxmlXPathParserContext_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlXPathParserContextPtr obj; -} PyxmlXPathParserContext_Object; - -#define PyparserCtxt_Get(v) (((v) == Py_None) ? NULL : \ - (((PyparserCtxt_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlParserCtxtPtr obj; -} PyparserCtxt_Object; - -#define PyValidCtxt_Get(v) (((v) == Py_None) ? NULL : \ - (((PyValidCtxt_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlValidCtxtPtr obj; -} PyValidCtxt_Object; - -#define Pycatalog_Get(v) (((v) == Py_None) ? NULL : \ - (((Pycatalog_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlCatalogPtr obj; -} Pycatalog_Object; - -#ifdef LIBXML_REGEXP_ENABLED -#define PyxmlReg_Get(v) (((v) == Py_None) ? NULL : \ - (((PyxmlReg_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlRegexpPtr obj; -} PyxmlReg_Object; -#endif /* LIBXML_REGEXP_ENABLED */ - -#ifdef LIBXML_READER_ENABLED -#define PyxmlTextReader_Get(v) (((v) == Py_None) ? NULL : \ - (((PyxmlTextReader_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlTextReaderPtr obj; -} PyxmlTextReader_Object; - -#define PyxmlTextReaderLocator_Get(v) (((v) == Py_None) ? NULL : \ - (((PyxmlTextReaderLocator_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlTextReaderLocatorPtr obj; -} PyxmlTextReaderLocator_Object; -#endif - -#define PyURI_Get(v) (((v) == Py_None) ? NULL : \ - (((PyURI_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlErrorPtr obj; -} PyError_Object; - -#define PyError_Get(v) (((v) == Py_None) ? NULL : \ - (((PyError_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlOutputBufferPtr obj; -} PyoutputBuffer_Object; - -#define PyoutputBuffer_Get(v) (((v) == Py_None) ? NULL : \ - (((PyoutputBuffer_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlParserInputBufferPtr obj; -} PyinputBuffer_Object; - -#define PyinputBuffer_Get(v) (((v) == Py_None) ? NULL : \ - (((PyinputBuffer_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlURIPtr obj; -} PyURI_Object; - -/* FILE * have their own internal representation */ -#define PyFile_Get(v) (((v) == Py_None) ? NULL : \ - (PyFile_Check(v) ? (PyFile_AsFile(v)) : stdout)) - -#ifdef LIBXML_SCHEMAS_ENABLED -typedef struct { - PyObject_HEAD - xmlRelaxNGPtr obj; -} PyrelaxNgSchema_Object; - -#define PyrelaxNgSchema_Get(v) (((v) == Py_None) ? NULL : \ - (((PyrelaxNgSchema_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlRelaxNGParserCtxtPtr obj; -} PyrelaxNgParserCtxt_Object; - -#define PyrelaxNgParserCtxt_Get(v) (((v) == Py_None) ? NULL : \ - (((PyrelaxNgParserCtxt_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlRelaxNGValidCtxtPtr obj; -} PyrelaxNgValidCtxt_Object; - -#define PyrelaxNgValidCtxt_Get(v) (((v) == Py_None) ? NULL : \ - (((PyrelaxNgValidCtxt_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlSchemaPtr obj; -} PySchema_Object; - -#define PySchema_Get(v) (((v) == Py_None) ? NULL : \ - (((PySchema_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlSchemaParserCtxtPtr obj; -} PySchemaParserCtxt_Object; - -#define PySchemaParserCtxt_Get(v) (((v) == Py_None) ? NULL : \ - (((PySchemaParserCtxt_Object *)(v))->obj)) - -typedef struct { - PyObject_HEAD - xmlSchemaValidCtxtPtr obj; -} PySchemaValidCtxt_Object; - -#define PySchemaValidCtxt_Get(v) (((v) == Py_None) ? NULL : \ - (((PySchemaValidCtxt_Object *)(v))->obj)) - -#endif /* LIBXML_SCHEMAS_ENABLED */ - -PyObject * libxml_intWrap(int val); -PyObject * libxml_longWrap(long val); -PyObject * libxml_xmlCharPtrWrap(xmlChar *str); -PyObject * libxml_constxmlCharPtrWrap(const xmlChar *str); -PyObject * libxml_charPtrWrap(char *str); -PyObject * libxml_constcharPtrWrap(const char *str); -PyObject * libxml_charPtrConstWrap(const char *str); -PyObject * libxml_xmlCharPtrConstWrap(const xmlChar *str); -PyObject * libxml_xmlDocPtrWrap(xmlDocPtr doc); -PyObject * libxml_xmlNodePtrWrap(xmlNodePtr node); -PyObject * libxml_xmlAttrPtrWrap(xmlAttrPtr attr); -PyObject * libxml_xmlNsPtrWrap(xmlNsPtr ns); -PyObject * libxml_xmlAttributePtrWrap(xmlAttributePtr ns); -PyObject * libxml_xmlElementPtrWrap(xmlElementPtr ns); -PyObject * libxml_doubleWrap(double val); -PyObject * libxml_xmlXPathContextPtrWrap(xmlXPathContextPtr ctxt); -PyObject * libxml_xmlParserCtxtPtrWrap(xmlParserCtxtPtr ctxt); -PyObject * libxml_xmlXPathParserContextPtrWrap(xmlXPathParserContextPtr ctxt); -PyObject * libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj); -PyObject * libxml_xmlValidCtxtPtrWrap(xmlValidCtxtPtr valid); -PyObject * libxml_xmlCatalogPtrWrap(xmlCatalogPtr obj); -PyObject * libxml_xmlURIPtrWrap(xmlURIPtr uri); -PyObject * libxml_xmlOutputBufferPtrWrap(xmlOutputBufferPtr buffer); -PyObject * libxml_xmlParserInputBufferPtrWrap(xmlParserInputBufferPtr buffer); -#ifdef LIBXML_REGEXP_ENABLED -PyObject * libxml_xmlRegexpPtrWrap(xmlRegexpPtr regexp); -#endif /* LIBXML_REGEXP_ENABLED */ -#ifdef LIBXML_READER_ENABLED -PyObject * libxml_xmlTextReaderPtrWrap(xmlTextReaderPtr reader); -PyObject * libxml_xmlTextReaderLocatorPtrWrap(xmlTextReaderLocatorPtr locator); -#endif - -xmlXPathObjectPtr libxml_xmlXPathObjectPtrConvert(PyObject * obj); -#ifdef LIBXML_SCHEMAS_ENABLED -PyObject * libxml_xmlRelaxNGPtrWrap(xmlRelaxNGPtr ctxt); -PyObject * libxml_xmlRelaxNGParserCtxtPtrWrap(xmlRelaxNGParserCtxtPtr ctxt); -PyObject * libxml_xmlRelaxNGValidCtxtPtrWrap(xmlRelaxNGValidCtxtPtr valid); -PyObject * libxml_xmlSchemaPtrWrap(xmlSchemaPtr ctxt); -PyObject * libxml_xmlSchemaParserCtxtPtrWrap(xmlSchemaParserCtxtPtr ctxt); -PyObject * libxml_xmlSchemaValidCtxtPtrWrap(xmlSchemaValidCtxtPtr valid); -#endif /* LIBXML_SCHEMAS_ENABLED */ -PyObject * libxml_xmlErrorPtrWrap(xmlErrorPtr error); -PyObject * libxml_xmlSchemaSetValidErrors(PyObject * self, PyObject * args); |