diff --git a/docs/manual.adoc b/docs/manual.adoc
index b901a54..d478cde 100644
--- a/docs/manual.adoc
+++ b/docs/manual.adoc
@@ -46,7 +46,7 @@ Thanks to *Vyacheslav Egorov* for documentation proofreading and fuzz testing.
The pugixml library is distributed under the MIT license:
....
-Copyright (c) 2006-2017 Arseny Kapoulkine
+Copyright (c) 2006-2018 Arseny Kapoulkine
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
@@ -74,7 +74,7 @@ This means that you can freely use pugixml in your applications, both open-sourc
....
This software is based on pugixml library (http://pugixml.org).
-pugixml is Copyright (C) 2006-2017 Arseny Kapoulkine.
+pugixml is Copyright (C) 2006-2018 Arseny Kapoulkine.
....
[[install]]
@@ -2120,6 +2120,35 @@ Because of the differences in document object models, performance considerations
:!numbered:
+[[v1.9]]
+=== v1.9 ^2018-04-04^
+
+Maintenance release. Changes:
+
+* Specification changes:
+ . `xml_document::load(const char*)` (deprecated in 1.5) now has `deprecated` attribute; use `xml_document::load_string` instead
+ ` `xml_node::select_single_node` (deprecated in 1.5) now has `deprecated` attribute; use `xml_node::select_node` instead
+
+* New features:
+ . Add move semantics support for xml_document and improve move semantics support for other objects
+ . CMake build now exports include directories
+ . CMake build with BUILD_SHARED_LIBS=ON now uses dllexport attribute for MSVC
+
+* XPath improvements:
+ . Rework parser/evaluator to not rely on exceptional control flow; longjmp is no longer used when exceptions are disabled
+ . Improve error messages for certain invalid expressions such as `.[1]` or `(1`
+ . Minor performance improvements
+
+* Compatibility improvements:
+ . Fix Texas Instruments compiler warnings
+ . Fix compilation issues with limits.h for some versions of gcc
+ . Fix compilation issues with Clang/C2
+ . Fix implicit fallthrough warnings in gcc 7
+ . Fix unknown attribute directive warnings in gcc 8
+ . Fix cray++ compiler errors
+ . Fix unsigned integer overflow errors with -fsanitize=integer
+ . Fix undefined behavior sanitizer issues in compact mode
+
[[v1.8]]
=== v1.8 ^2016-11-24^
diff --git a/docs/manual.html b/docs/manual.html
index 1bed481..01b577f 100644
--- a/docs/manual.html
+++ b/docs/manual.html
@@ -4,9 +4,9 @@
-
+
-
@@ -689,7 +687,7 @@ No documentation is perfect; neither is this one. If you find errors or omission
-
Copyright (c) 2006-2017 Arseny Kapoulkine
+
Copyright (c) 2006-2018 Arseny Kapoulkine
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
@@ -719,7 +717,7 @@ OTHER DEALINGS IN THE SOFTWARE.
This software is based on pugixml library (http://pugixml.org).
-pugixml is Copyright (C) 2006-2017 Arseny Kapoulkine.
+pugixml is Copyright (C) 2006-2018 Arseny Kapoulkine.
The distribution contains library source, documentation (the manual you’re reading now and the quick start guide) and some code examples. After downloading the distribution, install pugixml by extracting all files from the compressed archive.
@@ -1973,7 +1971,7 @@ The current behavior for Unicode conversion is to skip all invalid UTF sequences
pugixml features an extensive interface for getting various types of data from the document and for traversing the document. This section provides documentation for all such functions that do not modify the tree except for XPath-related functions; see XPath for XPath reference. As discussed in C++ interface, there are two types of handles to tree data - xml_node and xml_attribute. The handles have special null (empty) values which propagate through various functions and thus are useful for writing more concise code; see this description for details. The documentation in this section will explicitly state the results of all function in case of null inputs.
The internal representation of the document is a tree, where each node has a list of child nodes (the order of children corresponds to their order in the XML representation), and additionally element nodes have a list of attributes, which is also ordered. Several functions are provided in order to let you get from one node in the tree to the other. These functions roughly correspond to the internal representation, and thus are usually building blocks for other methods of traversing (i.e. XPath traversals are based on these functions).
@@ -2030,7 +2028,7 @@ Because of memory consumption reasons, attributes do not have a link to their pa
Apart from structural information (parent, child nodes, attributes), nodes can have name and value, both of which are strings. Depending on node type, name or value may be absent. node_document nodes do not have a name or value, node_element and node_declaration nodes always have a name but never have a value, node_pcdata, node_cdata, node_comment and node_doctype nodes never have a name but always have a value (it may be empty though), node_pi nodes always have a name and a value (again, value may be empty). In order to get node’s name or value, you can use the following functions:
@@ -2065,7 +2063,7 @@ Apart from structural information (parent, child nodes, attributes), nodes can h
If your C++ compiler supports range-based for-loop (this is a C++11 feature, at the time of writing it’s supported by Microsoft Visual Studio 2012+, GCC 4.6+ and Clang 3.0+), you can use it to enumerate nodes/attributes. Additional helpers are provided to support this; note that they are also compatible with Boost Foreach, and possibly other pre-C++11 foreach facilities.
@@ -2248,7 +2246,7 @@ If your C++ compiler supports range-based for-loop (this is a C++
Child node lists and attribute lists are simply double-linked lists; while you can use previous_sibling/next_sibling and other such functions for iteration, pugixml additionally provides node and attribute iterators, so that you can treat nodes as containers of other nodes or attributes:
@@ -2308,7 +2306,7 @@ Node and attribute iterators are somewhere in the middle between const and non-c
The methods described above allow traversal of immediate children of some node; if you want to do a deep tree traversal, you’ll have to do it via a recursive function or some equivalent method. However, pugixml provides a helper for depth-first traversal of a subtree. In order to use it, you have to implement xml_tree_walker interface and to call traverse function:
@@ -2376,7 +2374,7 @@ The traversal is launched by calling traverse function on traversal
While there are existing functions for getting a node/attribute with known contents, they are often not sufficient for simple queries. As an alternative for manual iteration through nodes/attributes until the needed one is found, you can make a predicate and call one of find_ functions:
@@ -2441,7 +2439,7 @@ While there are existing functions for getting a node/attribute with known conte
It is common to store data as text contents of some node - i.e. <node><description>This is a node</description></node>. In this case, <description> node does not have a value, but instead has a child of type node_pcdata with value "This is a node". pugixml provides a special class, xml_text, to work with such data. Working with text objects to modify data is described in the documentation for modifying document data; this section describes the access interface of xml_text.
@@ -2519,7 +2517,7 @@ If you need a non-empty string if the text object is empty, or if the text conte
If you need to get the document root of some node, you can use the following function:
@@ -2583,7 +2581,7 @@ While pugixml supports complex XPath expressions, sometimes a simple path handli
All member functions that change node/attribute data or structure are non-constant and thus can not be called on constant handles. However, you can easily convert constant handle to non-constant one by simple assignment: void foo(const pugi::xml_node& n) { pugi::xml_node nc = n; }, so const-correctness here mainly provides additional documentation.
As discussed before, nodes can have name and value, both of which are strings. Depending on node type, name or value may be absent. node_document nodes do not have a name or value, node_element and node_declaration nodes always have a name but never have a value, node_pcdata, node_cdata, node_comment and node_doctype nodes never have a name but always have a value (it may be empty though), node_pi nodes always have a name and a value (again, value may be empty). In order to set node’s name or value, you can use the following functions:
@@ -2618,7 +2616,7 @@ As discussed before, nodes can have name and value, both of which are strings. D
Nodes and attributes do not exist without a document tree, so you can’t create them without adding them to some document. A node or attribute can be created at the end of node/attribute list or before/after some other node:
@@ -2812,7 +2810,7 @@ Nodes and attributes do not exist without a document tree, so you can’t cr
pugixml provides a special class, xml_text, to work with text contents stored as a value of some node, i.e. <node><description>This is a node</description></node>. Working with text objects to retrieve data is described in the documentation for accessing document data; this section describes the modification interface of xml_text.
@@ -2943,7 +2941,7 @@ If you do not want your document to contain some node or attribute, you can remo
With the help of previously described functions, it is possible to create trees with any contents and structure, including cloning the existing data. However since this is an often needed operation, pugixml provides built-in node/attribute cloning facilities. Since nodes and attributes do not exist without a document tree, you can’t create a standalone copy - you have to immediately insert it somewhere in the tree. For this, you can use one of the following functions:
@@ -3039,7 +3037,7 @@ With the help of previously described functions, it is possible to create trees
Sometimes instead of cloning a node you need to move an existing node to a different position in a tree. This can be accomplished by copying the node and removing the original; however, this is expensive since it results in a lot of extra operations. For moving nodes within the same document tree, you can use of the following functions instead:
@@ -3076,7 +3074,7 @@ Sometimes instead of cloning a node you need to move an existing node to a diffe
pugixml provides several ways to assemble an XML document from other XML documents. Assuming there is a set of document fragments, represented as in-memory buffers, the implementation choices are as follows:
@@ -4016,6 +4014,90 @@ If exceptions are disabled, then in the event of parsing failure the query is in
xml_document::load(const char*) (deprecated in 1.5) now has deprecated attribute; use xml_document::load_string instead
+` xml_node::select_single_node (deprecated in 1.5) now has deprecated attribute; use xml_node::select_node instead
+
+
+
+
+
+
New features:
+
+
+
+
Add move semantics support for xml_document and improve move semantics support for other objects
+
+
+
CMake build now exports include directories
+
+
+
CMake build with BUILD_SHARED_LIBS=ON now uses dllexport attribute for MSVC
+
+
+
+
+
+
XPath improvements:
+
+
+
+
Rework parser/evaluator to not rely on exceptional control flow; longjmp is no longer used when exceptions are disabled
+
+
+
Improve error messages for certain invalid expressions such as .[1] or (1
+
+
+
Minor performance improvements
+
+
+
+
+
+
Compatibility improvements:
+
+
+
+
Fix Texas Instruments compiler warnings
+
+
+
Fix compilation issues with limits.h for some versions of gcc
+
+
+
Fix compilation issues with Clang/C2
+
+
+
Fix implicit fallthrough warnings in gcc 7
+
+
+
Fix unknown attribute directive warnings in gcc 8
+
+
+
Fix cray++ compiler errors
+
+
+
Fix unsigned integer overflow errors with -fsanitize=integer
+
+
+
Fix undefined behavior sanitizer issues in compact mode
@@ -5675,7 +5757,7 @@ If exceptions are disabled, then in the event of parsing failure the query is in
diff --git a/docs/quickstart.adoc b/docs/quickstart.adoc
index b7cb3b8..f36d2ac 100644
--- a/docs/quickstart.adoc
+++ b/docs/quickstart.adoc
@@ -255,7 +255,7 @@ If filing an issue is not possible due to privacy or other concerns, you can con
The pugixml library is distributed under the MIT license:
....
-Copyright (c) 2006-2017 Arseny Kapoulkine
+Copyright (c) 2006-2018 Arseny Kapoulkine
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
@@ -283,5 +283,5 @@ This means that you can freely use pugixml in your applications, both open-sourc
....
This software is based on pugixml library (http://pugixml.org).
-pugixml is Copyright (C) 2006-2017 Arseny Kapoulkine.
+pugixml is Copyright (C) 2006-2018 Arseny Kapoulkine.
....
diff --git a/docs/quickstart.html b/docs/quickstart.html
index fb7d379..16e8290 100644
--- a/docs/quickstart.html
+++ b/docs/quickstart.html
@@ -6,7 +6,7 @@
-pugixml 1.8 quick start guide
+pugixml 1.9 quick start guide