From 93bb5dcb43a8f80044a12fab962ba546bcb5df6a Mon Sep 17 00:00:00 2001 From: "arseny.kapoulkine" Date: Thu, 22 Jul 2010 07:54:34 +0000 Subject: XPath: Restored document order sorting optimization (it's now automatic for nodes that were loaded and not significantly altered), minor traversal optimizations git-svn-id: http://pugixml.googlecode.com/svn/trunk@613 99668b35-9821-0410-8761-19e4c4f06640 --- src/pugixml.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/pugixml.cpp') diff --git a/src/pugixml.cpp b/src/pugixml.cpp index 3f37e65..3792c40 100644 --- a/src/pugixml.cpp +++ b/src/pugixml.cpp @@ -3216,8 +3216,13 @@ namespace pugi return (_attr && _attr->value) ? _attr->value : PUGIXML_TEXT(""); } - unsigned int xml_attribute::document_order() const + const void* xml_attribute::document_order() const { + if (!_attr) return 0; + + if ((_attr->header & xml_memory_page_name_allocated_mask) == 0) return _attr->name; + if ((_attr->header & xml_memory_page_value_allocated_mask) == 0) return _attr->value; + return 0; } @@ -4014,8 +4019,13 @@ namespace pugi return walker.end(arg_end); } - unsigned int xml_node::document_order() const + const void* xml_node::document_order() const { + if (!_root) return 0; + + if (_root->name && (_root->header & xml_memory_page_name_allocated_mask) == 0) return _root->name; + if (_root->value && (_root->header & xml_memory_page_value_allocated_mask) == 0) return _root->value; + return 0; } -- cgit v1.2.3