| 7030 | } |
| 7031 | |
| 7032 | PUGI__FN const void* document_buffer_order(const xpath_node& xnode) |
| 7033 | { |
| 7034 | xml_node_struct* node = xnode.node().internal_object(); |
| 7035 | |
| 7036 | if (node) |
| 7037 | { |
| 7038 | if ((get_document(node).header & xml_memory_page_contents_shared_mask) == 0) |
| 7039 | { |
| 7040 | if (node->name && (node->header & impl::xml_memory_page_name_allocated_or_shared_mask) == 0) return node->name; |
| 7041 | if (node->value && (node->header & impl::xml_memory_page_value_allocated_or_shared_mask) == 0) return node->value; |
| 7042 | } |
| 7043 | |
| 7044 | return 0; |
| 7045 | } |
| 7046 | |
| 7047 | xml_attribute_struct* attr = xnode.attribute().internal_object(); |
| 7048 | |
| 7049 | if (attr) |
| 7050 | { |
| 7051 | if ((get_document(attr).header & xml_memory_page_contents_shared_mask) == 0) |
| 7052 | { |
| 7053 | if ((attr->header & impl::xml_memory_page_name_allocated_or_shared_mask) == 0) return attr->name; |
| 7054 | if ((attr->header & impl::xml_memory_page_value_allocated_or_shared_mask) == 0) return attr->value; |
| 7055 | } |
| 7056 | |
| 7057 | return 0; |
| 7058 | } |
| 7059 | |
| 7060 | return 0; |
| 7061 | } |
| 7062 | |
| 7063 | struct document_order_comparator |
| 7064 | { |
no test coverage detected