minor optimization more work on the python bindings, they now support

* xpath.c: minor optimization
* python/generator.py python/libxml.c python/libxml.py
  python/libxml_wrap.h: more work on the python bindings,
  they now support XPath and there is no evident leak
Daniel
diff --git a/python/libxml_wrap.h b/python/libxml_wrap.h
index 00421f9..972e871 100644
--- a/python/libxml_wrap.h
+++ b/python/libxml_wrap.h
@@ -12,6 +12,7 @@
 #include <libxml/HTMLparser.h>
 #include <libxml/HTMLtree.h>
 #include <libxml/xinclude.h>
+#include <libxml/xpointer.h>
 
 #define PyxmlNode_Get(v) (((PyxmlNode_Object *)(v))->obj)
 
@@ -20,11 +21,24 @@
     xmlNodePtr obj;
 } PyxmlNode_Object;
 
+#define PyxmlXPathContext_Get(v) (((PyxmlXPathContext_Object *)(v))->obj)
+typedef struct {
+    PyObject_HEAD
+    xmlXPathContextPtr obj;
+} PyxmlXPathContext_Object;
+
 PyObject * libxml_intWrap(int val);
-PyObject * libxml_xmlCharPtrWrap(const xmlChar *str);
-PyObject * libxml_charPtrWrap(const char *str);
+PyObject * libxml_xmlCharPtrWrap(xmlChar *str);
+PyObject * libxml_constxmlCharPtrWrap(const xmlChar *str);
+PyObject * libxml_charPtrWrap(char *str);
+PyObject * libxml_constcharPtrWrap(const char *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_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj);