0
0
mirror of https://github.com/zeux/pugixml.git synced 2024-12-31 00:13:01 +08:00

922 Commits

Author SHA1 Message Date
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
5fa25a878a Fix bogus Clang 3.4 warning
git-svn-id: https://pugixml.googlecode.com/svn/trunk@979 99668b35-9821-0410-8761-19e4c4f06640
2014-02-11 04:55:36 +00:00
Arseny Kapoulkine
f5a5f49802 Fix clang build.
git-svn-id: https://pugixml.googlecode.com/svn/trunk@978 99668b35-9821-0410-8761-19e4c4f06640
2014-02-10 17:04:17 +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
9ba26b94c7 Replace memory-management functions before every test.
In case a test sets memory-management functions to perform custom testing and fails midway,
all subsequent tests that rely on custom memory handling (i.e. threshold) can fail unexpectedly.
Setting up the functions before every test fixes this, making all tests self-contained.

git-svn-id: https://pugixml.googlecode.com/svn/trunk@976 99668b35-9821-0410-8761-19e4c4f06640
2014-02-10 16:56:55 +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
ce1d457fcd Update compatibility section of the manual
git-svn-id: https://pugixml.googlecode.com/svn/trunk@974 99668b35-9821-0410-8761-19e4c4f06640
2014-02-10 05:21:40 +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
26a7f35ca8 Fix .travis.yml script
git-svn-id: http://pugixml.googlecode.com/svn/trunk@972 99668b35-9821-0410-8761-19e4c4f06640
2014-02-09 22:02:48 +00:00
Arseny Kapoulkine
543fa8268d Add Makefile for building and running tests.
This expands and replaces the Travis-specific makefile by adding more options and correctly tracking header dependencies.
Also add wchar_t mode test to Travis configuration.



git-svn-id: http://pugixml.googlecode.com/svn/trunk@971 99668b35-9821-0410-8761-19e4c4f06640
2014-02-09 21:56:30 +00:00
Arseny Kapoulkine
7b41dce85e Add README.md for GitHub
git-svn-id: http://pugixml.googlecode.com/svn/trunk@970 99668b35-9821-0410-8761-19e4c4f06640
2014-02-09 00:28:29 +00:00
Arseny Kapoulkine
09647e2b29 Add scripts for Travis CI
git-svn-id: http://pugixml.googlecode.com/svn/trunk@969 99668b35-9821-0410-8761-19e4c4f06640
2014-02-09 00:05:19 +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
44d3ae5e90 docs: Add long long functions and configuration documentation
git-svn-id: http://pugixml.googlecode.com/svn/trunk@966 99668b35-9821-0410-8761-19e4c4f06640
2014-02-08 21:06:21 +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
0557a06764 Fix test suite stringizing macros to be C++11-compliant
git-svn-id: http://pugixml.googlecode.com/svn/trunk@963 99668b35-9821-0410-8761-19e4c4f06640
2014-02-08 20:39:25 +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
cac6b8720a Make sure newlines are consistent for both .zip and .tar.gz archives
git-svn-id: http://pugixml.googlecode.com/svn/trunk@953 99668b35-9821-0410-8761-19e4c4f06640
2013-07-20 05:55:22 +00:00
arseny.kapoulkine@gmail.com
63c0f55ee7 docs: Fix manual.xsl to work with newer xsltproc
git-svn-id: http://pugixml.googlecode.com/svn/trunk@950 99668b35-9821-0410-8761-19e4c4f06640
2013-07-10 06:10:03 +00:00
arseny.kapoulkine@gmail.com
e300701d3f docs: XPath select_single_node sample checks return value for clarity
git-svn-id: http://pugixml.googlecode.com/svn/trunk@949 99668b35-9821-0410-8761-19e4c4f06640
2013-07-10 04:47:25 +00:00
arseny.kapoulkine@gmail.com
4c57df7cb6 docs: Minor grammar fix
git-svn-id: http://pugixml.googlecode.com/svn/trunk@948 99668b35-9821-0410-8761-19e4c4f06640
2013-07-10 04:46:59 +00:00
arseny.kapoulkine@gmail.com
ff14ae6daf Fix documentation building on Linux
git-svn-id: http://pugixml.googlecode.com/svn/trunk@947 99668b35-9821-0410-8761-19e4c4f06640
2013-07-10 04:38:21 +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
28def6fbca docs: Fix format_no_escapes documentation
git-svn-id: http://pugixml.googlecode.com/svn/trunk@945 99668b35-9821-0410-8761-19e4c4f06640
2013-03-20 02:36:48 +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
7b61ad6379 tests: Fix msvc11_arm toolset setup
git-svn-id: http://pugixml.googlecode.com/svn/trunk@940 99668b35-9821-0410-8761-19e4c4f06640
2012-12-07 06:41:48 +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
26444f90a9 docs: Added append_buffer documentation
git-svn-id: http://pugixml.googlecode.com/svn/trunk@938 99668b35-9821-0410-8761-19e4c4f06640
2012-12-07 05:15:09 +00:00
arseny.kapoulkine@gmail.com
00d4994f24 tests: Added append_buffer tests
git-svn-id: http://pugixml.googlecode.com/svn/trunk@937 99668b35-9821-0410-8761-19e4c4f06640
2012-12-07 04:49:51 +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
efc634a718 archive.pl now creates a wrapping folder in both .tar.gz and .zip archives
git-svn-id: http://pugixml.googlecode.com/svn/trunk@935 99668b35-9821-0410-8761-19e4c4f06640
2012-11-20 05:34:06 +00:00
arseny.kapoulkine@gmail.com
3af13f1cb8 scripts: Apply pugixml-soversion.patch: SOVERSION is now 1 instead of 1.2 (make install will deploy both libpugixml.so.1 and libpugixml.so.1.2)
git-svn-id: http://pugixml.googlecode.com/svn/trunk@934 99668b35-9821-0410-8761-19e4c4f06640
2012-11-20 05:27:46 +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
cee7eca229 XPath: Fix unit test that (incorrectly) relied on right-associativity of union operator to trigger out of memory condition
git-svn-id: http://pugixml.googlecode.com/svn/trunk@930 99668b35-9821-0410-8761-19e4c4f06640
2012-11-17 23:51:43 +00:00
arseny.kapoulkine@gmail.com
48f9343c05 XPath: Add unit test for unary minus and union precedences
git-svn-id: http://pugixml.googlecode.com/svn/trunk@929 99668b35-9821-0410-8761-19e4c4f06640
2012-11-17 22:50:05 +00:00