summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-01-24test_parse.cpp: add newline to last lineStephan Beyer
This is necessary in order to comply with the C++03 standard.
2016-01-24Merge pull request #81 from ogdf/whitespace-issuesArseny Kapoulkine
Fix whitespace issues
2016-01-24Fix whitespace issuesStephan Beyer
Git warns when it finds "whitespace errors". This commit gets rid of these whitespace errors for code and adoc files.
2016-01-20Change header format in non-compact mode to store page offsetArseny Kapoulkine
This utilizes the fact that pages are of limited size so we can store offset from the object to the page in a few bits - we currently use 24 although that's excessive given that pages are limited to ~512k. This has several benefits: - Pages do not have to be 64b aligned any more - this simplifies allocation flow and frees up 40-50 bytes from xml_document::_memory. - Header now has 8 bits available for metadata for both compact and default mode which makes it possible to store type as-is (allowing easy type extension and removing one add/sub operation from type checks). - One extra bit is easily available for future metadata extension (in addition to the bit for type encoding that could be reclaimed if necessary). - Allocators that return 4b-aligned memory on 64-bit platforms work fine if misaligned reads are supported. The downside is that there is one or two extra instructions on the allocation path. This does not seem to hurt parsing performance.
2016-01-19docs: Adjust as_int documentation to match implementationArseny Kapoulkine
Also remove the description of behavior for trailing non-numeric characters. It's likely this will become a parse error in the future so better leave it as unspecified for now. Fixes #80.
2016-01-14Merge pull request #79 from zeux/embed-pcdataArseny Kapoulkine
Add parse_embed_pcdata flag This flag determines if plain character data is be stored in the parent element's value. This significantly changes the structure of the document; this flag is only recommended for parsing documents with a lot of PCDATA nodes in a very memory-constrained environment. Most high-level APIs continue to work; code that inspects DOM using first_child()/value() will have to be adapted.
2016-01-12Preserve order semantics for child_value/text when using parse_embed_pcdataArseny Kapoulkine
The performance cost is probably negligible and this means we treat embedded value as the first child consistently.
2016-01-12docs: Add parse_embed_pcdata documentationArseny Kapoulkine
2016-01-12Adjust parse_embed_pcdata documentationArseny Kapoulkine
Since round-tripping should not be a problem any more don't mention it.
2016-01-12tests: Add test for parse_embed_pcdataArseny Kapoulkine
2016-01-12Only save first PCDATA contents in the elementArseny Kapoulkine
This change fixes an important ordering issue - if element node has a PCDATA child *after* other elements, it's impossible to tell which order the children were in. Since the goal of PCDATA embedding is to save memory when it's the only child, only apply the optimization to the first child. This seems to fix all roundtripping issues so the only caveat is that the DOM structure is different.
2016-01-09Implement output support for embedded PCDATA valuesArseny Kapoulkine
This is a bit awkward since preserving correct indentation structure requires a bit of extra work, and the closing tag has to be written by _start function to correctly process the rest of the tree.
2016-01-08Support XPath string value for parse_embed_pcdataArseny Kapoulkine
2016-01-08Support xml_node::child_value/text for parse_embed_pcdataArseny Kapoulkine
2016-01-08Add initial support for parse_embed_pcdataArseny Kapoulkine
When this flag is true, PCDATA value is saved to the parent element instead of allocating a new node. This prevents some documents from round-tripping since it loses information, but can provide a significant memory reduction and parsing speedup for some documents.
2015-12-31docs: Regenerate HTML documentationArseny Kapoulkine
2015-12-31Update all license/copyright texts to 2016Arseny Kapoulkine
2015-12-31docs: Use ISO-8601 for changelog datesArseny Kapoulkine
2015-12-30scripts: Fix default value for STATIC_CRT optionArseny Kapoulkine
Also refactor to use the same case and run after common options.
2015-12-30Merge pull request #70 from nirbar/masterArseny Kapoulkine
scripts: Allow linking static CRT libraries on Windows Use the solution from CMake FAQ to specify correct command-line arguments.
2015-12-29Work around Clang Wstring-conversion warningsArseny Kapoulkine
(!"string") triggers the warning however (false && "string") does not. Fixes #75.
2015-12-03Merge branch 'master' of github.com:nirbar/pugixmlnir.bar
2015-12-03Add CMake option on MSVC- STATIC_CRTnir.bar
2015-11-13Work around MinGW versions with non-C99 compliant headersArseny Kapoulkine
Apparently some MinGW distributions have a compiler that's recent enough to support C++11 but limits.h header that incorrectly omits LLONG limits in strict ANSI mode, since it guards the definitions with: #if !defined(__STRICT_ANSI__) && defined(__GNUC__) We can just define these symbols ourselves in this specific case. Fixes #66.
2015-10-25tests: Fix Borland C++ 5.4 compilationArseny Kapoulkine
The tests now compile fine but crash on the first floating-point exception despite our attempts to disable them in main()...
2015-10-25Fix Borland C++ 5.4 compilationArseny Kapoulkine
It does not have stdint.h and has some C++ parsing issues.
2015-10-24Reduce Travis build matrixArseny Kapoulkine
2015-10-23Build NuGet package on AppVeyorArseny Kapoulkine
2015-10-19docs: Fix CDATA exampleArseny Kapoulkine
Fixes #61.
2015-10-19docs: Add iOS to the list of supported platformsArseny Kapoulkine
2015-10-18docs: Update packaging infoArseny Kapoulkine
2015-10-18docs: Update release datev1.7Arseny Kapoulkine
2015-10-18docs: Rewrite Portability sectionArseny Kapoulkine
2015-10-18Add config=analyzeArseny Kapoulkine
2015-10-18Add release build to TravisArseny Kapoulkine
2015-10-18Fix wchar modeArseny Kapoulkine
2015-10-18Fix MWCW issue with compact modeArseny Kapoulkine
2015-10-18Fix Borland C++ issues with compact modeArseny Kapoulkine
2015-10-18Work around DMC compilation errorArseny Kapoulkine
For some reason reference to a fixed-size array works in two other places but not in this one...
2015-10-18Fix 'cast increases required alignment of type' warningsArseny Kapoulkine
These show up when building with Wcast-align for ARM.
2015-10-17Use -pedantic instead of -WpedanticArseny Kapoulkine
Travis CI strikes once more.
2015-10-17Enable a few more warningsArseny Kapoulkine
2015-10-17Fix XPath query move ctor/operatorArseny Kapoulkine
It now also moves parse result.
2015-10-17Fix 'signed/unsigned comparison' warning in wchar modeArseny Kapoulkine
Only happens on GCC 3.4 for some reason.
2015-10-17tests: Fix GCC warningArseny Kapoulkine
Fix "this decimal constant is unsigned only in ISO C90".
2015-10-17Fix -Wshadow warningArseny Kapoulkine
2015-10-17Fix MSVC6 header-only buildArseny Kapoulkine
name_sentry dtor results in multiple symbol definition errors in MSVC6.
2015-10-17Fix integer overflow detection with leading zerosArseny Kapoulkine
Since they don't contribute to the resulting value just skip them before parsing. This matches the behavior of strtol/strtoll and results in more intuitive behavior.
2015-10-17Use explicit tests in set_Name/set_valueArseny Kapoulkine
Node type enum is not used as an array index anywhere else; the code is not very readable and the value of this "optimization" is questionable. The conditions are arranged so that in all normal cases the first comparison returns true anyway.
2015-10-17Fix argument mismatch in integer parsingArseny Kapoulkine
The minneg argument is supposed to be the absolute value of the minimum negative representable number. In case of two-complement arithmetic, it's the same as the value itself but it's better to be explicit and negate the argument.