Age | Commit message (Collapse) | Author |
|
|
|
This does not really matter too much but it's better to be consistent.
|
|
Extra argument 'hint' is used to start the attribute lookup; if the attribute
is not found the lookup is restarted from the beginning of the attriubte list.
This allows to optimize attribute lookups if you need to get many attributes
from the node and can make assumptions about the likely ordering. The code is
correct regardless of the order, but it is faster than using vanilla lookups
if the order matches the calling order.
Fixes #30.
|
|
xpath_query, xpath_node_set and xpath_variable_set are now moveable.
This is a nice performance optimization for variable/node sets, and enables
storing xpath_query in containers without using pointers (it's only possible
now since the query is not copyable).
|
|
xpath_variable_set is essentially an associative container; it's about time it
became copyable.
Implementation is slightly tricky due to out of memory handling. Both copy ctor
and assignment operator have strong exception guarantee (even if exceptions are
disabled! which translates to "roll back on allocation errors").
|
|
The type of the variable is now initialized correctly in the ctor, so that there
is no interim invalid state.
|
|
Since the type of the set was updated before assignment, assigning in
out-of-memory condition could change the type to not match the content.
|
|
Fix code style and revert redundant parameters/whitespace changes.
Also remove format_each_attribute_on_new_line - we're only introducing one
extra formatting flag. The flag implies format_indent but does not include its
bitmask.
Also add a few more tests.
Fixes #14.
|
|
|
|
|
|
|
|
Also fix the float/double member order in the header file.
|
|
|
|
Make float/double round-trip
This change also adds xml_text::set and xml_attribute::set_value overloads for float so that float is only printed using just enough digits to represent float, instead of enough digits to represent double.
|
|
|
|
|
|
It's sufficient to define PUGIXML_HEADER_ONLY anywhere now, source is included
automatically.
This is a second attempt; this time it includes a workaround for QMake bug
that caused it to generate incorrect Makefile.
|
|
Make float/double round-trip
|
|
|
|
This should completely eliminate the confusion between load and load_file.
Of course, for compatibility reasons we have to preserve the old variant -
it will be deprecated in a future version and subsequently removed.
|
|
select_node is shorter and mistyping nodes as node or vice versa should
not lead to any issues since return types are substantially different.
select_single_node method still works and will be deprecated with an
attribute and removed at some point.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1065 99668b35-9821-0410-8761-19e4c4f06640
|
|
This method is equivalent to xml_node::select_single_node. This makes
select_single_node faster in certain cases by avoiding an allocation and -
more importantly - paves the way for future step optimizations.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1064 99668b35-9821-0410-8761-19e4c4f06640
|
|
The page no longer contains 'data' field to use sizeof everywhere instead
of offsetof/sizeof inconsistency (that is required because some compilers
don't recognize offsetof as compile-time constant).
The page no longer contains 'memory' field that is now encoded as an
offset byte before the page - this allows us to save one pointer from the
static page in the document to keep the size the same as in v1.2 (binary
compatibility).
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1046 99668b35-9821-0410-8761-19e4c4f06640
|
|
Moving nodes results in node order being different from order of allocated
names/values; since move is O(1) we can't mark the moved nodes in a
subtree so we have to disable the optimization for the entire document.
Similarly, if a node is composed of multiple buffers, comparing nodes in
different buffers does not result in meaningful order.
Since we value correctness over performance, mark the entire document in
these cases to disable sorting optimization.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1034 99668b35-9821-0410-8761-19e4c4f06640
|
|
This is required to make it possible to use a pointer to one of the
buffers with the document data in nodes but keep offset_debug and (more
importantly) XPath document order comparison optimization working.
The change increases memory page alignment to 64 bytes (so requires +32
bytes for every page allocation, which should not be a problem - even with
non-default 4k pages this is <1% extra cost, with default 32k pages the
overhead is 0.1%)
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1031 99668b35-9821-0410-8761-19e4c4f06640
|
|
The operations itself are O(1) since they just rearrange pointers.
However, the validation step is O(logN) due to a sanity check to prevent recursive trees.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1002 99668b35-9821-0410-8761-19e4c4f06640
|
|
Exposing true mutable iterators allows the user to violate sorting order
contract. However, some generic algorithms (i.e. Boost ForEach) require
iterator methods to be present.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@998 99668b35-9821-0410-8761-19e4c4f06640
|
|
qmake.
Qmake treats all files that are #include-d as header files, even if the #include is
guarded by an #ifdef. It looks like the only solution that allows for transparent
header-only support based on preprocessor define involves moving the actual source
into a separate header file and including this file in pugixml.cpp.
Let's not do it yet.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@990 99668b35-9821-0410-8761-19e4c4f06640
|
|
git-svn-id: https://pugixml.googlecode.com/svn/trunk@987 99668b35-9821-0410-8761-19e4c4f06640
|
|
Introduce a notable behavior change in default parsing mode: documents without a
document element node are now considered invalid. This is technically a breaking change,
however the amount of documents it affects is very small, all parsed data still persists,
and lack of this check results in very confusing behavior in a number of cases.
In order to be able to parse documents without an element node, a fragment parsing flag is
introduced.
Parsing a buffer in fragment mode treats the buffer as a fragment of a valid XML.
As a consequence, top-level PCDATA is added to the tree; additionally, there are no
restrictions on the number of nodes -- so documents without a document element are considered
valid.
Due to the way parsing works internally, load_buffer_inplace occasionally can not preserve
the document contents if it's parsed in a fragment mode. While unfortunate, this problem is
fundamental; since the use case is relatively obscure, hopefully documenting this shortcoming
will be enough.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@980 99668b35-9821-0410-8761-19e4c4f06640
|
|
git-svn-id: https://pugixml.googlecode.com/svn/trunk@973 99668b35-9821-0410-8761-19e4c4f06640
|
|
Add tentative changelog for 1.4 to the documentation.
Since Google Code no longer allows file upload, replace download links with GitHub release links.
git-svn-id: http://pugixml.googlecode.com/svn/trunk@968 99668b35-9821-0410-8761-19e4c4f06640
|
|
git-svn-id: http://pugixml.googlecode.com/svn/trunk@967 99668b35-9821-0410-8761-19e4c4f06640
|
|
PUGIXML_HEADER_ONLY anywhere now, source is automatically included
git-svn-id: http://pugixml.googlecode.com/svn/trunk@964 99668b35-9821-0410-8761-19e4c4f06640
|
|
(autodetection is not implemented yet)
git-svn-id: http://pugixml.googlecode.com/svn/trunk@962 99668b35-9821-0410-8761-19e4c4f06640
|
|
xml_node_iterator in terms of internals
git-svn-id: http://pugixml.googlecode.com/svn/trunk@960 99668b35-9821-0410-8761-19e4c4f06640
|
|
value vs child_value confusion.
git-svn-id: http://pugixml.googlecode.com/svn/trunk@954 99668b35-9821-0410-8761-19e4c4f06640
|
|
msvc6)
git-svn-id: http://pugixml.googlecode.com/svn/trunk@939 99668b35-9821-0410-8761-19e4c4f06640
|
|
documents from fragments (compared to parse & clone)
git-svn-id: http://pugixml.googlecode.com/svn/trunk@936 99668b35-9821-0410-8761-19e4c4f06640
|
|
existing subtree; can be used to implement append_buffer.
git-svn-id: http://pugixml.googlecode.com/svn/trunk@922 99668b35-9821-0410-8761-19e4c4f06640
|
|
BOOST_FOREACH_RUN_TIME_CONST_RVALUE_DETECTION feature (i.e. SunCC 12). Fixes issue 164.
git-svn-id: http://pugixml.googlecode.com/svn/trunk@919 99668b35-9821-0410-8761-19e4c4f06640
|
|
Fixes issue 161.
git-svn-id: http://pugixml.googlecode.com/svn/trunk@917 99668b35-9821-0410-8761-19e4c4f06640
|
|
const_cast workaround for BCC32 bug
git-svn-id: http://pugixml.googlecode.com/svn/trunk@915 99668b35-9821-0410-8761-19e4c4f06640
|
|
git-svn-id: http://pugixml.googlecode.com/svn/trunk@897 99668b35-9821-0410-8761-19e4c4f06640
|
|
git-svn-id: http://pugixml.googlecode.com/svn/trunk@896 99668b35-9821-0410-8761-19e4c4f06640
|
|
git-svn-id: http://pugixml.googlecode.com/svn/trunk@895 99668b35-9821-0410-8761-19e4c4f06640
|
|
to all as_* member functions
git-svn-id: http://pugixml.googlecode.com/svn/trunk@893 99668b35-9821-0410-8761-19e4c4f06640
|
|
git-svn-id: http://pugixml.googlecode.com/svn/trunk@890 99668b35-9821-0410-8761-19e4c4f06640
|
|
xml_node::attributes() for C++11 range-based for loop
git-svn-id: http://pugixml.googlecode.com/svn/trunk@889 99668b35-9821-0410-8761-19e4c4f06640
|
|
git-svn-id: http://pugixml.googlecode.com/svn/trunk@883 99668b35-9821-0410-8761-19e4c4f06640
|