Arseny Kapoulkine
947f043fa0
Remove redundant reference indirection for internal functions.
...
Since xml_node/attribute are pointer wrappers it's cheaper to pass them by
value. This makes XPath evaluation 4% faster and node printing 2% faster.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1029 99668b35-9821-0410-8761-19e4c4f06640
2014-09-28 23:36:18 +00:00
Arseny Kapoulkine
ddf6db3078
Implement non-recursive node copying
...
This makes node copying 6% faster, prevents it from ever running out of
stack space and makes the profiling results more actionable for profilers
that can't merge information from recursive calls.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1027 99668b35-9821-0410-8761-19e4c4f06640
2014-09-28 23:23:28 +00:00
Arseny Kapoulkine
ae99f000bb
Internal refactoring: rename xml_buffered_writer::write overloads
...
Renames write to write_string and write_buffer to make it easier to
distinguish between them in profiling runs and commit messages...
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1025 99668b35-9821-0410-8761-19e4c4f06640
2014-09-25 05:26:55 +00:00
Arseny Kapoulkine
c1829ad29d
Optimize xml_buffered_writer::write(char_t...)
...
Make it easier for the compiler to generate good code by loading bufsize
into a local once and returning new offset from flush(). This results in
7% performance gain.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1024 99668b35-9821-0410-8761-19e4c4f06640
2014-09-25 05:19:41 +00:00
Arseny Kapoulkine
ec050e08a4
Optimize xml_buffered_writer::write(const char_t*)
...
Instead of computing the length and doing memcpy we now copy the head of
the string into the buffer (like strcpy) and then use memcpy for tail if
necessary. This results in 10-15% speedup for writing typical documents with
a mix of short and long strings.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1023 99668b35-9821-0410-8761-19e4c4f06640
2014-09-24 05:22:26 +00:00
Arseny Kapoulkine
b480523f87
XPath: Optimize //name queries when possible
...
//name means /descendant-or-self::node()/child::name, but we frequently
can replace it with /descendant::name. This means we do not have to build
up a temporary node set with all descendants that can lead to 3x speedups.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1021 99668b35-9821-0410-8761-19e4c4f06640
2014-09-23 04:39:58 +00:00
Arseny Kapoulkine
bb6eaa7565
Optimize and refactor node output implementation a bit (+5% perf gain)
...
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1019 99668b35-9821-0410-8761-19e4c4f06640
2014-09-22 06:29:14 +00:00
Arseny Kapoulkine
fff1991743
Optimize text_output_indent
...
We now precompute indent length and have a fast path for lengths 0..4 that
avoids calling memcpy in a tight loop. This makes node output 20-30%
faster if indentation is enabled.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1018 99668b35-9821-0410-8761-19e4c4f06640
2014-09-21 21:52:30 +00:00
Arseny Kapoulkine
4ed5972d4f
Implement non-recursive node output
...
This makes node output 3% faster, prevents it from ever running out of
stack space and makes the profiling results more actionable for profilers
that can't merge information from recursive calls.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1014 99668b35-9821-0410-8761-19e4c4f06640
2014-09-21 21:52:07 +00:00
Arseny Kapoulkine
6e1c9ec7d1
Fix VC 14 warnings
...
Fixes C4458: declaration of 'var' hides class member
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1011 99668b35-9821-0410-8761-19e4c4f06640
2014-09-15 02:41:42 +00:00
Arseny Kapoulkine
211212c986
Unroll performance-critical loops 4x
...
Use a special macro that unrolls the loop body and uses static branch prediction
to improve code generation.
This increases performance across all data sets from benchmark; clang x64 is 10%-40%
faster, clang x86 is 5%-20% faster, msvc is 5%-10% faster.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1008 99668b35-9821-0410-8761-19e4c4f06640
2014-08-26 06:10:52 +00:00
Arseny Kapoulkine
0f5101bfc5
Use PUGI__SCANWHILE for strconv utilities
...
This makes it easier to optimize strconv. For consistency move all definitions of parser-internal macros to one place.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1007 99668b35-9821-0410-8761-19e4c4f06640
2014-08-25 07:13:42 +00:00
Arseny Kapoulkine
f2e68d98e7
Rename ENDSWITH to PUGI__ENDSWITH
...
Also add it to #undef list at the end to avoid conflicts
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1006 99668b35-9821-0410-8761-19e4c4f06640
2014-08-25 06:41:16 +00:00
Arseny Kapoulkine
b5556f184f
Move attribute name setup after pointer setup to handle exceptions better
...
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1005 99668b35-9821-0410-8761-19e4c4f06640
2014-08-11 00:13:47 +00:00
Arseny Kapoulkine
a15efb2def
Implement node moving functions.
...
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
2014-08-10 23:52:49 +00:00
Arseny Kapoulkine
0e16e45049
Refactor low-level node manipulation routines into separate functions.
...
This should make moving implementation easier.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@1001 99668b35-9821-0410-8761-19e4c4f06640
2014-08-10 22:35:46 +00:00
Arseny Kapoulkine
757c494340
Improve XPath allocator performance
...
When allocating new pages, make sure that the page has at least 1/4 of the
base page size free. This makes sure that we can do small allocations after
big allocations (i.e. huge node lists) without doing a heap alloc.
This is important because XPath stack code always reclaims extra pages after
evaluating sub-expressions, so allocating a small chunk of memory and then
rolling the state back is a common case (filtering a node list using a
predicate usually does this).
A better solution involves smarter allocation rollback strategy, but the
implemented solution is simple and practical.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@999 99668b35-9821-0410-8761-19e4c4f06640
2014-06-01 19:12:36 +00:00
Arseny Kapoulkine
6d43ad2870
Add xpath_node_set::iterator that is the same as const_iterator.
...
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
2014-05-04 05:42:26 +00:00
Arseny Kapoulkine
cfd30d903d
Revert automatic support for header-only mode since it creates problems with 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
2014-02-25 03:52:10 +00:00
Arseny Kapoulkine
0a747e6c1a
Add parse_trim_pcdata parse option.
...
git-svn-id: https://pugixml.googlecode.com/svn/trunk@987 99668b35-9821-0410-8761-19e4c4f06640
2014-02-25 03:41:54 +00:00
Arseny Kapoulkine
934bddcfa6
Fix gap collapsing during PCDATA parsing for fragment mode.
...
git-svn-id: https://pugixml.googlecode.com/svn/trunk@985 99668b35-9821-0410-8761-19e4c4f06640
2014-02-23 19:28:27 +00:00
Arseny Kapoulkine
cb99aa5065
Fix compilation warning for toolsets where wchar_t == char.
...
git-svn-id: https://pugixml.googlecode.com/svn/trunk@983 99668b35-9821-0410-8761-19e4c4f06640
2014-02-12 04:38:57 +00:00
Arseny Kapoulkine
47c15ad949
Implement document fragment parsing.
...
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
2014-02-11 06:45:27 +00:00
Arseny Kapoulkine
79fb68ac41
Use a null-terminated buffer for parsing as often as possible.
...
Parsing used to work on a non null-terminated buffer, inserting a fake null terminator to increase performance.
This makes it impossible to implement fragment parsing that preserves PCDATA contents (as witnessed by some
tests for boundary conditions that actually depended on this behavior).
Since almost all uses result in us allocating an internal buffer anyway, the new policy is to make sure all buffers
that are allocated by pugixml are null-terminated - the only exception now is external calls to load_buffer_inplace
that don't trigger encoding conversion.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@977 99668b35-9821-0410-8761-19e4c4f06640
2014-02-10 16:57:04 +00:00
Arseny Kapoulkine
9d9fd0a71f
Rename parse to parse_tree and convert_buffer to convert_buffer_output to reduce overloading.
...
git-svn-id: https://pugixml.googlecode.com/svn/trunk@975 99668b35-9821-0410-8761-19e4c4f06640
2014-02-10 16:56:35 +00:00
Arseny Kapoulkine
acf9dee0dd
Update PUGIXML_VERSION define
...
git-svn-id: https://pugixml.googlecode.com/svn/trunk@973 99668b35-9821-0410-8761-19e4c4f06640
2014-02-10 05:11:05 +00:00
Arseny Kapoulkine
0456f5deea
Update version to 1.4 and copyright year to 2014.
...
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
2014-02-08 23:01:58 +00:00
Arseny Kapoulkine
2bd99cff86
Enable long long support for C++11 and for MSVC 2008+
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@967 99668b35-9821-0410-8761-19e4c4f06640
2014-02-08 21:59:14 +00:00
Arseny Kapoulkine
8c1502e64f
Add PUGIXML_HAS_LONG_LONG to pugiconfig.hpp
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@965 99668b35-9821-0410-8761-19e4c4f06640
2014-02-08 21:03:07 +00:00
Arseny Kapoulkine
6056ba2f89
Simplify header-only mode usage: it's sufficient to define PUGIXML_HEADER_ONLY anywhere now, source is automatically included
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@964 99668b35-9821-0410-8761-19e4c4f06640
2014-02-08 20:44:20 +00:00
Arseny Kapoulkine
f9bbc39bd9
Implement long long support if PUGIXML_HAS_LONG_LONG is defined (autodetection is not implemented yet)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@962 99668b35-9821-0410-8761-19e4c4f06640
2014-02-08 20:36:09 +00:00
Arseny Kapoulkine
c3550de72b
Ignore stream errors generated by a failing tellg() for non-seekable streams
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@961 99668b35-9821-0410-8761-19e4c4f06640
2014-01-27 04:06:35 +00:00
Arseny Kapoulkine
0938714fa0
Change xml_named_node_iterator to be bidirectional and to match xml_node_iterator in terms of internals
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@960 99668b35-9821-0410-8761-19e4c4f06640
2014-01-27 03:54:05 +00:00
Arseny Kapoulkine
4d8974f1fd
Replace offsetof with sizeof since some compilers don't recognize offsetof as a compile-time constant expression
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@959 99668b35-9821-0410-8761-19e4c4f06640
2014-01-15 18:13:51 +00:00
Arseny Kapoulkine
7f6b062e9f
Implement automatic hexadecimal decoding for xml_attribute::as_int and xml_text::as_int. This is effectively a form of strtol with base 0, but without octal support.
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@958 99668b35-9821-0410-8761-19e4c4f06640
2014-01-15 04:28:10 +00:00
arseny.kapoulkine@gmail.com
783af79264
Fix gcc-4.9 compilation warning when using -Wstrict-overflow
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@957 99668b35-9821-0410-8761-19e4c4f06640
2013-12-20 08:24:38 +00:00
arseny.kapoulkine@gmail.com
79109a8546
Fix gcc-4.8 compilation warning when using -Wstrict-overflow
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@956 99668b35-9821-0410-8761-19e4c4f06640
2013-11-26 04:34:41 +00:00
arseny.kapoulkine@gmail.com
48600c3a9d
Fix _root checking inconsistency in xml_document::destroy
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@955 99668b35-9821-0410-8761-19e4c4f06640
2013-08-02 02:43:13 +00:00
arseny.kapoulkine@gmail.com
888934dac6
Clarify value() behavior in header comments; hopefully that'll help with value vs child_value confusion.
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@954 99668b35-9821-0410-8761-19e4c4f06640
2013-07-27 11:32:44 +00:00
arseny.kapoulkine@gmail.com
4e1add1a46
Fix invalid assertion in XPath: reallocation can result in allocating buffer of the same size due to pointer-sized alignment
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@946 99668b35-9821-0410-8761-19e4c4f06640
2013-03-20 02:44:05 +00:00
arseny.kapoulkine@gmail.com
33301e9f42
Fix XPath return type for contains() and string-length()
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@944 99668b35-9821-0410-8761-19e4c4f06640
2013-03-19 15:11:40 +00:00
arseny.kapoulkine@gmail.com
2e4f6c54a8
Work around clang static analysis false positives using extra assertions.
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@943 99668b35-9821-0410-8761-19e4c4f06640
2012-12-08 04:06:37 +00:00
arseny.kapoulkine@gmail.com
389d1c2893
Only include wchar.h in PUGIXML_WCHAR_MODE; use a custom implementation of wcslen in case there is no wide character support.
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@942 99668b35-9821-0410-8761-19e4c4f06640
2012-12-07 08:11:23 +00:00
arseny.kapoulkine@gmail.com
30549910db
Fix uninitialized variable in case append_buffer fails with out of memory due to buffer copy allocation
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@941 99668b35-9821-0410-8761-19e4c4f06640
2012-12-07 06:56:31 +00:00
arseny.kapoulkine@gmail.com
9b9a414ab6
Compatibility fixes (fixed warnings in gcc, msvc7, fixed errors in bcc, cw, msvc6)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@939 99668b35-9821-0410-8761-19e4c4f06640
2012-12-07 06:35:53 +00:00
arseny.kapoulkine@gmail.com
456527b44a
Implement xml_node::append_buffer as a faster alternative to assembling documents from fragments (compared to parse & clone)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@936 99668b35-9821-0410-8761-19e4c4f06640
2012-12-07 04:49:23 +00:00
arseny.kapoulkine@gmail.com
a3aa5d39b8
XPath stack optimization: Reduce convert_number_to_string stack usage by reducing mantissa_buffer size and filling resulting string on heap without an extra copy from stack.
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@933 99668b35-9821-0410-8761-19e4c4f06640
2012-11-18 23:11:59 +00:00
arseny.kapoulkine@gmail.com
c95900e354
XPath: Fix BCC/DMC compilation (overloading workaround)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@932 99668b35-9821-0410-8761-19e4c4f06640
2012-11-18 01:14:33 +00:00
arseny.kapoulkine@gmail.com
4fe55906fa
XPath stack optimization: Rewrite part of the recursive descent parser to precedence climbing to reduce stack usage
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@931 99668b35-9821-0410-8761-19e4c4f06640
2012-11-18 01:11:50 +00:00
arseny.kapoulkine@gmail.com
ed30b95a42
XPath stack optimization: Reduce stack usage during parsing by sharing scratch buffer for variable/number parsing (we only need one per parser)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@928 99668b35-9821-0410-8761-19e4c4f06640
2012-11-17 21:52:02 +00:00
arseny.kapoulkine@gmail.com
971fd96764
Fix PUGIXML_MEMORY_* constants for header-only mode
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@927 99668b35-9821-0410-8761-19e4c4f06640
2012-11-17 04:55:24 +00:00
arseny.kapoulkine@gmail.com
43f3888dc1
Fix undefined pointer arithmetic for reverse() and unique() in case the range is empty (begin == end)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@926 99668b35-9821-0410-8761-19e4c4f06640
2012-11-08 16:01:23 +00:00
arseny.kapoulkine@gmail.com
973296bcb1
Minor refactoring
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@923 99668b35-9821-0410-8761-19e4c4f06640
2012-10-31 04:56:27 +00:00
arseny.kapoulkine@gmail.com
09f9ab079e
Adjust parsing so that it is possible to parse a document fragment into an existing subtree; can be used to implement append_buffer.
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@922 99668b35-9821-0410-8761-19e4c4f06640
2012-10-31 04:47:17 +00:00
arseny.kapoulkine@gmail.com
2876af6773
Fix find_child_by_attribute assertion for attributes with null name/value.
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@920 99668b35-9821-0410-8761-19e4c4f06640
2012-09-29 06:36:29 +00:00
arseny.kapoulkine@gmail.com
ff715f672f
Add xml_object_range::iterator to work around Boost.ForEach errors without 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
2012-08-02 09:22:43 +00:00
arseny.kapoulkine@gmail.com
215ecbcff6
Add PUGIXML_CLASS to xml_named_node_iterator to make dllexport possible. Fixes issue 161.
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@917 99668b35-9821-0410-8761-19e4c4f06640
2012-06-28 15:36:58 +00:00
arseny.kapoulkine@gmail.com
a9a537ad40
Iterator improvements: safety assertions in xml_named_node_iterator, const_cast workaround for BCC32 bug
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@915 99668b35-9821-0410-8761-19e4c4f06640
2012-05-02 15:38:09 +00:00
arseny.kapoulkine@gmail.com
b1a1eef0c8
Removed diag_push for SNC since the warning bug is not fixed even in the latest version
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@901 99668b35-9821-0410-8761-19e4c4f06640
2012-04-12 03:28:02 +00:00
arseny.kapoulkine@gmail.com
bda8e935e9
Updated version number and copyright year everywhere
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@897 99668b35-9821-0410-8761-19e4c4f06640
2012-04-03 05:04:07 +00:00
arseny.kapoulkine@gmail.com
7d18b33292
Whitespace-only change: set noexpandtab & retab!
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@896 99668b35-9821-0410-8761-19e4c4f06640
2012-04-03 04:58:11 +00:00
arseny.kapoulkine@gmail.com
cb1d83d32a
Fixed xml_named_node_iterator category for MSVC6/7, IC8 and SunCC
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@895 99668b35-9821-0410-8761-19e4c4f06640
2012-04-03 04:47:14 +00:00
arseny.kapoulkine@gmail.com
40777b2ce1
Added xml_attribute::as_string and xml_text::as_string, added default value to all as_* member functions
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@893 99668b35-9821-0410-8761-19e4c4f06640
2012-04-03 04:44:36 +00:00
arseny.kapoulkine@gmail.com
951ff9d1a6
xml_object_range now supports Boost.ForEach
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@890 99668b35-9821-0410-8761-19e4c4f06640
2012-03-27 05:25:49 +00:00
arseny.kapoulkine@gmail.com
a10bb9d766
Introduced xml_named_node_iterator, introduced xml_node::children() and 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
2012-03-27 05:23:24 +00:00
arseny.kapoulkine@gmail.com
62204df423
Write BOM as U+FEFF to buffered writer; this makes sure we don't have a very small unbuffered write with custom writer implementations
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@887 99668b35-9821-0410-8761-19e4c4f06640
2012-03-27 04:23:05 +00:00
arseny.kapoulkine@gmail.com
343107b3de
Added format_save_file_text flag for opening the file in text mode
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@883 99668b35-9821-0410-8761-19e4c4f06640
2012-03-23 05:37:45 +00:00
arseny.kapoulkine@gmail.com
046073830b
Fixed header-only compilation
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@882 99668b35-9821-0410-8761-19e4c4f06640
2012-03-23 04:26:13 +00:00
arseny.kapoulkine@gmail.com
5f9656c8b9
xml_document::save_file now checks for file I/O errors, fixed compilation
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@881 99668b35-9821-0410-8761-19e4c4f06640
2012-03-23 04:24:56 +00:00
arseny.kapoulkine@gmail.com
898b2cbabb
Extracted file saving into a separate function, fixed DMC compilation (set_value_buffer cast error)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@880 99668b35-9821-0410-8761-19e4c4f06640
2012-03-23 04:21:45 +00:00
arseny.kapoulkine@gmail.com
dae6d908e5
Const-correctness 'fixes' (it's impossible to be const-correct here so remove redundant member)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@879 99668b35-9821-0410-8761-19e4c4f06640
2012-03-23 03:57:12 +00:00
arseny.kapoulkine@gmail.com
35c0c6aa5c
Fixed member shadowing warnings for gcc
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@878 99668b35-9821-0410-8761-19e4c4f06640
2012-03-23 03:51:00 +00:00
arseny.kapoulkine@gmail.com
5e33adbc68
Added xml_text::data() (for regular xml_node operations, i.e. remove_child)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@876 99668b35-9821-0410-8761-19e4c4f06640
2012-03-23 03:40:12 +00:00
arseny.kapoulkine@gmail.com
43fac19d81
Added xml_text &&/|| operators for Borland C++
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@874 99668b35-9821-0410-8761-19e4c4f06640
2012-03-23 03:24:44 +00:00
arseny.kapoulkine@gmail.com
48391dbe8c
Moved default value selection logic into get_value functions, added xml_node::text() accessor
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@873 99668b35-9821-0410-8761-19e4c4f06640
2012-03-23 03:08:38 +00:00
arseny.kapoulkine@gmail.com
096a6d0e9c
Implemented xml_text helper (work in progress)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@872 99668b35-9821-0410-8761-19e4c4f06640
2012-03-23 03:02:57 +00:00
arseny.kapoulkine@gmail.com
17bd46eee6
Extracted xml_attribute value setter/getter code to separate functions (for xml_text)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@871 99668b35-9821-0410-8761-19e4c4f06640
2012-03-23 02:37:18 +00:00
arseny.kapoulkine@gmail.com
2f3c31dcd3
Reverted accidental submit
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@870 99668b35-9821-0410-8761-19e4c4f06640
2012-03-20 07:07:22 +00:00
arseny.kapoulkine@gmail.com
5e8e325d85
Fixed strict aliasing violation warning in output buffer conversion via union. Fixed BlackBerry NDK -O3 compilation in header-only wchar mode.
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@869 99668b35-9821-0410-8761-19e4c4f06640
2012-03-20 07:07:01 +00:00
arseny.kapoulkine@gmail.com
3a282e2f0b
STL forward declaration experiment failed; revert to using STL headers. Reasons: bugs in old compilers (i.e. SunCC, DMC, BCC require using the same names in forward declarations as in actual declarations), incompatibility between buggy compilers and different STL versions (i.e. SunCC has two STL versions with mismatching names), problems with C++0x inline namespaces (used in Clang libc++, see http://llvm.org/bugs/show_bug.cgi?id=5590 ), and this is an undefined behavior so other problems may come up.
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@868 99668b35-9821-0410-8761-19e4c4f06640
2012-03-20 06:19:31 +00:00
arseny.kapoulkine@gmail.com
4935e2356f
MinGW does not have _wfopen in strict ANSI mode (fixes mingw45 C++0x compilation)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@867 99668b35-9821-0410-8761-19e4c4f06640
2012-03-20 06:16:01 +00:00
arseny.kapoulkine@gmail.com
40ed110136
Explicitly ignore fwrite result - nothing else can be done with the current writer interface, unfortunately
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@866 99668b35-9821-0410-8761-19e4c4f06640
2012-03-20 05:47:55 +00:00
arseny.kapoulkine@gmail.com
07cda98d66
Fixed Borland C++ issues when compiling pugixml as header-only
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@864 99668b35-9821-0410-8761-19e4c4f06640
2012-03-20 04:00:10 +00:00
arseny.kapoulkine@gmail.com
800288d351
Intel C++ 11 has the same warning pop bug... Disable warning popping on all Intel C++ versions. Fixes Intel C++ 11 compilation in PUGIXML_NO_STL mode.
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@862 99668b35-9821-0410-8761-19e4c4f06640
2012-03-15 07:08:32 +00:00
arseny.kapoulkine@gmail.com
a58131c9dc
Added PUGIXML_MEMORY constants for tweaking memory behaviour; useful for embedded systems or for unusual cases (i.e. thousands of small documents in memory)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@860 99668b35-9821-0410-8761-19e4c4f06640
2012-03-14 06:04:50 +00:00
arseny.kapoulkine@gmail.com
e4ae729370
Dereferemce operators in both iterators are now const; this fixes iterator compatibility with parts of Boost Iterator (i.e. filter_iterator). It is now possible to damage the state of const_iterator by directly mutating internal handle - working around that introduces additional performance penalties and is generally extremely unlikely to be useful - constant iterator objects are rarely used.
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@858 99668b35-9821-0410-8761-19e4c4f06640
2012-03-14 05:34:00 +00:00
arseny.kapoulkine@gmail.com
23f891a92b
Different versions of RWSTL have different headers; revert the previous change and instead introduce PUGIXML_NO_STL_FWDDECL macro (that disables forward declaration of STL classes, which is not compliant).
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@857 99668b35-9821-0410-8761-19e4c4f06640
2012-03-14 04:21:26 +00:00
arseny.kapoulkine@gmail.com
cf779955d9
Fixed SunCC compilation when using RWSTL instead of STLport; should fix issue 101.
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@856 99668b35-9821-0410-8761-19e4c4f06640
2012-03-14 03:40:06 +00:00
arseny.kapoulkine@gmail.com
2f6baa1005
Implemented optional header-only mode (still need to do a couple of fixes for rare compilers, but it seems to work on the majority of configurations). Tests work in header-only mode, but testing is not enabled yet (still a bit more work to be done, and compiling header-only tests is up to 4 times slower, so we can't test more than one-two configurations per toolset)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@855 99668b35-9821-0410-8761-19e4c4f06640
2012-03-14 03:08:01 +00:00
arseny.kapoulkine@gmail.com
7df35dabd5
Fixed clang warning
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@854 99668b35-9821-0410-8761-19e4c4f06640
2012-03-10 09:29:47 +00:00
arseny.kapoulkine@gmail.com
eca76db49d
Fixed clang compilation warning
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@849 99668b35-9821-0410-8761-19e4c4f06640
2012-03-06 09:43:00 +00:00
arseny.kapoulkine@gmail.com
eea13e4d72
Fix 'cast increases required alignment of target type' warning for BlackBerry NDK in PUGIXML_WCHAR_MODE (wchar_t is 4 bytes)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@842 99668b35-9821-0410-8761-19e4c4f06640
2012-03-06 07:02:40 +00:00
arseny.kapoulkine@gmail.com
6e02258ef6
Fix 'cast increases required alignment of target type' warnings (some of them are fixed by handling different wchar_t sizes through overloading, others - by casting to void* since we know the alignment restrictions are not violated)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@838 99668b35-9821-0410-8761-19e4c4f06640
2012-03-06 06:12:39 +00:00
arseny.kapoulkine@gmail.com
cbf42c3c93
Removed setjmp from XML parsing; now pugixml does not require setjmp support (unless XPath is compiled in with PUGIXML_NO_EXCEPTIONS). Should improve compatibility with certain platforms (also makes pugixml clr:pure-compatible)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@837 99668b35-9821-0410-8761-19e4c4f06640
2012-03-06 04:23:21 +00:00
arseny.kapoulkine@gmail.com
be7bdafa45
Define uintptr_t for WinCE if necessary (thankfully all MSVC versions seem to define _UINTPTR_T_DEFINED appropriately)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@833 99668b35-9821-0410-8761-19e4c4f06640
2012-02-19 05:47:54 +00:00
arseny.kapoulkine
a0769dfe38
Introduced encoding_latin1 support (conversion on loading, conversion on saving, encoding name in declaration in document::save)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@829 99668b35-9821-0410-8761-19e4c4f06640
2011-12-20 09:45:10 +00:00
arseny.kapoulkine
5a312a8ea8
Apply patch that should fix Windows Mobile compilation
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@828 99668b35-9821-0410-8761-19e4c4f06640
2011-12-09 07:22:46 +00:00
arseny.kapoulkine
aef822c27e
Added PUGIXML_VERSION define to enable preprocessor-based version checks in case compatibility workarounds are needed
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@827 99668b35-9821-0410-8761-19e4c4f06640
2011-12-09 06:48:46 +00:00
arseny.kapoulkine
1b87d3dcbf
Introduced parse_ws_pcdata_single flag: only parses whitespace-only PCDATA if it's the only child of the parent node (middle ground between default flags and parse_ws_pcdata)
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@825 99668b35-9821-0410-8761-19e4c4f06640
2011-12-09 05:24:07 +00:00
arseny.kapoulkine
696a0ea588
Fixed 'conversion from pointer to same-sized integral type' warning for Intel C++ compiler in case anyone compiles with -Wp64
...
git-svn-id: http://pugixml.googlecode.com/svn/trunk@822 99668b35-9821-0410-8761-19e4c4f06640
2011-10-08 04:14:12 +00:00