[libxml2] Add support for xpathRegisterVariable in Python
- From: Daniel Veillard <veillard src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libxml2] Add support for xpathRegisterVariable in Python
- Date: Wed, 27 Mar 2013 08:13:31 +0000 (UTC)
commit 519bc6a3ab82445a8719f548d0450efe02cc9c82
Author: Shaun McCance <shaunm gnome org>
Date: Wed Sep 19 13:41:56 2012 -0400
Add support for xpathRegisterVariable in Python
python/libxml.c | 26 ++++++++++++++++++++++++++
python/libxml2-python-api.xml | 9 +++++++++
python/types.c | 1 -
3 files changed, 35 insertions(+), 1 deletions(-)
---
diff --git a/python/libxml.c b/python/libxml.c
index 8c66fed..8bb3db2 100644
--- a/python/libxml.c
+++ b/python/libxml.c
@@ -2329,6 +2329,32 @@ libxml_xmlRegisterXPathFunction(ATTRIBUTE_UNUSED PyObject * self,
return (py_retval);
}
+PyObject *
+libxml_xmlXPathRegisterVariable(ATTRIBUTE_UNUSED PyObject * self,
+ PyObject * args)
+{
+ PyObject *py_retval;
+ int c_retval = 0;
+ xmlChar *name;
+ xmlChar *ns_uri;
+ xmlXPathContextPtr ctx;
+ xmlXPathObjectPtr val;
+ PyObject *pyobj_ctx;
+ PyObject *pyobj_value;
+
+ if (!PyArg_ParseTuple
+ (args, (char *) "OszO:xpathRegisterVariable", &pyobj_ctx, &name,
+ &ns_uri, &pyobj_value))
+ return (NULL);
+
+ ctx = (xmlXPathContextPtr) PyxmlXPathContext_Get(pyobj_ctx);
+ val = libxml_xmlXPathObjectPtrConvert(pyobj_value);
+
+ c_retval = xmlXPathRegisterVariableNS(ctx, name, ns_uri, val);
+ py_retval = libxml_intWrap(c_retval);
+ return (py_retval);
+}
+
/************************************************************************
* *
* Global properties access *
diff --git a/python/libxml2-python-api.xml b/python/libxml2-python-api.xml
index 42f661d..032b44b 100644
--- a/python/libxml2-python-api.xml
+++ b/python/libxml2-python-api.xml
@@ -10,6 +10,15 @@
<arg name='ns_uri' type='xmlChar *' info='the namespace or NULL'/>
<arg name='f' type='pythonObject' info='the python function'/>
</function>
+ <function name='xmlXPathRegisterVariable' file='python'>
+ <cond>defined(LIBXML_XPATH_ENABLED)</cond>
+ <info>Register a variable with the XPath context</info>
+ <return type='int' info="1 in case of success, 0 or -1 in case of error"/>
+ <arg name='ctx' type='xmlXPathContextPtr' info='the xpathContext'/>
+ <arg name='name' type='xmlChar *' info='the variable name'/>
+ <arg name='ns_uri' type='xmlChar *' info='the namespace or NULL'/>
+ <arg name='value' type='pythonObject' info='the value'/>
+ </function>
<function name='xmlNewNode' file='python'>
<info>Create a new Node</info>
<return type='xmlNodePtr' info="A new element node"/>
diff --git a/python/types.c b/python/types.c
index 54b50de..2c9ab22 100644
--- a/python/types.c
+++ b/python/types.c
@@ -622,7 +622,6 @@ libxml_xmlXPathObjectPtrConvert(PyObject * obj)
printf("Unable to convert Python Object to XPath");
#endif
}
- Py_DECREF(obj);
return (ret);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]