[Lxml-checkins] r44649 - lxml/trunk/src/lxml

scoder at codespeak.net scoder at codespeak.net
Sun Jul 1 15:00:45 CEST 2007


Author: scoder
Date: Sun Jul  1 15:00:43 2007
New Revision: 44649

Modified:
   lxml/trunk/src/lxml/etree.pyx
   lxml/trunk/src/lxml/python.pxd
Log:
small optimisation in _Element.nsmap

Modified: lxml/trunk/src/lxml/etree.pyx
==============================================================================
--- lxml/trunk/src/lxml/etree.pyx	(original)
+++ lxml/trunk/src/lxml/etree.pyx	Sun Jul  1 15:00:43 2007
@@ -739,15 +739,16 @@
             cdef xmlNs* c_ns
             nsmap = {}
             c_node = self._c_node
-            while c_node is not NULL and _isElement(c_node):
+            while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
                 c_ns = c_node.nsDef
                 while c_ns is not NULL:
                     if c_ns.prefix is NULL:
                         prefix = None
                     else:
                         prefix = funicode(c_ns.prefix)
-                    if prefix not in nsmap:
-                        nsmap[prefix] = funicode(c_ns.href)
+                    if not python.PyDict_Contains(nsmap, prefix):
+                        python.PyDict_SetItem(
+                            nsmap, prefix, funicode(c_ns.href))
                     c_ns = c_ns.next
                 c_node = c_node.parent
             return nsmap

Modified: lxml/trunk/src/lxml/python.pxd
==============================================================================
--- lxml/trunk/src/lxml/python.pxd	(original)
+++ lxml/trunk/src/lxml/python.pxd	Sun Jul  1 15:00:43 2007
@@ -55,6 +55,7 @@
     cdef int PyDict_DelItem(object d, object key) except -1
     cdef void PyDict_Clear(object d)
     cdef object PyDict_Copy(object d)
+    cdef int PyDict_Contains(object d, object key) except -1
     cdef Py_ssize_t PyDict_Size(object d)
     cdef object PySequence_List(object o)
     cdef object PySequence_Tuple(object o)


More information about the lxml-checkins mailing list