From f0fe7a30624dca5f406a86a35ad4f1818d265cfa Mon Sep 17 00:00:00 2001 From: TizenOpenSource Date: Tue, 24 Dec 2024 12:04:54 +0900 Subject: [PATCH] Imported Upstream version 10.0.0 --- .github/workflows/test.yml | 6 +- CMakeLists.txt | 3 +- Makefile | 2 +- docs/_config.yml | 2 + docs/_example_1.html | 48 +- docs/_example_2.html | 48 +- docs/_example_3.html | 48 +- docs/_example_4.html | 48 +- docs/annotated.html | 74 +- docs/bc_sd.png | Bin 0 -> 635 bytes docs/classes.html | 48 +- ...stinyxml2_1_1_x_m_l_attribute-members.html | 72 +- docs/classtinyxml2_1_1_x_m_l_attribute.html | 177 +- ...asstinyxml2_1_1_x_m_l_comment-members.html | 104 +- docs/classtinyxml2_1_1_x_m_l_comment.html | 265 +- docs/classtinyxml2_1_1_x_m_l_comment.png | Bin 650 -> 667 bytes ...nyxml2_1_1_x_m_l_const_handle-members.html | 46 +- .../classtinyxml2_1_1_x_m_l_const_handle.html | 46 +- ...inyxml2_1_1_x_m_l_declaration-members.html | 104 +- docs/classtinyxml2_1_1_x_m_l_declaration.html | 265 +- docs/classtinyxml2_1_1_x_m_l_declaration.png | Bin 688 -> 705 bytes ...sstinyxml2_1_1_x_m_l_document-members.html | 136 +- docs/classtinyxml2_1_1_x_m_l_document.html | 501 +-- docs/classtinyxml2_1_1_x_m_l_document.png | Bin 657 -> 675 bytes ...asstinyxml2_1_1_x_m_l_element-members.html | 174 +- docs/classtinyxml2_1_1_x_m_l_element.html | 695 ++- docs/classtinyxml2_1_1_x_m_l_element.png | Bin 618 -> 632 bytes ...lasstinyxml2_1_1_x_m_l_handle-members.html | 68 +- docs/classtinyxml2_1_1_x_m_l_handle.html | 140 +- .../classtinyxml2_1_1_x_m_l_node-members.html | 100 +- docs/classtinyxml2_1_1_x_m_l_node.html | 372 +- docs/classtinyxml2_1_1_x_m_l_node.png | Bin 1845 -> 1889 bytes ...asstinyxml2_1_1_x_m_l_printer-members.html | 82 +- docs/classtinyxml2_1_1_x_m_l_printer.html | 256 +- docs/classtinyxml2_1_1_x_m_l_printer.png | Bin 586 -> 594 bytes .../classtinyxml2_1_1_x_m_l_text-members.html | 106 +- docs/classtinyxml2_1_1_x_m_l_text.html | 275 +- docs/classtinyxml2_1_1_x_m_l_text.png | Bin 591 -> 602 bytes ...asstinyxml2_1_1_x_m_l_unknown-members.html | 104 +- docs/classtinyxml2_1_1_x_m_l_unknown.html | 265 +- docs/classtinyxml2_1_1_x_m_l_unknown.png | Bin 647 -> 662 bytes ...asstinyxml2_1_1_x_m_l_visitor-members.html | 54 +- docs/classtinyxml2_1_1_x_m_l_visitor.html | 82 +- docs/classtinyxml2_1_1_x_m_l_visitor.png | Bin 592 -> 602 bytes docs/clipboard.js | 61 + docs/cookie.js | 58 + docs/doc.svg | 12 + docs/docd.svg | 12 + docs/doxygen.css | 1294 ++++-- docs/doxygen.svg | 4 +- docs/doxygen_crawl.html | 88 + docs/dynsections.js | 261 +- docs/files.html | 46 +- docs/folderclosed.svg | 11 + docs/folderclosedd.svg | 11 + docs/folderopen.svg | 17 + docs/folderopend.svg | 12 + docs/functions.html | 59 +- docs/functions_b.html | 57 +- docs/functions_c.html | 73 +- docs/functions_d.html | 81 +- docs/functions_e.html | 61 +- docs/functions_f.html | 75 +- docs/functions_func.html | 61 +- docs/functions_func_b.html | 59 +- docs/functions_func_c.html | 75 +- docs/functions_func_d.html | 83 +- docs/functions_func_e.html | 63 +- docs/functions_func_f.html | 77 +- docs/functions_func_g.html | 64 +- docs/functions_func_h.html | 51 +- docs/functions_func_i.html | 95 +- docs/functions_func_l.html | 61 +- docs/functions_func_n.html | 90 +- docs/functions_func_o.html | 55 +- docs/functions_func_p.html | 93 +- docs/functions_func_q.html | 139 +- docs/functions_func_r.html | 51 +- docs/functions_func_s.html | 100 +- docs/functions_func_t.html | 85 +- docs/functions_func_u.html | 67 +- docs/functions_func_v.html | 67 +- docs/functions_func_x.html | 59 +- docs/functions_g.html | 62 +- docs/functions_h.html | 49 +- docs/functions_i.html | 93 +- docs/functions_l.html | 59 +- docs/functions_n.html | 88 +- docs/functions_o.html | 53 +- docs/functions_p.html | 91 +- docs/functions_q.html | 137 +- docs/functions_r.html | 49 +- docs/functions_s.html | 98 +- docs/functions_t.html | 83 +- docs/functions_u.html | 65 +- docs/functions_v.html | 65 +- docs/functions_x.html | 57 +- docs/hierarchy.html | 62 +- docs/index.html | 65 +- docs/jquery.js | 11 +- docs/menu.js | 99 +- docs/minus.svg | 8 + docs/minusd.svg | 8 + docs/nav_fd.png | Bin 0 -> 169 bytes docs/nav_hd.png | Bin 0 -> 114 bytes docs/pages.html | 50 +- docs/plus.svg | 9 + docs/plusd.svg | 9 + docs/search/all_0.js | 3 +- docs/search/all_1.js | 9 +- docs/search/all_10.js | 18 +- docs/search/all_11.js | 14 +- docs/search/all_12.js | 9 +- docs/search/all_13.js | 16 +- docs/search/all_14.js | 18 + docs/search/all_2.js | 11 +- docs/search/all_3.js | 17 +- docs/search/all_4.js | 13 +- docs/search/all_5.js | 11 +- docs/search/all_6.js | 14 +- docs/search/all_7.js | 6 +- docs/search/all_8.js | 13 +- docs/search/all_9.js | 18 +- docs/search/all_a.js | 14 +- docs/search/all_b.js | 12 +- docs/search/all_c.js | 16 +- docs/search/all_d.js | 35 +- docs/search/all_e.js | 25 +- docs/search/all_f.js | 12 +- docs/search/classes_0.js | 24 +- docs/search/close.svg | 19 +- docs/search/functions_0.js | 4 +- docs/search/functions_1.js | 6 +- docs/search/functions_10.js | 14 +- docs/search/functions_11.js | 10 +- docs/search/functions_12.js | 8 +- docs/search/functions_13.js | 6 +- docs/search/functions_2.js | 14 +- docs/search/functions_3.js | 18 +- docs/search/functions_4.js | 8 +- docs/search/functions_5.js | 14 +- docs/search/functions_6.js | 8 +- docs/search/functions_7.js | 2 +- docs/search/functions_8.js | 24 +- docs/search/functions_9.js | 6 +- docs/search/functions_a.js | 20 +- docs/search/functions_b.js | 4 +- docs/search/functions_c.js | 22 +- docs/search/functions_d.js | 46 +- docs/search/functions_e.js | 2 +- docs/search/functions_f.js | 20 +- docs/search/mag.svg | 24 + docs/search/mag_d.svg | 24 + docs/search/mag_sel.svg | 53 +- docs/search/mag_seld.svg | 31 + docs/search/pages_0.js | 2 +- docs/search/pages_1.js | 5 +- docs/search/pages_2.js | 2 +- docs/search/pages_3.js | 2 +- docs/search/pages_4.js | 3 +- docs/search/pages_5.js | 4 + docs/search/pages_6.js | 5 + docs/search/pages_7.js | 4 + docs/search/pages_8.js | 5 + docs/search/pages_9.js | 4 + docs/search/pages_a.js | 4 + docs/search/pages_b.js | 5 + docs/search/pages_c.js | 6 + docs/search/search.css | 122 +- docs/search/search.js | 1018 ++--- docs/search/searchdata.js | 4 +- docs/splitbard.png | Bin 0 -> 282 bytes docs/tab_ad.png | Bin 0 -> 135 bytes docs/tab_bd.png | Bin 0 -> 173 bytes docs/tab_hd.png | Bin 0 -> 180 bytes docs/tab_sd.png | Bin 0 -> 188 bytes docs/tabs.css | 2 +- docs/tinyxml2_8h_source.html | 3857 +++++++++-------- dox | 2 +- meson.build | 24 +- readme.md | 23 +- tinyxml2.cpp | 87 +- tinyxml2.h | 134 +- vs/tinyxml2.sln | 31 - vs/tinyxml2.vcxproj | 151 - vs/tinyxml2.vcxproj.filters | 22 - xmltest.cpp | 178 + 187 files changed, 8722 insertions(+), 7693 deletions(-) create mode 100644 docs/_config.yml create mode 100644 docs/bc_sd.png create mode 100644 docs/clipboard.js create mode 100644 docs/cookie.js create mode 100644 docs/doc.svg create mode 100644 docs/docd.svg create mode 100644 docs/doxygen_crawl.html create mode 100644 docs/folderclosed.svg create mode 100644 docs/folderclosedd.svg create mode 100644 docs/folderopen.svg create mode 100644 docs/folderopend.svg create mode 100644 docs/minus.svg create mode 100644 docs/minusd.svg create mode 100644 docs/nav_fd.png create mode 100644 docs/nav_hd.png create mode 100644 docs/plus.svg create mode 100644 docs/plusd.svg create mode 100644 docs/search/all_14.js create mode 100644 docs/search/mag.svg create mode 100644 docs/search/mag_d.svg create mode 100644 docs/search/mag_seld.svg create mode 100644 docs/search/pages_5.js create mode 100644 docs/search/pages_6.js create mode 100644 docs/search/pages_7.js create mode 100644 docs/search/pages_8.js create mode 100644 docs/search/pages_9.js create mode 100644 docs/search/pages_a.js create mode 100644 docs/search/pages_b.js create mode 100644 docs/search/pages_c.js create mode 100644 docs/splitbard.png create mode 100644 docs/tab_ad.png create mode 100644 docs/tab_bd.png create mode 100644 docs/tab_hd.png create mode 100644 docs/tab_sd.png delete mode 100644 vs/tinyxml2.sln delete mode 100644 vs/tinyxml2.vcxproj delete mode 100644 vs/tinyxml2.vcxproj.filters diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 049f8cd..74d5e1c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,12 +1,12 @@ name: Test -on: [ push, pull_request ] +on: [ push, pull_request, workflow_dispatch ] jobs: test: name: ${{ matrix.os }}, ${{ matrix.cmake_name }} strategy: fail-fast: false matrix: - os: [ windows-2019, macos-10.15, ubuntu-20.04 ] + os: [ windows-2019, macos-latest, ubuntu-20.04 ] cmake: [ 3.15, 3.x ] include: - os: windows-2019 @@ -17,7 +17,7 @@ jobs: - os: ubuntu-20.04 tree: tree - - os: macos-10.15 + - os: macos-latest tree: find - cmake: 3.15 diff --git a/CMakeLists.txt b/CMakeLists.txt index 8802fb8..7632022 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.15) -project(tinyxml2 VERSION 9.0.0) +project(tinyxml2 VERSION 10.0.0) include(CTest) option(tinyxml2_BUILD_TESTING "Build tests for tinyxml2" "${BUILD_TESTING}") @@ -31,6 +31,7 @@ target_compile_definitions( PUBLIC $<$:TINYXML2_DEBUG> INTERFACE $<$:TINYXML2_IMPORT> PRIVATE $<$:_CRT_SECURE_NO_WARNINGS> + PUBLIC _FILE_OFFSET_BITS=64 ) set_target_properties( diff --git a/Makefile b/Makefile index e76d8ec..6ca8544 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ ARFLAGS = cr RM = rm -f RANLIB = ranlib MKDIR = mkdir -p -CXXFLAGS = -fPIC +CXXFLAGS = -D_FILE_OFFSET_BITS=64 -fPIC INSTALL = install INSTALL_PROGRAM = $(INSTALL) diff --git a/docs/_config.yml b/docs/_config.yml new file mode 100644 index 0000000..8ceb7a0 --- /dev/null +++ b/docs/_config.yml @@ -0,0 +1,2 @@ +include: + - "_*.html" diff --git a/docs/_example_1.html b/docs/_example_1.html index 6cccb31..9659fcb 100644 --- a/docs/_example_1.html +++ b/docs/_example_1.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Load an XML File + + @@ -19,10 +21,9 @@
- - + @@ -30,21 +31,22 @@
-
TinyXML-2 -  9.0.0 +
+
TinyXML-2 10.0.0
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
-
Load an XML File
+
+
Load an XML File

Basic XML file loading. The basic syntax to load an XML file from disk and check for an error. (ErrorID() will return 0 for no error.)

int example_1()
@@ -77,7 +85,7 @@ $(function() {
diff --git a/docs/_example_2.html b/docs/_example_2.html index fb406a4..0fda91b 100644 --- a/docs/_example_2.html +++ b/docs/_example_2.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Parse an XML from char buffer + + @@ -19,10 +21,9 @@
- - + @@ -30,21 +31,22 @@
-
TinyXML-2 -  9.0.0 +
+
TinyXML-2 10.0.0
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
-
Parse an XML from char buffer
+
+
Parse an XML from char buffer

Basic XML string parsing. The basic syntax to parse an XML for a char* and check for an error. (ErrorID() will return 0 for no error.)

int example_2()
@@ -78,7 +86,7 @@ $(function() {
diff --git a/docs/_example_3.html b/docs/_example_3.html index 2994ed6..b63348a 100644 --- a/docs/_example_3.html +++ b/docs/_example_3.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Get information out of XML + + @@ -19,10 +21,9 @@
- - + @@ -30,21 +31,22 @@
-
TinyXML-2 -  9.0.0 +
+
TinyXML-2 10.0.0
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
-
Get information out of XML
+
+
Get information out of XML

In this example, we navigate a simple XML file, and read some interesting text. Note that this example doesn't use error checking; working code should check for null pointers when walking an XML tree, or use XMLHandle.

@@ -115,7 +123,7 @@ Text "A Midsummer Night's Dream"
diff --git a/docs/_example_4.html b/docs/_example_4.html index 5f8d391..5a14aee 100644 --- a/docs/_example_4.html +++ b/docs/_example_4.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Read attributes and text information. + + @@ -19,10 +21,9 @@
- - + @@ -30,21 +31,22 @@
-
TinyXML-2 -  9.0.0 +
+
TinyXML-2 10.0.0
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
-
Read attributes and text information.
+
+
Read attributes and text information.

@@ -88,7 +96,7 @@ $(function() {
diff --git a/docs/annotated.html b/docs/annotated.html index 24d5b3f..03f0640 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class List + + @@ -19,10 +21,9 @@
- - + @@ -30,21 +31,22 @@
-
TinyXML-2 -  9.0.0 +
+
TinyXML-2 10.0.0
- + +/* @license-end */ +
@@ -56,37 +58,43 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Class List
+
Class List
Here are the classes, structs, unions and interfaces with brief descriptions:
-
[detail level 12]
- - - - - - - - - - - - - +
[detail level 12]
 Ntinyxml2
 CXMLVisitor
 CXMLNode
 CXMLText
 CXMLComment
 CXMLDeclaration
 CXMLUnknown
 CXMLAttribute
 CXMLElement
 CXMLDocument
 CXMLHandle
 CXMLConstHandle
 CXMLPrinter
+ + + + + + + + + + + + +
 Ntinyxml2
 CXMLAttribute
 CXMLComment
 CXMLConstHandle
 CXMLDeclaration
 CXMLDocument
 CXMLElement
 CXMLHandle
 CXMLNode
 CXMLPrinter
 CXMLText
 CXMLUnknown
 CXMLVisitor
diff --git a/docs/bc_sd.png b/docs/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/docs/classes.html b/docs/classes.html index c5048a5..3c50e5a 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Index + + @@ -19,10 +21,9 @@
- - + @@ -30,21 +31,22 @@
-
TinyXML-2 -  9.0.0 +
+
TinyXML-2 10.0.0
- + +/* @license-end */ +
@@ -56,26 +58,32 @@ $(function() {
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Class Index
+
Class Index
-
X
+
X
XMLAttribute (tinyxml2)
XMLComment (tinyxml2)
XMLConstHandle (tinyxml2)
XMLDeclaration (tinyxml2)
XMLDocument (tinyxml2)
XMLElement (tinyxml2)
XMLHandle (tinyxml2)
XMLNode (tinyxml2)
XMLPrinter (tinyxml2)
XMLText (tinyxml2)
XMLUnknown (tinyxml2)
XMLVisitor (tinyxml2)
diff --git a/docs/classtinyxml2_1_1_x_m_l_attribute-members.html b/docs/classtinyxml2_1_1_x_m_l_attribute-members.html index bb41a26..9f3f990 100644 --- a/docs/classtinyxml2_1_1_x_m_l_attribute-members.html +++ b/docs/classtinyxml2_1_1_x_m_l_attribute-members.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Member List + + @@ -19,10 +21,9 @@
- - + @@ -30,21 +31,22 @@
-
TinyXML-2 -  9.0.0 +
+
TinyXML-2 10.0.0
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
tinyxml2::XMLAttribute Member List
+
tinyxml2::XMLAttribute Member List

This is the complete list of members for tinyxml2::XMLAttribute, including all inherited members.

- + - + - - - + + + - + - + - + - + - + - + - + - +
BoolValue() consttinyxml2::XMLAttributeinline
DoubleValue() consttinyxml2::XMLAttributeinline
DoubleValue() consttinyxml2::XMLAttributeinline
FloatValue() consttinyxml2::XMLAttributeinline
GetLineNum() consttinyxml2::XMLAttributeinline
GetLineNum() consttinyxml2::XMLAttributeinline
IntValue() consttinyxml2::XMLAttributeinline
Name() consttinyxml2::XMLAttribute
Next() consttinyxml2::XMLAttributeinline
QueryBoolValue(bool *value) consttinyxml2::XMLAttribute
Name() consttinyxml2::XMLAttribute
Next() consttinyxml2::XMLAttributeinline
QueryBoolValue(bool *value) consttinyxml2::XMLAttribute
QueryDoubleValue(double *value) consttinyxml2::XMLAttribute
QueryFloatValue(float *value) consttinyxml2::XMLAttribute
QueryFloatValue(float *value) consttinyxml2::XMLAttribute
QueryInt64Value(int64_t *value) consttinyxml2::XMLAttribute
QueryIntValue(int *value) consttinyxml2::XMLAttribute
QueryIntValue(int *value) consttinyxml2::XMLAttribute
QueryUnsigned64Value(uint64_t *value) consttinyxml2::XMLAttribute
QueryUnsignedValue(unsigned int *value) consttinyxml2::XMLAttribute
QueryUnsignedValue(unsigned int *value) consttinyxml2::XMLAttribute
SetAttribute(const char *value)tinyxml2::XMLAttribute
SetAttribute(int value)tinyxml2::XMLAttribute
SetAttribute(int value)tinyxml2::XMLAttribute
SetAttribute(unsigned value)tinyxml2::XMLAttribute
SetAttribute(int64_t value)tinyxml2::XMLAttribute
SetAttribute(int64_t value)tinyxml2::XMLAttribute
SetAttribute(uint64_t value)tinyxml2::XMLAttribute
SetAttribute(bool value)tinyxml2::XMLAttribute
SetAttribute(bool value)tinyxml2::XMLAttribute
SetAttribute(double value)tinyxml2::XMLAttribute
SetAttribute(float value)tinyxml2::XMLAttribute
SetAttribute(float value)tinyxml2::XMLAttribute
UnsignedValue() consttinyxml2::XMLAttributeinline
Value() consttinyxml2::XMLAttribute
Value() consttinyxml2::XMLAttribute
diff --git a/docs/classtinyxml2_1_1_x_m_l_attribute.html b/docs/classtinyxml2_1_1_x_m_l_attribute.html index bcec942..e1b88e6 100644 --- a/docs/classtinyxml2_1_1_x_m_l_attribute.html +++ b/docs/classtinyxml2_1_1_x_m_l_attribute.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: tinyxml2::XMLAttribute Class Reference + + @@ -19,10 +21,9 @@
- - + @@ -30,21 +31,22 @@
-
TinyXML-2 -  9.0.0 +
+
TinyXML-2 10.0.0
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+

#include <tinyxml2.h>

- - - - - - - - + + + + + + + - - - - + + + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +

+

Public Member Functions

-const char * Name () const
 The name of the attribute.
 
-const char * Value () const
 The value of the attribute.
 
-int GetLineNum () const
+const char * Name () const
 The name of the attribute.
 
+const char * Value () const
 The value of the attribute.
 
+int GetLineNum () const
 Gets the line number the attribute is in, if the document was parsed from a file.
 
-const XMLAttributeNext () const
 The next attribute in the list.
 
int IntValue () const
+const XMLAttributeNext () const
 The next attribute in the list.
 
int IntValue () const
 
-unsigned UnsignedValue () const
 Query as an unsigned integer. See IntValue()
+unsigned UnsignedValue () const
 Query as an unsigned integer. See IntValue()
 
-bool BoolValue () const
 Query as a boolean. See IntValue()
+bool BoolValue () const
 Query as a boolean. See IntValue()
 
-double DoubleValue () const
 Query as a double. See IntValue()
+double DoubleValue () const
 Query as a double. See IntValue()
 
-float FloatValue () const
 Query as a float. See IntValue()
+float FloatValue () const
 Query as a float. See IntValue()
 
XMLError QueryIntValue (int *value) const
XMLError QueryIntValue (int *value) const
 
-XMLError QueryUnsignedValue (unsigned int *value) const
+XMLError QueryUnsignedValue (unsigned int *value) const
 See QueryIntValue.
 
-XMLError QueryInt64Value (int64_t *value) const
+XMLError QueryInt64Value (int64_t *value) const
 See QueryIntValue.
 
-XMLError QueryUnsigned64Value (uint64_t *value) const
+XMLError QueryUnsigned64Value (uint64_t *value) const
 See QueryIntValue.
 
-XMLError QueryBoolValue (bool *value) const
+XMLError QueryBoolValue (bool *value) const
 See QueryIntValue.
 
-XMLError QueryDoubleValue (double *value) const
+XMLError QueryDoubleValue (double *value) const
 See QueryIntValue.
 
-XMLError QueryFloatValue (float *value) const
+XMLError QueryFloatValue (float *value) const
 See QueryIntValue.
 
-void SetAttribute (const char *value)
+void SetAttribute (const char *value)
 Set the attribute to a string value.
 
-void SetAttribute (int value)
+void SetAttribute (int value)
 Set the attribute to value.
 
-void SetAttribute (unsigned value)
+void SetAttribute (unsigned value)
 Set the attribute to value.
 
-void SetAttribute (int64_t value)
+void SetAttribute (int64_t value)
 Set the attribute to value.
 
-void SetAttribute (uint64_t value)
+void SetAttribute (uint64_t value)
 Set the attribute to value.
 
-void SetAttribute (bool value)
+void SetAttribute (bool value)
 Set the attribute to value.
 
-void SetAttribute (double value)
+void SetAttribute (double value)
 Set the attribute to value.
 
-void SetAttribute (float value)
+void SetAttribute (float value)
 Set the attribute to value.
 

Detailed Description

An attribute is a name-value pair. Elements have an arbitrary number of attributes, each with a unique name.

-
Note
The attributes are not XMLNodes. You may only query the Next() attribute in a list.
+
Note
The attributes are not XMLNodes. You may only query the Next() attribute in a list.

Member Function Documentation

- -

◆ IntValue()

+ +

◆ IntValue()

@@ -187,7 +195,7 @@ void int tinyxml2::XMLAttribute::IntValue ( - ) + ) const @@ -197,12 +205,12 @@ void  -

IntValue interprets the attribute as an integer, and returns the value. If the value isn't an integer, 0 will be returned. There is no error checking; use QueryIntValue() if you need error checking.

+

IntValue interprets the attribute as an integer, and returns the value. If the value isn't an integer, 0 will be returned. There is no error checking; use QueryIntValue() if you need error checking.

- -

◆ QueryIntValue()

+ +

◆ QueryIntValue()

@@ -210,8 +218,7 @@ void XMLError tinyxml2::XMLAttribute::QueryIntValue ( - int *  - value) + int * value) const @@ -226,7 +233,7 @@ void  diff --git a/docs/classtinyxml2_1_1_x_m_l_comment-members.html b/docs/classtinyxml2_1_1_x_m_l_comment-members.html index 1e7f36a..4ea42ba 100644 --- a/docs/classtinyxml2_1_1_x_m_l_comment-members.html +++ b/docs/classtinyxml2_1_1_x_m_l_comment-members.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Member List + + @@ -19,10 +21,9 @@
- - + @@ -30,21 +31,22 @@
-
TinyXML-2 -  9.0.0 +
+
TinyXML-2 10.0.0
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
tinyxml2::XMLComment Member List
+
tinyxml2::XMLComment Member List

This is the complete list of members for tinyxml2::XMLComment, including all inherited members.

- - + + - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + +
Accept(XMLVisitor *visitor) consttinyxml2::XMLCommentvirtual
DeepClone(XMLDocument *target) consttinyxml2::XMLNode
Accept(XMLVisitor *visitor) const overridetinyxml2::XMLCommentvirtual
DeepClone(XMLDocument *target) consttinyxml2::XMLNode
DeleteChild(XMLNode *node)tinyxml2::XMLNode
DeleteChildren()tinyxml2::XMLNode
FirstChild() consttinyxml2::XMLNodeinline
FirstChildElement(const char *name=0) consttinyxml2::XMLNode
GetDocument() consttinyxml2::XMLNodeinline
GetDocument()tinyxml2::XMLNodeinline
DeleteChildren()tinyxml2::XMLNode
FirstChild() consttinyxml2::XMLNodeinline
FirstChildElement(const char *name=0) consttinyxml2::XMLNode
GetDocument() consttinyxml2::XMLNodeinline
GetDocument()tinyxml2::XMLNodeinline
GetLineNum() consttinyxml2::XMLNodeinline
GetUserData() consttinyxml2::XMLNodeinline
InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
LastChild() consttinyxml2::XMLNodeinline
LastChildElement(const char *name=0) consttinyxml2::XMLNode
NextSibling() consttinyxml2::XMLNodeinline
NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
NoChildren() consttinyxml2::XMLNodeinline
Parent() consttinyxml2::XMLNodeinline
PreviousSibling() consttinyxml2::XMLNodeinline
PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
SetUserData(void *userData)tinyxml2::XMLNodeinline
GetUserData() consttinyxml2::XMLNodeinline
InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
LastChild() consttinyxml2::XMLNodeinline
LastChildElement(const char *name=0) consttinyxml2::XMLNode
NextSibling() consttinyxml2::XMLNodeinline
NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
NoChildren() consttinyxml2::XMLNodeinline
Parent() consttinyxml2::XMLNodeinline
PreviousSibling() consttinyxml2::XMLNodeinline
PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
SetUserData(void *userData)tinyxml2::XMLNodeinline
SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
ShallowClone(XMLDocument *document) consttinyxml2::XMLCommentvirtual
ShallowEqual(const XMLNode *compare) consttinyxml2::XMLCommentvirtual
ToComment()tinyxml2::XMLCommentinlinevirtual
ToDeclaration()tinyxml2::XMLNodeinlinevirtual
ToDocument()tinyxml2::XMLNodeinlinevirtual
ToElement()tinyxml2::XMLNodeinlinevirtual
ToText()tinyxml2::XMLNodeinlinevirtual
ToUnknown()tinyxml2::XMLNodeinlinevirtual
Value() consttinyxml2::XMLNode
ShallowClone(XMLDocument *document) const overridetinyxml2::XMLCommentvirtual
ShallowEqual(const XMLNode *compare) const overridetinyxml2::XMLCommentvirtual
ToComment() overridetinyxml2::XMLCommentinlinevirtual
ToDeclaration()tinyxml2::XMLNodeinlinevirtual
ToDocument()tinyxml2::XMLNodeinlinevirtual
ToElement()tinyxml2::XMLNodeinlinevirtual
ToText()tinyxml2::XMLNodeinlinevirtual
ToUnknown()tinyxml2::XMLNodeinlinevirtual
Value() consttinyxml2::XMLNode
diff --git a/docs/classtinyxml2_1_1_x_m_l_comment.html b/docs/classtinyxml2_1_1_x_m_l_comment.html index dd1a5d4..bd85209 100644 --- a/docs/classtinyxml2_1_1_x_m_l_comment.html +++ b/docs/classtinyxml2_1_1_x_m_l_comment.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: tinyxml2::XMLComment Class Reference + + @@ -19,10 +21,9 @@
- - + @@ -30,21 +31,22 @@
-
TinyXML-2 -  9.0.0 +
+
TinyXML-2 10.0.0
- + +/* @license-end */ +
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
@@ -85,113 +93,113 @@ Inheritance diagram for tinyxml2::XMLComment:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - - + +

+

Public Member Functions

-virtual XMLCommentToComment ()
 Safely cast to a Comment, or null.
 
virtual bool Accept (XMLVisitor *visitor) const
 
virtual XMLNodeShallowClone (XMLDocument *document) const
 
virtual bool ShallowEqual (const XMLNode *compare) const
 
- Public Member Functions inherited from tinyxml2::XMLNode
-const XMLDocumentGetDocument () const
 Get the XMLDocument that owns this XMLNode.
 
-XMLDocumentGetDocument ()
 Get the XMLDocument that owns this XMLNode.
 
-virtual XMLElementToElement ()
 Safely cast to an Element, or null.
 
-virtual XMLTextToText ()
 Safely cast to Text, or null.
 
-virtual XMLDocumentToDocument ()
 Safely cast to a Document, or null.
 
-virtual XMLDeclarationToDeclaration ()
 Safely cast to a Declaration, or null.
 
-virtual XMLUnknownToUnknown ()
 Safely cast to an Unknown, or null.
 
const char * Value () const
 
void SetValue (const char *val, bool staticMem=false)
+virtual XMLCommentToComment () override
 Safely cast to a Comment, or null.
 
virtual bool Accept (XMLVisitor *visitor) const override
 
virtual XMLNodeShallowClone (XMLDocument *document) const override
 
virtual bool ShallowEqual (const XMLNode *compare) const override
 
- Public Member Functions inherited from tinyxml2::XMLNode
+const XMLDocumentGetDocument () const
 Get the XMLDocument that owns this XMLNode.
 
+XMLDocumentGetDocument ()
 Get the XMLDocument that owns this XMLNode.
 
+virtual XMLElementToElement ()
 Safely cast to an Element, or null.
 
+virtual XMLTextToText ()
 Safely cast to Text, or null.
 
+virtual XMLDocumentToDocument ()
 Safely cast to a Document, or null.
 
+virtual XMLDeclarationToDeclaration ()
 Safely cast to a Declaration, or null.
 
+virtual XMLUnknownToUnknown ()
 Safely cast to an Unknown, or null.
 
const char * Value () const
 
void SetValue (const char *val, bool staticMem=false)
 
-int GetLineNum () const
+int GetLineNum () const
 Gets the line number the node is in, if the document was parsed from a file.
 
-const XMLNodeParent () const
 Get the parent of this node on the DOM.
 
-bool NoChildren () const
+const XMLNodeParent () const
 Get the parent of this node on the DOM.
 
+bool NoChildren () const
 Returns true if this node has no children.
 
-const XMLNodeFirstChild () const
 Get the first child node, or null if none exists.
 
const XMLElementFirstChildElement (const char *name=0) const
 
-const XMLNodeLastChild () const
 Get the last child node, or null if none exists.
 
const XMLElementLastChildElement (const char *name=0) const
 
-const XMLNodePreviousSibling () const
 Get the previous (left) sibling node of this node.
 
-const XMLElementPreviousSiblingElement (const char *name=0) const
 Get the previous (left) sibling element of this node, with an optionally supplied name.
 
-const XMLNodeNextSibling () const
 Get the next (right) sibling node of this node.
 
-const XMLElementNextSiblingElement (const char *name=0) const
 Get the next (right) sibling element of this node, with an optionally supplied name.
 
XMLNodeInsertEndChild (XMLNode *addThis)
 
XMLNodeInsertFirstChild (XMLNode *addThis)
 
XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
 
void DeleteChildren ()
+const XMLNodeFirstChild () const
 Get the first child node, or null if none exists.
 
const XMLElementFirstChildElement (const char *name=0) const
 
+const XMLNodeLastChild () const
 Get the last child node, or null if none exists.
 
const XMLElementLastChildElement (const char *name=0) const
 
+const XMLNodePreviousSibling () const
 Get the previous (left) sibling node of this node.
 
+const XMLElementPreviousSiblingElement (const char *name=0) const
 Get the previous (left) sibling element of this node, with an optionally supplied name.
 
+const XMLNodeNextSibling () const
 Get the next (right) sibling node of this node.
 
+const XMLElementNextSiblingElement (const char *name=0) const
 Get the next (right) sibling element of this node, with an optionally supplied name.
 
XMLNodeInsertEndChild (XMLNode *addThis)
 
XMLNodeInsertFirstChild (XMLNode *addThis)
 
XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
 
void DeleteChildren ()
 
void DeleteChild (XMLNode *node)
void DeleteChild (XMLNode *node)
 
XMLNodeDeepClone (XMLDocument *target) const
 
void SetUserData (void *userData)
XMLNodeDeepClone (XMLDocument *target) const
 
void SetUserData (void *userData)
 
void * GetUserData () const
 
void * GetUserData () const
 

Detailed Description

An XML Comment.

Member Function Documentation

- -

◆ Accept()

+ +

◆ Accept()

@@ -202,14 +210,13 @@ const XMLElement * virtual bool tinyxml2::XMLComment::Accept ( - XMLVisitor *  - visitor) + XMLVisitor * visitor) const -virtual +overridevirtual
@@ -221,7 +228,7 @@ const XMLElement *
  • http://c2.com/cgi/wiki?HierarchicalVisitorPattern
  • Which are both good references for "visiting".

    -

    An example of using Accept():

    XMLPrinter printer;
    +

    An example of using Accept():

    XMLPrinter printer;
     tinyxmlDoc.Accept( &printer );
     const char* xmlcstr = printer.CStr();
     
    @@ -229,8 +236,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ ShallowClone()

    + +

    ◆ ShallowClone()

    @@ -239,28 +246,27 @@ const char* xmlcstr = printer.CStr(); - + - - +
    virtual XMLNode* tinyxml2::XMLComment::ShallowClone virtual XMLNode * tinyxml2::XMLComment::ShallowClone (XMLDocumentdocument)XMLDocument * document) const
    -virtual +overridevirtual
    -

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    +

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    Note: if called on a XMLDocument, this will return null.

    -

    Implements tinyxml2::XMLNode.

    +

    Implements tinyxml2::XMLNode.

    - -

    ◆ ShallowEqual()

    + +

    ◆ ShallowEqual()

    @@ -271,14 +277,13 @@ const char* xmlcstr = printer.CStr(); virtual bool tinyxml2::XMLComment::ShallowEqual ( - const XMLNode *  - compare) + const XMLNode * compare) const -virtual +overridevirtual
    @@ -295,7 +300,7 @@ const char* xmlcstr = printer.CStr();
    diff --git a/docs/classtinyxml2_1_1_x_m_l_comment.png b/docs/classtinyxml2_1_1_x_m_l_comment.png index 3a076f05c0f83dc3e8e2d11062ee57c9d8c2a377..273dd1fcb63ba829c287c84e0432acb5fe8c3650 100644 GIT binary patch delta 642 zcmV-|0)7381)BwsB!3%FOjJex|Nj600O;)Xb&tZQI4~)27?;fG;Nal@|Nk}3R-^y` z010$bPE!E?|NsC0|Ns9t0-MwT00JgSL_t(|0qvdZuHzsKgvWza`Td`Gn{bICPRMqT zPSMI0BWMi6hk@iTQc7tVA(7-F3L2916*MI2%b}6IkmRMdxPQpeE4R$RquD~kaFRU9 zry3cZ#Gf4_-ec`6HUr{3gtl=2v0j z8%~lJ3L291wH!@KDXk&^_yN5DU>Pk%^Lnj>vlPu6W+9xlXyQ%*z?Fgq0DJ`v0Qd?T z0Pqzw0N^WV0Kiw!0D!Nc0RUe?0|35)1^|2o4FLEG8h-%r^?%Zch%6(Bs_G&N8dX(a zL8GebtI@ox8P^tnpZo5AH_&=)H$+wSnJR>#QB}QDnXJdjhy|bnd*tcUY%AH#cIT|( zSOUk82Q;QnF>D^SQwwYlszbk1#js4%o>f$X&`?`t`j`zXy_<(M>nC(*`VFaxGDG_8 zSHLNas(YNuP~Fj#Y>qS|OeL%+&uQ{8e?rq%tD<8WFWILwV|+$)oQXNjU~6)wDi`H$ zr~0d78lrlXmS20SElqvTnA!z80`)N8yozJf+o)z@+~ cA|k8k54MMNJ9>Xcy#N3J07*qoM6N<$f(_X?sQ>@~ delta 625 zcmbQu+Qm9SrCuVyC&cyt|NjgO3@_e%E$u%v0muU50|ySUcHWT(ayd$Z{DK*Pia_A% zsSqOu1|~^Q7srqa#@)LwD%rdnnm7Kga@6yHW{YLf7{iknT;hnxjcweu|-HGbirDaF|F5h_b zRe$ca^m|RYg=IxY?p(0_e&E=aw~3!*C*S($^|ZkHmT&%%(ENS zkD1-AF|FS`|K03wFJ^SB$fo*l4b7f+u;j;bW7U(>*w@Q@{t|36+plT73 zSQC{!?JnQcIlbu&(*gbuOf%Y6=ESX^S+Za31;%~ znbYxQu@fd~7%w@yuXahaw8!#Gq2*?lv-kSy2lI5FD$bf+JKKKaN`LP~`hOLFUs;wf ze^aJ9Dd%#lsbzCX;JdI@wpP!S4hCk`y?5S;XR``nyjoCk+#r~OV{-yQobUX2V tXSeT*{m9Gyfm51c{>z*ouS~Ij3`_0hj9aT0bpsO*gQu&X%Q~loCIFpyFQxzh diff --git a/docs/classtinyxml2_1_1_x_m_l_const_handle-members.html b/docs/classtinyxml2_1_1_x_m_l_const_handle-members.html index 03c24bf..672929b 100644 --- a/docs/classtinyxml2_1_1_x_m_l_const_handle-members.html +++ b/docs/classtinyxml2_1_1_x_m_l_const_handle-members.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Member List + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    tinyxml2::XMLConstHandle Member List
    +
    tinyxml2::XMLConstHandle Member List
    @@ -75,7 +83,7 @@ $(function() {
    diff --git a/docs/classtinyxml2_1_1_x_m_l_const_handle.html b/docs/classtinyxml2_1_1_x_m_l_const_handle.html index eb72a01..94d59f6 100644 --- a/docs/classtinyxml2_1_1_x_m_l_const_handle.html +++ b/docs/classtinyxml2_1_1_x_m_l_const_handle.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: tinyxml2::XMLConstHandle Class Reference + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - - + +

    +

    Public Member Functions

    -virtual XMLDeclarationToDeclaration ()
     Safely cast to a Declaration, or null.
     
    virtual bool Accept (XMLVisitor *visitor) const
     
    virtual XMLNodeShallowClone (XMLDocument *document) const
     
    virtual bool ShallowEqual (const XMLNode *compare) const
     
    - Public Member Functions inherited from tinyxml2::XMLNode
    -const XMLDocumentGetDocument () const
     Get the XMLDocument that owns this XMLNode.
     
    -XMLDocumentGetDocument ()
     Get the XMLDocument that owns this XMLNode.
     
    -virtual XMLElementToElement ()
     Safely cast to an Element, or null.
     
    -virtual XMLTextToText ()
     Safely cast to Text, or null.
     
    -virtual XMLCommentToComment ()
     Safely cast to a Comment, or null.
     
    -virtual XMLDocumentToDocument ()
     Safely cast to a Document, or null.
     
    -virtual XMLUnknownToUnknown ()
     Safely cast to an Unknown, or null.
     
    const char * Value () const
     
    void SetValue (const char *val, bool staticMem=false)
    +virtual XMLDeclarationToDeclaration () override
     Safely cast to a Declaration, or null.
     
    virtual bool Accept (XMLVisitor *visitor) const override
     
    virtual XMLNodeShallowClone (XMLDocument *document) const override
     
    virtual bool ShallowEqual (const XMLNode *compare) const override
     
    - Public Member Functions inherited from tinyxml2::XMLNode
    +const XMLDocumentGetDocument () const
     Get the XMLDocument that owns this XMLNode.
     
    +XMLDocumentGetDocument ()
     Get the XMLDocument that owns this XMLNode.
     
    +virtual XMLElementToElement ()
     Safely cast to an Element, or null.
     
    +virtual XMLTextToText ()
     Safely cast to Text, or null.
     
    +virtual XMLCommentToComment ()
     Safely cast to a Comment, or null.
     
    +virtual XMLDocumentToDocument ()
     Safely cast to a Document, or null.
     
    +virtual XMLUnknownToUnknown ()
     Safely cast to an Unknown, or null.
     
    const char * Value () const
     
    void SetValue (const char *val, bool staticMem=false)
     
    -int GetLineNum () const
    +int GetLineNum () const
     Gets the line number the node is in, if the document was parsed from a file.
     
    -const XMLNodeParent () const
     Get the parent of this node on the DOM.
     
    -bool NoChildren () const
    +const XMLNodeParent () const
     Get the parent of this node on the DOM.
     
    +bool NoChildren () const
     Returns true if this node has no children.
     
    -const XMLNodeFirstChild () const
     Get the first child node, or null if none exists.
     
    const XMLElementFirstChildElement (const char *name=0) const
     
    -const XMLNodeLastChild () const
     Get the last child node, or null if none exists.
     
    const XMLElementLastChildElement (const char *name=0) const
     
    -const XMLNodePreviousSibling () const
     Get the previous (left) sibling node of this node.
     
    -const XMLElementPreviousSiblingElement (const char *name=0) const
     Get the previous (left) sibling element of this node, with an optionally supplied name.
     
    -const XMLNodeNextSibling () const
     Get the next (right) sibling node of this node.
     
    -const XMLElementNextSiblingElement (const char *name=0) const
     Get the next (right) sibling element of this node, with an optionally supplied name.
     
    XMLNodeInsertEndChild (XMLNode *addThis)
     
    XMLNodeInsertFirstChild (XMLNode *addThis)
     
    XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
     
    void DeleteChildren ()
    +const XMLNodeFirstChild () const
     Get the first child node, or null if none exists.
     
    const XMLElementFirstChildElement (const char *name=0) const
     
    +const XMLNodeLastChild () const
     Get the last child node, or null if none exists.
     
    const XMLElementLastChildElement (const char *name=0) const
     
    +const XMLNodePreviousSibling () const
     Get the previous (left) sibling node of this node.
     
    +const XMLElementPreviousSiblingElement (const char *name=0) const
     Get the previous (left) sibling element of this node, with an optionally supplied name.
     
    +const XMLNodeNextSibling () const
     Get the next (right) sibling node of this node.
     
    +const XMLElementNextSiblingElement (const char *name=0) const
     Get the next (right) sibling element of this node, with an optionally supplied name.
     
    XMLNodeInsertEndChild (XMLNode *addThis)
     
    XMLNodeInsertFirstChild (XMLNode *addThis)
     
    XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
     
    void DeleteChildren ()
     
    void DeleteChild (XMLNode *node)
    void DeleteChild (XMLNode *node)
     
    XMLNodeDeepClone (XMLDocument *target) const
     
    void SetUserData (void *userData)
    XMLNodeDeepClone (XMLDocument *target) const
     
    void SetUserData (void *userData)
     
    void * GetUserData () const
     
    void * GetUserData () const
     

    Detailed Description

    In correct XML the declaration is the first entry in the file.

        <?xml version="1.0" standalone="yes"?>
     

    TinyXML-2 will happily read or write files without a declaration, however.

    The text of the declaration isn't interpreted. It is parsed and written as a string.

    Member Function Documentation

    - -

    ◆ Accept()

    + +

    ◆ Accept()

    @@ -204,14 +212,13 @@ const XMLElement * virtual bool tinyxml2::XMLDeclaration::Accept ( - XMLVisitor *  - visitor) + XMLVisitor * visitor) const -virtual +overridevirtual
    @@ -223,7 +230,7 @@ const XMLElement *
  • http://c2.com/cgi/wiki?HierarchicalVisitorPattern
  • Which are both good references for "visiting".

    -

    An example of using Accept():

    XMLPrinter printer;
    +

    An example of using Accept():

    XMLPrinter printer;
     tinyxmlDoc.Accept( &printer );
     const char* xmlcstr = printer.CStr();
     
    @@ -231,8 +238,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ ShallowClone()

    + +

    ◆ ShallowClone()

    @@ -241,28 +248,27 @@ const char* xmlcstr = printer.CStr(); - + - - +
    virtual XMLNode* tinyxml2::XMLDeclaration::ShallowClone virtual XMLNode * tinyxml2::XMLDeclaration::ShallowClone (XMLDocumentdocument)XMLDocument * document) const
    -virtual +overridevirtual
    -

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    +

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    Note: if called on a XMLDocument, this will return null.

    -

    Implements tinyxml2::XMLNode.

    +

    Implements tinyxml2::XMLNode.

    - -

    ◆ ShallowEqual()

    + +

    ◆ ShallowEqual()

    @@ -273,14 +279,13 @@ const char* xmlcstr = printer.CStr(); virtual bool tinyxml2::XMLDeclaration::ShallowEqual ( - const XMLNode *  - compare) + const XMLNode * compare) const -virtual +overridevirtual
    @@ -297,7 +302,7 @@ const char* xmlcstr = printer.CStr();
    diff --git a/docs/classtinyxml2_1_1_x_m_l_declaration.png b/docs/classtinyxml2_1_1_x_m_l_declaration.png index c7aa6319fcb939dc39dc72310971fd68db7611eb..39154dc0559af5071eb0215a082136cf1fd69269 100644 GIT binary patch delta 681 zcmV;a0#^O71;GW7B!3%FOjJex|Nj600O;)Xb&tZQI4~)27?;fG;Nal@|Nk}3R-^y` z010$bPE!E?|NsC0|Ns9t0-MwT00K-&L_t(|0qvdZj;k;XgeQZvn)iR=(~_GLLcuGf zW_40|l#~Sf!;axEwr$%c6*iKbQj3iw{aS1!>DM`1*o`Dl^?zOuq3((^b7P&BrS5i; zJkv)ulKi9;x`m6t@vmXq$A{S7`Pg0WUZax#w9w_`g3YW&H|dH=JIThbYMR_9$K_fE zH$Vm4kPO(2r$gFFTDxRxOP7;a7l(Bku?-zQ#Fi^T24e@b%$vbX-R)V(!}~{)Bi&?c zY7$6medD^=NPqH7F1C7>uGzZiCF{?ex3(S4B#_l&Q7mZlL}tT-eM-{Wjn^GXKB>EG zUqHLd_6@W@`mHC)?`pA;q+gS>ZQHiZDFAp*KL9YPCT9EjnHO$iwinv8a5J;5J_Uf^ zXt4o+UyBU@{90@P;MZaU0KXO+0Qj}o0Kl)s1^|97Hh%!{Yq0@3XmD@u(g?Q&*(AqC$?0H!QBm7=FMOSw%8OF zs+Kp+eQYHY3hJ$I+zYloVL?)-->{i8d&xE`UU#{V;9zUp(M*C=t*=5KFK;OCw_%^w zGqb-2+CDw9NwPM>*W!e2iVxYCZH{m3pZL~G(jsJ9Y?9>HB!3uCOjJex|Nj600O;)Xb&tZ30001x0001xz`(!-iQFFm000Pd zQchC<|NsC0|NsBh%2YA{00KWrL_t(|0qvdtjupwE!BV7wr!hKY?3sk7Mmpbwb&%duXDDrnQ* z`lJ-Pg^R%Pr(xT#53#-TvAf>AMkW7gq07kyn^}u)(u_&Fq{gmln%pPHWiEpopaO14 z25iRDA?=c^U9z>M%So(@!#a)Fh7KQM%axFVu>)G>&0wbP_AKPf`%jWay2;kmBuLi! z#&xkt(wSUr^?xi~vvtu+)}J|VZ9AGlkgCO^SkUH)%nc9rsU&MRUU!o8r0%kP0qri^ zH_-m*w_cLItHmZseofA{ZQC}d0G`tiz@(a(?dNA+xQW?bXw$;Y%(nUz;5S-q0Ddht z0KXO+fM1IZz^}yy;MZaU@N2OF__f#o{90@Pel0ctzke1RfM5R+TL>XcDgwZiT5JG* zEj9qZ3ft>)MfqNTcaQzuY^=lBW&n-G5zazeHh@n`K3cd4oPa9Z*ySl3z(JWUy-i;K zO28Z-Ewpj(u-Qb%i=EiL?pxA}EZ?5K-;HBHo)2pUyBpA yDL!OlwmH7Bf8tvYFqsw`fM1idg%HA=`UgVxArUW6yCIwa0000 - + - - + + TinyXML-2: Member List + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    tinyxml2::XMLDocument Member List
    +
    tinyxml2::XMLDocument Member List

    This is the complete list of members for tinyxml2::XMLDocument, including all inherited members.

    - - + + - + - + - + - + - - - - - + + + + + - + - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + + + - + - - - - - - - - - - - + + + + + + + + + + +
    Accept(XMLVisitor *visitor) consttinyxml2::XMLDocumentvirtual
    Clear()tinyxml2::XMLDocument
    Accept(XMLVisitor *visitor) const overridetinyxml2::XMLDocumentvirtual
    Clear()tinyxml2::XMLDocument
    ClearError()tinyxml2::XMLDocument
    DeepClone(XMLDocument *target) consttinyxml2::XMLNode
    DeepClone(XMLDocument *target) consttinyxml2::XMLNode
    DeepCopy(XMLDocument *target) consttinyxml2::XMLDocument
    DeleteChild(XMLNode *node)tinyxml2::XMLNode
    DeleteChild(XMLNode *node)tinyxml2::XMLNode
    DeleteChildren()tinyxml2::XMLNode
    DeleteNode(XMLNode *node)tinyxml2::XMLDocument
    DeleteNode(XMLNode *node)tinyxml2::XMLDocument
    Error() consttinyxml2::XMLDocumentinline
    ErrorID() consttinyxml2::XMLDocumentinline
    ErrorID() consttinyxml2::XMLDocumentinline
    ErrorLineNum() consttinyxml2::XMLDocumentinline
    ErrorStr() consttinyxml2::XMLDocument
    FirstChild() consttinyxml2::XMLNodeinline
    FirstChildElement(const char *name=0) consttinyxml2::XMLNode
    GetDocument() consttinyxml2::XMLNodeinline
    GetDocument()tinyxml2::XMLNodeinline
    ErrorStr() consttinyxml2::XMLDocument
    FirstChild() consttinyxml2::XMLNodeinline
    FirstChildElement(const char *name=0) consttinyxml2::XMLNode
    GetDocument() consttinyxml2::XMLNodeinline
    GetDocument()tinyxml2::XMLNodeinline
    GetLineNum() consttinyxml2::XMLNodeinline
    GetUserData() consttinyxml2::XMLNodeinline
    GetUserData() consttinyxml2::XMLNodeinline
    HasBOM() consttinyxml2::XMLDocumentinline
    InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
    InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
    InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
    LastChild() consttinyxml2::XMLNodeinline
    LastChildElement(const char *name=0) consttinyxml2::XMLNode
    InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
    InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
    InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
    LastChild() consttinyxml2::XMLNodeinline
    LastChildElement(const char *name=0) consttinyxml2::XMLNode
    LoadFile(const char *filename)tinyxml2::XMLDocument
    LoadFile(FILE *)tinyxml2::XMLDocument
    NewComment(const char *comment)tinyxml2::XMLDocument
    NewDeclaration(const char *text=0)tinyxml2::XMLDocument
    NewElement(const char *name)tinyxml2::XMLDocument
    NewText(const char *text)tinyxml2::XMLDocument
    NewUnknown(const char *text)tinyxml2::XMLDocument
    NextSibling() consttinyxml2::XMLNodeinline
    NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
    NoChildren() consttinyxml2::XMLNodeinline
    Parent() consttinyxml2::XMLNodeinline
    Parse(const char *xml, size_t nBytes=static_cast< size_t >(-1))tinyxml2::XMLDocument
    PreviousSibling() consttinyxml2::XMLNodeinline
    PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
    LoadFile(FILE *)tinyxml2::XMLDocument
    NewComment(const char *comment)tinyxml2::XMLDocument
    NewDeclaration(const char *text=0)tinyxml2::XMLDocument
    NewElement(const char *name)tinyxml2::XMLDocument
    NewText(const char *text)tinyxml2::XMLDocument
    NewUnknown(const char *text)tinyxml2::XMLDocument
    NextSibling() consttinyxml2::XMLNodeinline
    NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
    NoChildren() consttinyxml2::XMLNodeinline
    Parent() consttinyxml2::XMLNodeinline
    Parse(const char *xml, size_t nBytes=static_cast< size_t >(-1))tinyxml2::XMLDocument
    PreviousSibling() consttinyxml2::XMLNodeinline
    PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
    Print(XMLPrinter *streamer=0) consttinyxml2::XMLDocument
    PrintError() consttinyxml2::XMLDocument
    RootElement()tinyxml2::XMLDocumentinline
    SaveFile(const char *filename, bool compact=false)tinyxml2::XMLDocument
    PrintError() consttinyxml2::XMLDocument
    RootElement()tinyxml2::XMLDocumentinline
    SaveFile(const char *filename, bool compact=false)tinyxml2::XMLDocument
    SaveFile(FILE *fp, bool compact=false)tinyxml2::XMLDocument
    SetBOM(bool useBOM)tinyxml2::XMLDocumentinline
    SetBOM(bool useBOM)tinyxml2::XMLDocumentinline
    SetUserData(void *userData)tinyxml2::XMLNodeinline
    SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
    ShallowClone(XMLDocument *) consttinyxml2::XMLDocumentinlinevirtual
    ShallowEqual(const XMLNode *) consttinyxml2::XMLDocumentinlinevirtual
    ToComment()tinyxml2::XMLNodeinlinevirtual
    ToDeclaration()tinyxml2::XMLNodeinlinevirtual
    ToDocument()tinyxml2::XMLDocumentinlinevirtual
    ToElement()tinyxml2::XMLNodeinlinevirtual
    ToText()tinyxml2::XMLNodeinlinevirtual
    ToUnknown()tinyxml2::XMLNodeinlinevirtual
    Value() consttinyxml2::XMLNode
    XMLDocument(bool processEntities=true, Whitespace whitespaceMode=PRESERVE_WHITESPACE)tinyxml2::XMLDocument
    SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
    ShallowClone(XMLDocument *) const overridetinyxml2::XMLDocumentinlinevirtual
    ShallowEqual(const XMLNode *) const overridetinyxml2::XMLDocumentinlinevirtual
    ToComment()tinyxml2::XMLNodeinlinevirtual
    ToDeclaration()tinyxml2::XMLNodeinlinevirtual
    ToDocument() overridetinyxml2::XMLDocumentinlinevirtual
    ToElement()tinyxml2::XMLNodeinlinevirtual
    ToText()tinyxml2::XMLNodeinlinevirtual
    ToUnknown()tinyxml2::XMLNodeinlinevirtual
    Value() consttinyxml2::XMLNode
    XMLDocument(bool processEntities=true, Whitespace whitespaceMode=PRESERVE_WHITESPACE)tinyxml2::XMLDocument
    diff --git a/docs/classtinyxml2_1_1_x_m_l_document.html b/docs/classtinyxml2_1_1_x_m_l_document.html index 43c6c5d..d60a636 100644 --- a/docs/classtinyxml2_1_1_x_m_l_document.html +++ b/docs/classtinyxml2_1_1_x_m_l_document.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: tinyxml2::XMLDocument Class Reference + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    @@ -85,175 +93,175 @@ Inheritance diagram for tinyxml2::XMLDocument:
    - - + - - - - + + + + - + - + - + - + - + - + - - - + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - + - + - - - - + + + + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - - + +

    +

    Public Member Functions

    XMLDocument (bool processEntities=true, Whitespace whitespaceMode=PRESERVE_WHITESPACE)
    XMLDocument (bool processEntities=true, Whitespace whitespaceMode=PRESERVE_WHITESPACE)
     constructor
     
    -virtual XMLDocumentToDocument ()
     Safely cast to a Document, or null.
     
    XMLError Parse (const char *xml, size_t nBytes=static_cast< size_t >(-1))
    +virtual XMLDocumentToDocument () override
     Safely cast to a Document, or null.
     
    XMLError Parse (const char *xml, size_t nBytes=static_cast< size_t >(-1))
     
    XMLError LoadFile (const char *filename)
    XMLError LoadFile (const char *filename)
     
    XMLError LoadFile (FILE *)
    XMLError LoadFile (FILE *)
     
    XMLError SaveFile (const char *filename, bool compact=false)
    XMLError SaveFile (const char *filename, bool compact=false)
     
    XMLError SaveFile (FILE *fp, bool compact=false)
    XMLError SaveFile (FILE *fp, bool compact=false)
     
    bool HasBOM () const
    bool HasBOM () const
     
    void SetBOM (bool useBOM)
    void SetBOM (bool useBOM)
     
    XMLElementRootElement ()
     
    void Print (XMLPrinter *streamer=0) const
    XMLElementRootElement ()
     
    void Print (XMLPrinter *streamer=0) const
     
    virtual bool Accept (XMLVisitor *visitor) const
     
    XMLElementNewElement (const char *name)
     
    XMLCommentNewComment (const char *comment)
     
    XMLTextNewText (const char *text)
     
    XMLDeclarationNewDeclaration (const char *text=0)
     
    XMLUnknownNewUnknown (const char *text)
     
    void DeleteNode (XMLNode *node)
    virtual bool Accept (XMLVisitor *visitor) const override
     
    XMLElementNewElement (const char *name)
     
    XMLCommentNewComment (const char *comment)
     
    XMLTextNewText (const char *text)
     
    XMLDeclarationNewDeclaration (const char *text=0)
     
    XMLUnknownNewUnknown (const char *text)
     
    void DeleteNode (XMLNode *node)
     
    -void ClearError ()
    +void ClearError ()
     Clears the error flags.
     
    -bool Error () const
    +bool Error () const
     Return true if there was an error parsing the document.
     
    -XMLError ErrorID () const
    +XMLError ErrorID () const
     Return the errorID.
     
    const char * ErrorStr () const
     
    -void PrintError () const
     A (trivial) utility function that prints the ErrorStr() to stdout.
    const char * ErrorStr () const
     
    +void PrintError () const
     A (trivial) utility function that prints the ErrorStr() to stdout.
     
    -int ErrorLineNum () const
    +int ErrorLineNum () const
     Return the line where the error occurred, or zero if unknown.
     
    -void Clear ()
    +void Clear ()
     Clear the document, resetting it to the initial state.
     
    void DeepCopy (XMLDocument *target) const
    void DeepCopy (XMLDocument *target) const
     
    virtual XMLNodeShallowClone (XMLDocument *) const
     
    virtual bool ShallowEqual (const XMLNode *) const
     
    - Public Member Functions inherited from tinyxml2::XMLNode
    -const XMLDocumentGetDocument () const
     Get the XMLDocument that owns this XMLNode.
     
    -XMLDocumentGetDocument ()
     Get the XMLDocument that owns this XMLNode.
     
    -virtual XMLElementToElement ()
     Safely cast to an Element, or null.
     
    -virtual XMLTextToText ()
     Safely cast to Text, or null.
     
    -virtual XMLCommentToComment ()
     Safely cast to a Comment, or null.
     
    -virtual XMLDeclarationToDeclaration ()
     Safely cast to a Declaration, or null.
     
    -virtual XMLUnknownToUnknown ()
     Safely cast to an Unknown, or null.
     
    const char * Value () const
     
    void SetValue (const char *val, bool staticMem=false)
    virtual XMLNodeShallowClone (XMLDocument *) const override
     
    virtual bool ShallowEqual (const XMLNode *) const override
     
    - Public Member Functions inherited from tinyxml2::XMLNode
    +const XMLDocumentGetDocument () const
     Get the XMLDocument that owns this XMLNode.
     
    +XMLDocumentGetDocument ()
     Get the XMLDocument that owns this XMLNode.
     
    +virtual XMLElementToElement ()
     Safely cast to an Element, or null.
     
    +virtual XMLTextToText ()
     Safely cast to Text, or null.
     
    +virtual XMLCommentToComment ()
     Safely cast to a Comment, or null.
     
    +virtual XMLDeclarationToDeclaration ()
     Safely cast to a Declaration, or null.
     
    +virtual XMLUnknownToUnknown ()
     Safely cast to an Unknown, or null.
     
    const char * Value () const
     
    void SetValue (const char *val, bool staticMem=false)
     
    -int GetLineNum () const
    +int GetLineNum () const
     Gets the line number the node is in, if the document was parsed from a file.
     
    -const XMLNodeParent () const
     Get the parent of this node on the DOM.
     
    -bool NoChildren () const
    +const XMLNodeParent () const
     Get the parent of this node on the DOM.
     
    +bool NoChildren () const
     Returns true if this node has no children.
     
    -const XMLNodeFirstChild () const
     Get the first child node, or null if none exists.
     
    const XMLElementFirstChildElement (const char *name=0) const
     
    -const XMLNodeLastChild () const
     Get the last child node, or null if none exists.
     
    const XMLElementLastChildElement (const char *name=0) const
     
    -const XMLNodePreviousSibling () const
     Get the previous (left) sibling node of this node.
     
    -const XMLElementPreviousSiblingElement (const char *name=0) const
     Get the previous (left) sibling element of this node, with an optionally supplied name.
     
    -const XMLNodeNextSibling () const
     Get the next (right) sibling node of this node.
     
    -const XMLElementNextSiblingElement (const char *name=0) const
     Get the next (right) sibling element of this node, with an optionally supplied name.
     
    XMLNodeInsertEndChild (XMLNode *addThis)
     
    XMLNodeInsertFirstChild (XMLNode *addThis)
     
    XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
     
    void DeleteChildren ()
    +const XMLNodeFirstChild () const
     Get the first child node, or null if none exists.
     
    const XMLElementFirstChildElement (const char *name=0) const
     
    +const XMLNodeLastChild () const
     Get the last child node, or null if none exists.
     
    const XMLElementLastChildElement (const char *name=0) const
     
    +const XMLNodePreviousSibling () const
     Get the previous (left) sibling node of this node.
     
    +const XMLElementPreviousSiblingElement (const char *name=0) const
     Get the previous (left) sibling element of this node, with an optionally supplied name.
     
    +const XMLNodeNextSibling () const
     Get the next (right) sibling node of this node.
     
    +const XMLElementNextSiblingElement (const char *name=0) const
     Get the next (right) sibling element of this node, with an optionally supplied name.
     
    XMLNodeInsertEndChild (XMLNode *addThis)
     
    XMLNodeInsertFirstChild (XMLNode *addThis)
     
    XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
     
    void DeleteChildren ()
     
    void DeleteChild (XMLNode *node)
    void DeleteChild (XMLNode *node)
     
    XMLNodeDeepClone (XMLDocument *target) const
     
    void SetUserData (void *userData)
    XMLNodeDeepClone (XMLDocument *target) const
     
    void SetUserData (void *userData)
     
    void * GetUserData () const
     
    void * GetUserData () const
     

    Detailed Description

    A Document binds together all the functionality. It can be saved, loaded, and printed to the screen. All Nodes are connected and allocated to a Document. If the Document is deleted, all its Nodes are also deleted.

    Member Function Documentation

    - -

    ◆ Accept()

    + +

    ◆ Accept()

    @@ -264,14 +272,13 @@ const XMLElement * virtual bool tinyxml2::XMLDocument::Accept ( - XMLVisitor *  - visitor) + XMLVisitor * visitor) const -virtual +overridevirtual
    @@ -283,7 +290,7 @@ const XMLElement *
  • http://c2.com/cgi/wiki?HierarchicalVisitorPattern
  • Which are both good references for "visiting".

    -

    An example of using Accept():

    XMLPrinter printer;
    +

    An example of using Accept():

    XMLPrinter printer;
     tinyxmlDoc.Accept( &printer );
     const char* xmlcstr = printer.CStr();
     
    @@ -291,8 +298,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ DeepCopy()

    + +

    ◆ DeepCopy()

    @@ -300,19 +307,18 @@ const char* xmlcstr = printer.CStr(); void tinyxml2::XMLDocument::DeepCopy ( - XMLDocument *  - target) + XMLDocument * target) const
    -

    Copies this document to a target document. The target will be completely cleared before the copy. If you want to copy a sub-tree, see XMLNode::DeepClone().

    +

    Copies this document to a target document. The target will be completely cleared before the copy. If you want to copy a sub-tree, see XMLNode::DeepClone().

    NOTE: that the 'target' must be non-null.

    - -

    ◆ DeleteNode()

    + +

    ◆ DeleteNode()

    @@ -320,8 +326,7 @@ const char* xmlcstr = printer.CStr(); void tinyxml2::XMLDocument::DeleteNode ( - XMLNode *  - node) + XMLNode * node) @@ -330,16 +335,16 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ ErrorStr()

    + +

    ◆ ErrorStr()

    - + - +
    const char* tinyxml2::XMLDocument::ErrorStr const char * tinyxml2::XMLDocument::ErrorStr ()) const
    @@ -348,8 +353,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ HasBOM()

    + +

    ◆ HasBOM()

    @@ -360,7 +365,7 @@ const char* xmlcstr = printer.CStr(); bool tinyxml2::XMLDocument::HasBOM ( - ) + ) const @@ -374,8 +379,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ LoadFile() [1/2]

    + +

    ◆ LoadFile() [1/2]

    @@ -383,8 +388,7 @@ const char* xmlcstr = printer.CStr(); XMLError tinyxml2::XMLDocument::LoadFile ( - const char *  - filename) + const char * filename) @@ -393,8 +397,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ LoadFile() [2/2]

    + +

    ◆ LoadFile() [2/2]

    @@ -402,8 +406,7 @@ const char* xmlcstr = printer.CStr(); XMLError tinyxml2::XMLDocument::LoadFile ( - FILE *  - ) + FILE * ) @@ -414,17 +417,16 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ NewComment()

    + +

    ◆ NewComment()

    - + - - +
    XMLComment* tinyxml2::XMLDocument::NewComment XMLComment * tinyxml2::XMLDocument::NewComment (const char * comment)const char * comment)
    @@ -433,17 +435,16 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ NewDeclaration()

    + +

    ◆ NewDeclaration()

    - + - - +
    XMLDeclaration* tinyxml2::XMLDocument::NewDeclaration XMLDeclaration * tinyxml2::XMLDocument::NewDeclaration (const char * text = 0)const char * text = 0)
    @@ -453,17 +454,16 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ NewElement()

    + +

    ◆ NewElement()

    - + - - +
    XMLElement* tinyxml2::XMLDocument::NewElement XMLElement * tinyxml2::XMLDocument::NewElement (const char * name)const char * name)
    @@ -472,17 +472,16 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ NewText()

    + +

    ◆ NewText()

    - + - - +
    XMLText* tinyxml2::XMLDocument::NewText XMLText * tinyxml2::XMLDocument::NewText (const char * text)const char * text)
    @@ -491,17 +490,16 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ NewUnknown()

    + +

    ◆ NewUnknown()

    - + - - +
    XMLUnknown* tinyxml2::XMLDocument::NewUnknown XMLUnknown * tinyxml2::XMLDocument::NewUnknown (const char * text)const char * text)
    @@ -510,8 +508,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ Parse()

    + +

    ◆ Parse()

    @@ -519,19 +517,12 @@ const char* xmlcstr = printer.CStr(); XMLError tinyxml2::XMLDocument::Parse ( - const char *  - xml, + const char * xml, - size_t  - nBytes = static_cast< size_t >(-1)  - - - - ) - + size_t nBytes = static_cast< size_t >(-1) )
    @@ -540,8 +531,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ Print()

    + +

    ◆ Print()

    @@ -549,8 +540,7 @@ const char* xmlcstr = printer.CStr(); void tinyxml2::XMLDocument::Print ( - XMLPrinter *  - streamer = 0) + XMLPrinter * streamer = 0) const @@ -563,8 +553,8 @@ doc.Print( &printer );
    - -

    ◆ RootElement()

    + +

    ◆ RootElement()

    @@ -573,9 +563,9 @@ doc.Print( &printer ); - + - +
    XMLElement* tinyxml2::XMLDocument::RootElement XMLElement * tinyxml2::XMLDocument::RootElement ())
    @@ -585,12 +575,12 @@ doc.Print( &printer );
    -

    Return the root element of DOM. Equivalent to FirstChildElement(). To get the first node, use FirstChild().

    +

    Return the root element of DOM. Equivalent to FirstChildElement(). To get the first node, use FirstChild().

    - -

    ◆ SaveFile() [1/2]

    + +

    ◆ SaveFile() [1/2]

    @@ -598,19 +588,12 @@ doc.Print( &printer ); XMLError tinyxml2::XMLDocument::SaveFile ( - const char *  - filename, + const char * filename, - bool  - compact = false  - - - - ) - + bool compact = false )
    @@ -618,8 +601,8 @@ doc.Print( &printer );
    - -

    ◆ SaveFile() [2/2]

    + +

    ◆ SaveFile() [2/2]

    @@ -627,19 +610,12 @@ doc.Print( &printer ); XMLError tinyxml2::XMLDocument::SaveFile ( - FILE *  - fp, + FILE * fp, - bool  - compact = false  - - - - ) - + bool compact = false )
    @@ -648,8 +624,8 @@ doc.Print( &printer );
    - -

    ◆ SetBOM()

    + +

    ◆ SetBOM()

    @@ -660,8 +636,7 @@ doc.Print( &printer ); void tinyxml2::XMLDocument::SetBOM ( - bool  - useBOM) + bool useBOM) @@ -675,8 +650,8 @@ doc.Print( &printer );
    - -

    ◆ ShallowClone()

    + +

    ◆ ShallowClone()

    @@ -685,28 +660,27 @@ doc.Print( &printer ); - + - - +
    virtual XMLNode* tinyxml2::XMLDocument::ShallowClone virtual XMLNode * tinyxml2::XMLDocument::ShallowClone (XMLDocumentdocument)XMLDocument * document) const
    -inlinevirtual +inlineoverridevirtual
    -

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    +

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    Note: if called on a XMLDocument, this will return null.

    -

    Implements tinyxml2::XMLNode.

    +

    Implements tinyxml2::XMLNode.

    - -

    ◆ ShallowEqual()

    + +

    ◆ ShallowEqual()

    @@ -717,14 +691,13 @@ doc.Print( &printer ); virtual bool tinyxml2::XMLDocument::ShallowEqual ( - const XMLNode *  - compare) + const XMLNode * compare) const -inlinevirtual +inlineoverridevirtual
    @@ -741,7 +714,7 @@ doc.Print( &printer );
    diff --git a/docs/classtinyxml2_1_1_x_m_l_document.png b/docs/classtinyxml2_1_1_x_m_l_document.png index 4fcf9f466dbe8299ecf452e000e909c62318e62f..51c28390a83a50992bf099680c0b3f6d9bd4008a 100644 GIT binary patch delta 651 zcmbQpx|nr>O1*S|Pl)UP|Nj{n7+$>jTH1eTxrKpdfyDGPFCIL202DVp8@2=}$5|5O z7t8?UgMm5I>?;fmOnRO!jv*C{Z|A=5d#%9J(%!jc*7y2Hms@5pEb*Osb(-y>B$n2M z`WqHMyB}NhZEa~*3BTl~=kNYhKItdy;roC&GdjL0 zUvc6Shsz#c=hgr4n0s01adi1gT^(bNlw8A4)7D#dR6eLXI&n+xBU9H&_Ddv}+*h6D z_$zhM{?9j6PxfajPh7IxbYkCQi)lg(e|q*YBX|@Pl6KYafyQEjebDr5Gl}as-{&UUN*X3C+ z{>eAH_Au0P(wDwZam^~8_cbeXW-6sWT9Kyi>$PgFvlV}7 zBx$2heDvm-W`!rSZq9mUwEm&So~6d;w^-J`TXXcr&g!Z&v@vjDk(+>~k`+rO7qyHY++M3GdxN5D- zt+?{n*0urnynT;`>Q{ybcf=m`-1N5j{TFeM`F~FJOtkxTH~QyhZO`lsWzR{#0CVC< d)cnhAZd(zu=S03EFiA0Zy85}WtaD0e0s#B&HcS8j delta 632 zcmZ3?I+1mPO1(sYPl)UP|Nj{n7+$>jTH1eT0+0p92M!!y?Ytuo@S^u>yS~i!c{Tl{GYR$XRzN}Z{fMkch54Fm(H^sf5k46ToSMLtKM$+ zq%WqqDxROVs9h?QIUdCHqbH9cJJWW_?Oe-cUnjhCS#7A>u|=Ejz;!pK4_hWO*yO4( z_)BvhxQv@yFQwU1FK|tWF+mloIM{Jlx!j$dbz&`l@8+yI9AU|zzhXj&O2hmqHrsqA z8W&1zE>>&2Wwqps)sFw#b(`*Pxv*=tG=`(vr%GMm;;+fYAMDAUh znSN`IUD>sy*QE_to~g^9&B@%Hc>bxP>2b-OpC<&xR4Ea2zAg^RAwF(>x`o$hDChzhudRY=M4KaAS`njxgN@xNA D6&xXD diff --git a/docs/classtinyxml2_1_1_x_m_l_element-members.html b/docs/classtinyxml2_1_1_x_m_l_element-members.html index 2c3f55e..a23343d 100644 --- a/docs/classtinyxml2_1_1_x_m_l_element-members.html +++ b/docs/classtinyxml2_1_1_x_m_l_element-members.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Member List + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    tinyxml2::XMLElement Member List
    +
    tinyxml2::XMLElement Member List

    This is the complete list of members for tinyxml2::XMLElement, including all inherited members.

    - - + + - - - + + + - + - - - - - + + + + + - - - + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + - + - - + +
    Accept(XMLVisitor *visitor) consttinyxml2::XMLElementvirtual
    Attribute(const char *name, const char *value=0) consttinyxml2::XMLElement
    Accept(XMLVisitor *visitor) const overridetinyxml2::XMLElementvirtual
    Attribute(const char *name, const char *value=0) consttinyxml2::XMLElement
    BoolAttribute(const char *name, bool defaultValue=false) consttinyxml2::XMLElement
    BoolText(bool defaultValue=false) consttinyxml2::XMLElement
    DeepClone(XMLDocument *target) consttinyxml2::XMLNode
    DeleteAttribute(const char *name)tinyxml2::XMLElement
    BoolText(bool defaultValue=false) consttinyxml2::XMLElement
    DeepClone(XMLDocument *target) consttinyxml2::XMLNode
    DeleteAttribute(const char *name)tinyxml2::XMLElement
    DeleteChild(XMLNode *node)tinyxml2::XMLNode
    DeleteChildren()tinyxml2::XMLNode
    DeleteChildren()tinyxml2::XMLNode
    DoubleAttribute(const char *name, double defaultValue=0) consttinyxml2::XMLElement
    DoubleText(double defaultValue=0) consttinyxml2::XMLElement
    FindAttribute(const char *name) consttinyxml2::XMLElement
    FirstAttribute() consttinyxml2::XMLElementinline
    FirstChild() consttinyxml2::XMLNodeinline
    FirstChildElement(const char *name=0) consttinyxml2::XMLNode
    DoubleText(double defaultValue=0) consttinyxml2::XMLElement
    FindAttribute(const char *name) consttinyxml2::XMLElement
    FirstAttribute() consttinyxml2::XMLElementinline
    FirstChild() consttinyxml2::XMLNodeinline
    FirstChildElement(const char *name=0) consttinyxml2::XMLNode
    FloatAttribute(const char *name, float defaultValue=0) consttinyxml2::XMLElement
    FloatText(float defaultValue=0) consttinyxml2::XMLElement
    GetDocument() consttinyxml2::XMLNodeinline
    GetDocument()tinyxml2::XMLNodeinline
    FloatText(float defaultValue=0) consttinyxml2::XMLElement
    GetDocument() consttinyxml2::XMLNodeinline
    GetDocument()tinyxml2::XMLNodeinline
    GetLineNum() consttinyxml2::XMLNodeinline
    GetText() consttinyxml2::XMLElement
    GetUserData() consttinyxml2::XMLNodeinline
    InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
    InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
    InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
    InsertNewChildElement(const char *name)tinyxml2::XMLElement
    InsertNewComment(const char *comment)tinyxml2::XMLElement
    InsertNewDeclaration(const char *text)tinyxml2::XMLElement
    InsertNewText(const char *text)tinyxml2::XMLElement
    InsertNewUnknown(const char *text)tinyxml2::XMLElement
    Int64Attribute(const char *name, int64_t defaultValue=0) consttinyxml2::XMLElement
    GetText() consttinyxml2::XMLElement
    GetUserData() consttinyxml2::XMLNodeinline
    InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
    InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
    InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
    InsertNewChildElement(const char *name)tinyxml2::XMLElement
    InsertNewComment(const char *comment)tinyxml2::XMLElement
    InsertNewDeclaration(const char *text)tinyxml2::XMLElement
    InsertNewText(const char *text)tinyxml2::XMLElement
    InsertNewUnknown(const char *text)tinyxml2::XMLElement
    Int64Attribute(const char *name, int64_t defaultValue=0) consttinyxml2::XMLElement
    Int64Text(int64_t defaultValue=0) consttinyxml2::XMLElement
    IntAttribute(const char *name, int defaultValue=0) consttinyxml2::XMLElement
    LastChild() consttinyxml2::XMLNodeinline
    LastChildElement(const char *name=0) consttinyxml2::XMLNode
    Name() consttinyxml2::XMLElementinline
    NextSibling() consttinyxml2::XMLNodeinline
    NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
    NoChildren() consttinyxml2::XMLNodeinline
    Parent() consttinyxml2::XMLNodeinline
    PreviousSibling() consttinyxml2::XMLNodeinline
    PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
    QueryAttribute(const char *name, int *value) consttinyxml2::XMLElementinline
    IntAttribute(const char *name, int defaultValue=0) consttinyxml2::XMLElement
    LastChild() consttinyxml2::XMLNodeinline
    LastChildElement(const char *name=0) consttinyxml2::XMLNode
    Name() consttinyxml2::XMLElementinline
    NextSibling() consttinyxml2::XMLNodeinline
    NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
    NoChildren() consttinyxml2::XMLNodeinline
    Parent() consttinyxml2::XMLNodeinline
    PreviousSibling() consttinyxml2::XMLNodeinline
    PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
    QueryAttribute(const char *name, int *value) consttinyxml2::XMLElementinline
    QueryBoolAttribute(const char *name, bool *value) consttinyxml2::XMLElementinline
    QueryBoolText(bool *bval) consttinyxml2::XMLElement
    QueryBoolText(bool *bval) consttinyxml2::XMLElement
    QueryDoubleAttribute(const char *name, double *value) consttinyxml2::XMLElementinline
    QueryDoubleText(double *dval) consttinyxml2::XMLElement
    QueryDoubleText(double *dval) consttinyxml2::XMLElement
    QueryFloatAttribute(const char *name, float *value) consttinyxml2::XMLElementinline
    QueryFloatText(float *fval) consttinyxml2::XMLElement
    QueryFloatText(float *fval) consttinyxml2::XMLElement
    QueryInt64Attribute(const char *name, int64_t *value) consttinyxml2::XMLElementinline
    QueryInt64Text(int64_t *uval) consttinyxml2::XMLElement
    QueryInt64Text(int64_t *uval) consttinyxml2::XMLElement
    QueryIntAttribute(const char *name, int *value) consttinyxml2::XMLElementinline
    QueryIntText(int *ival) consttinyxml2::XMLElement
    QueryIntText(int *ival) consttinyxml2::XMLElement
    QueryStringAttribute(const char *name, const char **value) consttinyxml2::XMLElementinline
    QueryUnsigned64Attribute(const char *name, uint64_t *value) consttinyxml2::XMLElementinline
    QueryUnsigned64Attribute(const char *name, uint64_t *value) consttinyxml2::XMLElementinline
    QueryUnsigned64Text(uint64_t *uval) consttinyxml2::XMLElement
    QueryUnsignedAttribute(const char *name, unsigned int *value) consttinyxml2::XMLElementinline
    QueryUnsignedAttribute(const char *name, unsigned int *value) consttinyxml2::XMLElementinline
    QueryUnsignedText(unsigned *uval) consttinyxml2::XMLElement
    SetAttribute(const char *name, const char *value)tinyxml2::XMLElementinline
    SetAttribute(const char *name, const char *value)tinyxml2::XMLElementinline
    SetAttribute(const char *name, int value)tinyxml2::XMLElementinline
    SetAttribute(const char *name, unsigned value)tinyxml2::XMLElementinline
    SetAttribute(const char *name, unsigned value)tinyxml2::XMLElementinline
    SetAttribute(const char *name, int64_t value)tinyxml2::XMLElementinline
    SetAttribute(const char *name, uint64_t value)tinyxml2::XMLElementinline
    SetAttribute(const char *name, uint64_t value)tinyxml2::XMLElementinline
    SetAttribute(const char *name, bool value)tinyxml2::XMLElementinline
    SetAttribute(const char *name, double value)tinyxml2::XMLElementinline
    SetAttribute(const char *name, double value)tinyxml2::XMLElementinline
    SetAttribute(const char *name, float value)tinyxml2::XMLElementinline
    SetName(const char *str, bool staticMem=false)tinyxml2::XMLElementinline
    SetName(const char *str, bool staticMem=false)tinyxml2::XMLElementinline
    SetText(const char *inText)tinyxml2::XMLElement
    SetText(int value)tinyxml2::XMLElement
    SetText(int value)tinyxml2::XMLElement
    SetText(unsigned value)tinyxml2::XMLElement
    SetText(int64_t value)tinyxml2::XMLElement
    SetText(int64_t value)tinyxml2::XMLElement
    SetText(uint64_t value)tinyxml2::XMLElement
    SetText(bool value)tinyxml2::XMLElement
    SetText(bool value)tinyxml2::XMLElement
    SetText(double value)tinyxml2::XMLElement
    SetText(float value)tinyxml2::XMLElement
    SetText(float value)tinyxml2::XMLElement
    SetUserData(void *userData)tinyxml2::XMLNodeinline
    SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
    ShallowClone(XMLDocument *document) consttinyxml2::XMLElementvirtual
    ShallowEqual(const XMLNode *compare) consttinyxml2::XMLElementvirtual
    ToComment()tinyxml2::XMLNodeinlinevirtual
    ToDeclaration()tinyxml2::XMLNodeinlinevirtual
    ToDocument()tinyxml2::XMLNodeinlinevirtual
    ToElement()tinyxml2::XMLElementinlinevirtual
    ToText()tinyxml2::XMLNodeinlinevirtual
    ToUnknown()tinyxml2::XMLNodeinlinevirtual
    SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
    ShallowClone(XMLDocument *document) const overridetinyxml2::XMLElementvirtual
    ShallowEqual(const XMLNode *compare) const overridetinyxml2::XMLElementvirtual
    ToComment()tinyxml2::XMLNodeinlinevirtual
    ToDeclaration()tinyxml2::XMLNodeinlinevirtual
    ToDocument()tinyxml2::XMLNodeinlinevirtual
    ToElement() overridetinyxml2::XMLElementinlinevirtual
    ToText()tinyxml2::XMLNodeinlinevirtual
    ToUnknown()tinyxml2::XMLNodeinlinevirtual
    Unsigned64Attribute(const char *name, uint64_t defaultValue=0) consttinyxml2::XMLElement
    Unsigned64Text(uint64_t defaultValue=0) consttinyxml2::XMLElement
    Unsigned64Text(uint64_t defaultValue=0) consttinyxml2::XMLElement
    UnsignedAttribute(const char *name, unsigned defaultValue=0) consttinyxml2::XMLElement
    UnsignedText(unsigned defaultValue=0) consttinyxml2::XMLElement
    Value() consttinyxml2::XMLNode
    UnsignedText(unsigned defaultValue=0) consttinyxml2::XMLElement
    Value() consttinyxml2::XMLNode
    diff --git a/docs/classtinyxml2_1_1_x_m_l_element.html b/docs/classtinyxml2_1_1_x_m_l_element.html index 7a56950..80faa88 100644 --- a/docs/classtinyxml2_1_1_x_m_l_element.html +++ b/docs/classtinyxml2_1_1_x_m_l_element.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: tinyxml2::XMLElement Class Reference + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    @@ -85,323 +93,323 @@ Inheritance diagram for tinyxml2::XMLElement:
    - - - - - + + + + - - - - - - - - + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - - + +

    +

    Public Member Functions

    -const char * Name () const
     Get the name of an element (which is the Value() of the node.)
     
    -void SetName (const char *str, bool staticMem=false)
    +const char * Name () const
     Get the name of an element (which is the Value() of the node.)
     
    +void SetName (const char *str, bool staticMem=false)
     Set the name of the element.
     
    -virtual XMLElementToElement ()
     Safely cast to an Element, or null.
     
    virtual bool Accept (XMLVisitor *visitor) const
     
    const char * Attribute (const char *name, const char *value=0) const
     
    int IntAttribute (const char *name, int defaultValue=0) const
    +virtual XMLElementToElement () override
     Safely cast to an Element, or null.
     
    virtual bool Accept (XMLVisitor *visitor) const override
     
    const char * Attribute (const char *name, const char *value=0) const
     
    int IntAttribute (const char *name, int defaultValue=0) const
     
    -unsigned UnsignedAttribute (const char *name, unsigned defaultValue=0) const
     See IntAttribute()
    +unsigned UnsignedAttribute (const char *name, unsigned defaultValue=0) const
     See IntAttribute()
     
    -int64_t Int64Attribute (const char *name, int64_t defaultValue=0) const
     See IntAttribute()
    +int64_t Int64Attribute (const char *name, int64_t defaultValue=0) const
     See IntAttribute()
     
    -uint64_t Unsigned64Attribute (const char *name, uint64_t defaultValue=0) const
     See IntAttribute()
    +uint64_t Unsigned64Attribute (const char *name, uint64_t defaultValue=0) const
     See IntAttribute()
     
    -bool BoolAttribute (const char *name, bool defaultValue=false) const
     See IntAttribute()
    +bool BoolAttribute (const char *name, bool defaultValue=false) const
     See IntAttribute()
     
    -double DoubleAttribute (const char *name, double defaultValue=0) const
     See IntAttribute()
    +double DoubleAttribute (const char *name, double defaultValue=0) const
     See IntAttribute()
     
    -float FloatAttribute (const char *name, float defaultValue=0) const
     See IntAttribute()
    +float FloatAttribute (const char *name, float defaultValue=0) const
     See IntAttribute()
     
    XMLError QueryIntAttribute (const char *name, int *value) const
    XMLError QueryIntAttribute (const char *name, int *value) const
     
    -XMLError QueryUnsignedAttribute (const char *name, unsigned int *value) const
     See QueryIntAttribute()
    +XMLError QueryUnsignedAttribute (const char *name, unsigned int *value) const
     See QueryIntAttribute()
     
    -XMLError QueryInt64Attribute (const char *name, int64_t *value) const
     See QueryIntAttribute()
    +XMLError QueryInt64Attribute (const char *name, int64_t *value) const
     See QueryIntAttribute()
     
    -XMLError QueryUnsigned64Attribute (const char *name, uint64_t *value) const
     See QueryIntAttribute()
    +XMLError QueryUnsigned64Attribute (const char *name, uint64_t *value) const
     See QueryIntAttribute()
     
    -XMLError QueryBoolAttribute (const char *name, bool *value) const
     See QueryIntAttribute()
    +XMLError QueryBoolAttribute (const char *name, bool *value) const
     See QueryIntAttribute()
     
    -XMLError QueryDoubleAttribute (const char *name, double *value) const
     See QueryIntAttribute()
    +XMLError QueryDoubleAttribute (const char *name, double *value) const
     See QueryIntAttribute()
     
    -XMLError QueryFloatAttribute (const char *name, float *value) const
     See QueryIntAttribute()
    +XMLError QueryFloatAttribute (const char *name, float *value) const
     See QueryIntAttribute()
     
    -XMLError QueryStringAttribute (const char *name, const char **value) const
     See QueryIntAttribute()
    +XMLError QueryStringAttribute (const char *name, const char **value) const
     See QueryIntAttribute()
     
    XMLError QueryAttribute (const char *name, int *value) const
    XMLError QueryAttribute (const char *name, int *value) const
     
    -void SetAttribute (const char *name, const char *value)
    +void SetAttribute (const char *name, const char *value)
     Sets the named attribute to value.
     
    -void SetAttribute (const char *name, int value)
    +void SetAttribute (const char *name, int value)
     Sets the named attribute to value.
     
    -void SetAttribute (const char *name, unsigned value)
    +void SetAttribute (const char *name, unsigned value)
     Sets the named attribute to value.
     
    -void SetAttribute (const char *name, int64_t value)
    +void SetAttribute (const char *name, int64_t value)
     Sets the named attribute to value.
     
    -void SetAttribute (const char *name, uint64_t value)
    +void SetAttribute (const char *name, uint64_t value)
     Sets the named attribute to value.
     
    -void SetAttribute (const char *name, bool value)
    +void SetAttribute (const char *name, bool value)
     Sets the named attribute to value.
     
    -void SetAttribute (const char *name, double value)
    +void SetAttribute (const char *name, double value)
     Sets the named attribute to value.
     
    -void SetAttribute (const char *name, float value)
    +void SetAttribute (const char *name, float value)
     Sets the named attribute to value.
     
    void DeleteAttribute (const char *name)
    void DeleteAttribute (const char *name)
     
    -const XMLAttributeFirstAttribute () const
     Return the first attribute in the list.
     
    -const XMLAttributeFindAttribute (const char *name) const
     Query a specific attribute in the list.
     
    const char * GetText () const
     
    void SetText (const char *inText)
    +const XMLAttributeFirstAttribute () const
     Return the first attribute in the list.
     
    +const XMLAttributeFindAttribute (const char *name) const
     Query a specific attribute in the list.
     
    const char * GetText () const
     
    void SetText (const char *inText)
     
    -void SetText (int value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
    +void SetText (int value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
     
    -void SetText (unsigned value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
    +void SetText (unsigned value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
     
    -void SetText (int64_t value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
    +void SetText (int64_t value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
     
    -void SetText (uint64_t value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
    +void SetText (uint64_t value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
     
    -void SetText (bool value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
    +void SetText (bool value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
     
    -void SetText (double value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
    +void SetText (double value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
     
    -void SetText (float value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
    +void SetText (float value)
     Convenience method for setting text inside an element. See SetText() for important limitations.
     
    XMLError QueryIntText (int *ival) const
    XMLError QueryIntText (int *ival) const
     
    -XMLError QueryUnsignedText (unsigned *uval) const
     See QueryIntText()
    +XMLError QueryUnsignedText (unsigned *uval) const
     See QueryIntText()
     
    -XMLError QueryInt64Text (int64_t *uval) const
     See QueryIntText()
    +XMLError QueryInt64Text (int64_t *uval) const
     See QueryIntText()
     
    -XMLError QueryUnsigned64Text (uint64_t *uval) const
     See QueryIntText()
    +XMLError QueryUnsigned64Text (uint64_t *uval) const
     See QueryIntText()
     
    -XMLError QueryBoolText (bool *bval) const
     See QueryIntText()
    +XMLError QueryBoolText (bool *bval) const
     See QueryIntText()
     
    -XMLError QueryDoubleText (double *dval) const
     See QueryIntText()
    +XMLError QueryDoubleText (double *dval) const
     See QueryIntText()
     
    -XMLError QueryFloatText (float *fval) const
     See QueryIntText()
    +XMLError QueryFloatText (float *fval) const
     See QueryIntText()
     
    -unsigned UnsignedText (unsigned defaultValue=0) const
     See QueryIntText()
    +unsigned UnsignedText (unsigned defaultValue=0) const
     See QueryIntText()
     
    -int64_t Int64Text (int64_t defaultValue=0) const
     See QueryIntText()
    +int64_t Int64Text (int64_t defaultValue=0) const
     See QueryIntText()
     
    -uint64_t Unsigned64Text (uint64_t defaultValue=0) const
     See QueryIntText()
    +uint64_t Unsigned64Text (uint64_t defaultValue=0) const
     See QueryIntText()
     
    -bool BoolText (bool defaultValue=false) const
     See QueryIntText()
    +bool BoolText (bool defaultValue=false) const
     See QueryIntText()
     
    -double DoubleText (double defaultValue=0) const
     See QueryIntText()
    +double DoubleText (double defaultValue=0) const
     See QueryIntText()
     
    -float FloatText (float defaultValue=0) const
     See QueryIntText()
    +float FloatText (float defaultValue=0) const
     See QueryIntText()
     
    XMLElementInsertNewChildElement (const char *name)
     
    -XMLCommentInsertNewComment (const char *comment)
     See InsertNewChildElement()
     
    -XMLTextInsertNewText (const char *text)
     See InsertNewChildElement()
     
    -XMLDeclarationInsertNewDeclaration (const char *text)
     See InsertNewChildElement()
     
    -XMLUnknownInsertNewUnknown (const char *text)
     See InsertNewChildElement()
     
    virtual XMLNodeShallowClone (XMLDocument *document) const
     
    virtual bool ShallowEqual (const XMLNode *compare) const
     
    - Public Member Functions inherited from tinyxml2::XMLNode
    -const XMLDocumentGetDocument () const
     Get the XMLDocument that owns this XMLNode.
     
    -XMLDocumentGetDocument ()
     Get the XMLDocument that owns this XMLNode.
     
    -virtual XMLTextToText ()
     Safely cast to Text, or null.
     
    -virtual XMLCommentToComment ()
     Safely cast to a Comment, or null.
     
    -virtual XMLDocumentToDocument ()
     Safely cast to a Document, or null.
     
    -virtual XMLDeclarationToDeclaration ()
     Safely cast to a Declaration, or null.
     
    -virtual XMLUnknownToUnknown ()
     Safely cast to an Unknown, or null.
     
    const char * Value () const
     
    void SetValue (const char *val, bool staticMem=false)
    XMLElementInsertNewChildElement (const char *name)
     
    +XMLCommentInsertNewComment (const char *comment)
     See InsertNewChildElement()
     
    +XMLTextInsertNewText (const char *text)
     See InsertNewChildElement()
     
    +XMLDeclarationInsertNewDeclaration (const char *text)
     See InsertNewChildElement()
     
    +XMLUnknownInsertNewUnknown (const char *text)
     See InsertNewChildElement()
     
    virtual XMLNodeShallowClone (XMLDocument *document) const override
     
    virtual bool ShallowEqual (const XMLNode *compare) const override
     
    - Public Member Functions inherited from tinyxml2::XMLNode
    +const XMLDocumentGetDocument () const
     Get the XMLDocument that owns this XMLNode.
     
    +XMLDocumentGetDocument ()
     Get the XMLDocument that owns this XMLNode.
     
    +virtual XMLTextToText ()
     Safely cast to Text, or null.
     
    +virtual XMLCommentToComment ()
     Safely cast to a Comment, or null.
     
    +virtual XMLDocumentToDocument ()
     Safely cast to a Document, or null.
     
    +virtual XMLDeclarationToDeclaration ()
     Safely cast to a Declaration, or null.
     
    +virtual XMLUnknownToUnknown ()
     Safely cast to an Unknown, or null.
     
    const char * Value () const
     
    void SetValue (const char *val, bool staticMem=false)
     
    -int GetLineNum () const
    +int GetLineNum () const
     Gets the line number the node is in, if the document was parsed from a file.
     
    -const XMLNodeParent () const
     Get the parent of this node on the DOM.
     
    -bool NoChildren () const
    +const XMLNodeParent () const
     Get the parent of this node on the DOM.
     
    +bool NoChildren () const
     Returns true if this node has no children.
     
    -const XMLNodeFirstChild () const
     Get the first child node, or null if none exists.
     
    const XMLElementFirstChildElement (const char *name=0) const
     
    -const XMLNodeLastChild () const
     Get the last child node, or null if none exists.
     
    const XMLElementLastChildElement (const char *name=0) const
     
    -const XMLNodePreviousSibling () const
     Get the previous (left) sibling node of this node.
     
    -const XMLElementPreviousSiblingElement (const char *name=0) const
     Get the previous (left) sibling element of this node, with an optionally supplied name.
     
    -const XMLNodeNextSibling () const
     Get the next (right) sibling node of this node.
     
    -const XMLElementNextSiblingElement (const char *name=0) const
     Get the next (right) sibling element of this node, with an optionally supplied name.
     
    XMLNodeInsertEndChild (XMLNode *addThis)
     
    XMLNodeInsertFirstChild (XMLNode *addThis)
     
    XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
     
    void DeleteChildren ()
    +const XMLNodeFirstChild () const
     Get the first child node, or null if none exists.
     
    const XMLElementFirstChildElement (const char *name=0) const
     
    +const XMLNodeLastChild () const
     Get the last child node, or null if none exists.
     
    const XMLElementLastChildElement (const char *name=0) const
     
    +const XMLNodePreviousSibling () const
     Get the previous (left) sibling node of this node.
     
    +const XMLElementPreviousSiblingElement (const char *name=0) const
     Get the previous (left) sibling element of this node, with an optionally supplied name.
     
    +const XMLNodeNextSibling () const
     Get the next (right) sibling node of this node.
     
    +const XMLElementNextSiblingElement (const char *name=0) const
     Get the next (right) sibling element of this node, with an optionally supplied name.
     
    XMLNodeInsertEndChild (XMLNode *addThis)
     
    XMLNodeInsertFirstChild (XMLNode *addThis)
     
    XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
     
    void DeleteChildren ()
     
    void DeleteChild (XMLNode *node)
    void DeleteChild (XMLNode *node)
     
    XMLNodeDeepClone (XMLDocument *target) const
     
    void SetUserData (void *userData)
    XMLNodeDeepClone (XMLDocument *target) const
     
    void SetUserData (void *userData)
     
    void * GetUserData () const
     
    void * GetUserData () const
     

    Detailed Description

    The element is a container class. It has a value, the element name, and can contain other elements, text, comments, and unknowns. Elements also contain an arbitrary number of attributes.

    Member Function Documentation

    - -

    ◆ Accept()

    + +

    ◆ Accept()

    @@ -412,14 +420,13 @@ const XMLElement * virtual bool tinyxml2::XMLElement::Accept ( - XMLVisitor *  - visitor) + XMLVisitor * visitor) const -virtual +overridevirtual
    @@ -431,7 +438,7 @@ const XMLElement *
  • http://c2.com/cgi/wiki?HierarchicalVisitorPattern
  • Which are both good references for "visiting".

    -

    An example of using Accept():

    XMLPrinter printer;
    +

    An example of using Accept():

    XMLPrinter printer;
     tinyxmlDoc.Accept( &printer );
     const char* xmlcstr = printer.CStr();
     
    @@ -439,32 +446,25 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ Attribute()

    + +

    ◆ Attribute()

    - + - - + - - - - - - - +
    const char* tinyxml2::XMLElement::Attribute const char * tinyxml2::XMLElement::Attribute (const char * name, const char * name,
    const char * value = 0 
    ) constconst char * value = 0 ) const
    -

    Given an attribute name, Attribute() returns the value for the attribute of that name, or null if none exists. For example:

    +

    Given an attribute name, Attribute() returns the value for the attribute of that name, or null if none exists. For example:

    const char* value = ele->Attribute( "foo" );
     

    The 'value' parameter is normally null. However, if specified, the attribute will only be returned if the 'name' and 'value' match. This allow you to write code:

    if ( ele->Attribute( "foo", "bar" ) ) callFooIsBar();
    @@ -474,8 +474,8 @@ const char* xmlcstr = printer.CStr();
     
    - -

    ◆ DeleteAttribute()

    + +

    ◆ DeleteAttribute()

    @@ -483,8 +483,7 @@ const char* xmlcstr = printer.CStr(); void tinyxml2::XMLElement::DeleteAttribute ( - const char *  - name) + const char * name) @@ -493,42 +492,41 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ GetText()

    + +

    ◆ GetText()

    - + - +
    const char* tinyxml2::XMLElement::GetText const char * tinyxml2::XMLElement::GetText ()) const
    -

    Convenience function for easy access to the text inside an element. Although easy and concise, GetText() is limited compared to getting the XMLText child and accessing it directly.

    -

    If the first child of 'this' is a XMLText, the GetText() returns the character string of the Text node, else null is returned.

    +

    Convenience function for easy access to the text inside an element. Although easy and concise, GetText() is limited compared to getting the XMLText child and accessing it directly.

    +

    If the first child of 'this' is a XMLText, the GetText() returns the character string of the Text node, else null is returned.

    This is a convenient method for getting the text of simple contained text:

    <foo>This is text</foo>
         const char* str = fooElement->GetText();
     

    'str' will be a pointer to "This is text".

    Note that this function can be misleading. If the element foo was created from this XML:

        <foo><b>This is text</b></foo>
     

    then the value of str would be null. The first child node isn't a text node, it is another element. From this XML:

        <foo>This is <b>text</b></foo>
    -

    GetText() will return "This is ".

    +

    GetText() will return "This is ".

    - -

    ◆ InsertNewChildElement()

    + +

    ◆ InsertNewChildElement()

    - + - - +
    XMLElement* tinyxml2::XMLElement::InsertNewChildElement XMLElement * tinyxml2::XMLElement::InsertNewChildElement (const char * name)const char * name)
    @@ -537,8 +535,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ IntAttribute()

    + +

    ◆ IntAttribute()

    @@ -546,28 +544,21 @@ const char* xmlcstr = printer.CStr(); int tinyxml2::XMLElement::IntAttribute ( - const char *  - name, + const char * name, - int  - defaultValue = 0  - - - - ) - const + int defaultValue = 0 ) const
    -

    Given an attribute name, IntAttribute() returns the value of the attribute interpreted as an integer. The default value will be returned if the attribute isn't present, or if there is an error. (For a method with error checking, see QueryIntAttribute()).

    +

    Given an attribute name, IntAttribute() returns the value of the attribute interpreted as an integer. The default value will be returned if the attribute isn't present, or if there is an error. (For a method with error checking, see QueryIntAttribute()).

    - -

    ◆ QueryAttribute()

    + +

    ◆ QueryAttribute()

    @@ -578,19 +569,12 @@ const char* xmlcstr = printer.CStr(); XMLError tinyxml2::XMLElement::QueryAttribute ( - const char *  - name, + const char * name, - int *  - value  - - - - ) - const + int * value ) const @@ -599,15 +583,15 @@ const char* xmlcstr = printer.CStr();
    -

    Given an attribute name, QueryAttribute() returns XML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion can't be performed, or XML_NO_ATTRIBUTE if the attribute doesn't exist. It is overloaded for the primitive types, and is a generally more convenient replacement of QueryIntAttribute() and related functions.

    +

    Given an attribute name, QueryAttribute() returns XML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion can't be performed, or XML_NO_ATTRIBUTE if the attribute doesn't exist. It is overloaded for the primitive types, and is a generally more convenient replacement of QueryIntAttribute() and related functions.

    If successful, the result of the conversion will be written to 'value'. If not successful, nothing will be written to 'value'. This allows you to provide default value:

    int value = 10;
     QueryAttribute( "foo", &value );        // if "foo" isn't found, value will still be 10
     
    - -

    ◆ QueryIntAttribute()

    + +

    ◆ QueryIntAttribute()

    @@ -618,19 +602,12 @@ QueryAttribute( "foo", &value ); // if "foo" isn't found, value will XMLError tinyxml2::XMLElement::QueryIntAttribute ( - const char *  - name, + const char * name, - int *  - value  - - - - ) - const + int * value ) const @@ -639,14 +616,14 @@ QueryAttribute( "foo", &value ); // if "foo" isn't found, value will
    -

    Given an attribute name, QueryIntAttribute() returns XML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion can't be performed, or XML_NO_ATTRIBUTE if the attribute doesn't exist. If successful, the result of the conversion will be written to 'value'. If not successful, nothing will be written to 'value'. This allows you to provide default value:

    +

    Given an attribute name, QueryIntAttribute() returns XML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion can't be performed, or XML_NO_ATTRIBUTE if the attribute doesn't exist. If successful, the result of the conversion will be written to 'value'. If not successful, nothing will be written to 'value'. This allows you to provide default value:

    int value = 10;
     QueryIntAttribute( "foo", &value );     // if "foo" isn't found, value will still be 10
     
    - -

    ◆ QueryIntText()

    + +

    ◆ QueryIntText()

    @@ -654,8 +631,7 @@ QueryIntAttribute( "foo", &value ); // if "foo" isn't found, value will XMLError tinyxml2::XMLElement::QueryIntText ( - int *  - ival) + int * ival) const @@ -664,7 +640,7 @@ QueryIntAttribute( "foo", &value ); // if "foo" isn't found, value will <x>1</x> <y>1.4</y> </point> -

    The QueryIntText() and similar functions provide a safe and easier way to get to the "value" of x and y.

    +

    The QueryIntText() and similar functions provide a safe and easier way to get to the "value" of x and y.

        int x = 0;
         float y = 0;    // types of x and y are contrived for example
         const XMLElement* xElement = pointElement->FirstChildElement( "x" );
    @@ -675,8 +651,8 @@ QueryIntAttribute( "foo", &value );     // if "foo" isn't found, value will
     
     
    - -

    ◆ SetText()

    + +

    ◆ SetText()

    @@ -684,26 +660,25 @@ QueryIntAttribute( "foo", &value ); // if "foo" isn't found, value will void tinyxml2::XMLElement::SetText ( - const char *  - inText) + const char * inText)
    -

    Convenience function for easy access to the text inside an element. Although easy and concise, SetText() is limited compared to creating an XMLText child and mutating it directly.

    -

    If the first child of 'this' is a XMLText, SetText() sets its value to the given string, otherwise it will create a first child that is an XMLText.

    +

    Convenience function for easy access to the text inside an element. Although easy and concise, SetText() is limited compared to creating an XMLText child and mutating it directly.

    +

    If the first child of 'this' is a XMLText, SetText() sets its value to the given string, otherwise it will create a first child that is an XMLText.

    This is a convenient method for setting the text of simple contained text:

    <foo>This is text</foo>
         fooElement->SetText( "Hullaballoo!" );
     <foo>Hullaballoo!</foo>
     

    Note that this function can be misleading. If the element foo was created from this XML:

        <foo><b>This is text</b></foo>
     

    then it will not change "This is text", but rather prefix it with a text element:

        <foo>Hullaballoo!<b>This is text</b></foo>
     

    For this XML:

        <foo />
    -

    SetText() will generate

        <foo>Hullaballoo!</foo>
    +

    SetText() will generate

        <foo>Hullaballoo!</foo>
     
    - -

    ◆ ShallowClone()

    + +

    ◆ ShallowClone()

    @@ -712,28 +687,27 @@ QueryIntAttribute( "foo", &value ); // if "foo" isn't found, value will - + - - +
    virtual XMLNode* tinyxml2::XMLElement::ShallowClone virtual XMLNode * tinyxml2::XMLElement::ShallowClone (XMLDocumentdocument)XMLDocument * document) const
    -virtual +overridevirtual
    -

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    +

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    Note: if called on a XMLDocument, this will return null.

    -

    Implements tinyxml2::XMLNode.

    +

    Implements tinyxml2::XMLNode.

    - -

    ◆ ShallowEqual()

    + +

    ◆ ShallowEqual()

    @@ -744,14 +718,13 @@ QueryIntAttribute( "foo", &value ); // if "foo" isn't found, value will virtual bool tinyxml2::XMLElement::ShallowEqual ( - const XMLNode *  - compare) + const XMLNode * compare) const -virtual +overridevirtual
    @@ -768,7 +741,7 @@ QueryIntAttribute( "foo", &value ); // if "foo" isn't found, value will
    diff --git a/docs/classtinyxml2_1_1_x_m_l_element.png b/docs/classtinyxml2_1_1_x_m_l_element.png index b76dc5b5465b9f7c5586846f92b117a0035c0983..1feb99aa0ed34ff686d2bad6ec8f5b7c91ddabc2 100644 GIT binary patch delta 588 zcmV-S0<-<<1o#AyB!3%FOjJex|Nj600O;)Xb&tZQI4~)27?;fG;Nal@|Nk}3R-^y` z010$bPE!E?|NsC0|Ns9t0-MwT00IL^L_t(|0qvdZj;k;XgeQYk`Td{x6mqj&FO;(q zpp`3+0wfuKbrSfCWm%T{g@q*VR$?RuNk;M*Webx0QEPuGbAMF5QWNLp=yKCZ(kQ?n z$vw3!mZP%OTZOT;=P}lQxw&ixRn4k(xPN+pq57&#d!mZDvnb7}d5mYBQRN(;dzW+O0uZG|!ylbf7$j-* z1;$+WV+@yQ)K2pB-mnKkT@-Rgt*T}+@M^&SofMKfzIct0Slc}$YE4a?)qm0Drjw*mfI*UbYEdjl zWvfkv@hQ(^Y^(fu`8cR*u3Cp%=>kLbRX6R4O6Ja{G*8XPc-9$J?7^sl1{liIS2A}n zZ0>t%W@nh_2qScO9;2s{6lGr&9j!B{jnkXii|t2p+AfAks*u|J)j5Shl12wG=Dx2n zT%eK5(`Un82u)QHa$3!*W-{<)e8Xb*E29)uSak^1LIBc1dfMbmjRJImdxjpFBVYI9J{u{n)&sNy@ zXEAC5hnLyj9`vbpQ<|sde?04qD)wL;g&O0x$$PPp0t}n`o*Fg9rdhAWV9c}OUDyyS zjFvx-;VC*=X9%)op@B?$i80m(fj573mKe^z8gUF`?)w_!%k9_MIJhbHLa2%W(_Dt# zQJMpE>h0Ffc0Z{*Z_$h2tv_H~{f3V*F8|Kt7d9~fAkuR%L_}`aKX!Q>!ZILyHvj+t M07*qoM6N<$f+)@wxBvhE diff --git a/docs/classtinyxml2_1_1_x_m_l_handle-members.html b/docs/classtinyxml2_1_1_x_m_l_handle-members.html index 13e9036..761930c 100644 --- a/docs/classtinyxml2_1_1_x_m_l_handle-members.html +++ b/docs/classtinyxml2_1_1_x_m_l_handle-members.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Member List + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    tinyxml2::XMLHandle Member List
    +
    tinyxml2::XMLHandle Member List

    This is the complete list of members for tinyxml2::XMLHandle, including all inherited members.

    - + - + - - - + + + - - - - - + + + + + - +
    FirstChild()tinyxml2::XMLHandleinline
    FirstChildElement(const char *name=0)tinyxml2::XMLHandleinline
    FirstChildElement(const char *name=0)tinyxml2::XMLHandleinline
    LastChild()tinyxml2::XMLHandleinline
    LastChildElement(const char *name=0)tinyxml2::XMLHandleinline
    LastChildElement(const char *name=0)tinyxml2::XMLHandleinline
    NextSibling()tinyxml2::XMLHandleinline
    NextSiblingElement(const char *name=0)tinyxml2::XMLHandleinline
    operator=(const XMLHandle &ref)tinyxml2::XMLHandleinline
    PreviousSibling()tinyxml2::XMLHandleinline
    NextSiblingElement(const char *name=0)tinyxml2::XMLHandleinline
    operator=(const XMLHandle &ref)tinyxml2::XMLHandleinline
    PreviousSibling()tinyxml2::XMLHandleinline
    PreviousSiblingElement(const char *name=0)tinyxml2::XMLHandleinline
    ToDeclaration()tinyxml2::XMLHandleinline
    ToElement()tinyxml2::XMLHandleinline
    ToNode()tinyxml2::XMLHandleinline
    ToText()tinyxml2::XMLHandleinline
    ToUnknown()tinyxml2::XMLHandleinline
    ToDeclaration()tinyxml2::XMLHandleinline
    ToElement()tinyxml2::XMLHandleinline
    ToNode()tinyxml2::XMLHandleinline
    ToText()tinyxml2::XMLHandleinline
    ToUnknown()tinyxml2::XMLHandleinline
    XMLHandle(XMLNode *node)tinyxml2::XMLHandleinlineexplicit
    XMLHandle(XMLNode &node)tinyxml2::XMLHandleinlineexplicit
    XMLHandle(XMLNode &node)tinyxml2::XMLHandleinlineexplicit
    XMLHandle(const XMLHandle &ref)tinyxml2::XMLHandleinline
    diff --git a/docs/classtinyxml2_1_1_x_m_l_handle.html b/docs/classtinyxml2_1_1_x_m_l_handle.html index 3aacea3..a5f576c 100644 --- a/docs/classtinyxml2_1_1_x_m_l_handle.html +++ b/docs/classtinyxml2_1_1_x_m_l_handle.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: tinyxml2::XMLHandle Class Reference + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +

    #include <tinyxml2.h>

    - - + - + - + - - - - + + + + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + +

    +

    Public Member Functions

    XMLHandle (XMLNode *node)
    XMLHandle (XMLNode *node)
     Create a handle from any node (at any depth of the tree.) This can be a null pointer.
     
    XMLHandle (XMLNode &node)
    XMLHandle (XMLNode &node)
     Create a handle from a node.
     
    XMLHandle (const XMLHandle &ref)
    XMLHandle (const XMLHandle &ref)
     Copy constructor.
     
    -XMLHandleoperator= (const XMLHandle &ref)
     Assignment.
     
    -XMLHandle FirstChild ()
    +XMLHandleoperator= (const XMLHandle &ref)
     Assignment.
     
    +XMLHandle FirstChild ()
     Get the first child of this handle.
     
    -XMLHandle FirstChildElement (const char *name=0)
    +XMLHandle FirstChildElement (const char *name=0)
     Get the first child element of this handle.
     
    -XMLHandle LastChild ()
    +XMLHandle LastChild ()
     Get the last child of this handle.
     
    -XMLHandle LastChildElement (const char *name=0)
    +XMLHandle LastChildElement (const char *name=0)
     Get the last child element of this handle.
     
    -XMLHandle PreviousSibling ()
    +XMLHandle PreviousSibling ()
     Get the previous sibling of this handle.
     
    -XMLHandle PreviousSiblingElement (const char *name=0)
    +XMLHandle PreviousSiblingElement (const char *name=0)
     Get the previous sibling element of this handle.
     
    -XMLHandle NextSibling ()
    +XMLHandle NextSibling ()
     Get the next sibling of this handle.
     
    -XMLHandle NextSiblingElement (const char *name=0)
    +XMLHandle NextSiblingElement (const char *name=0)
     Get the next sibling element of this handle.
     
    -XMLNodeToNode ()
     Safe cast to XMLNode. This can return null.
     
    -XMLElementToElement ()
     Safe cast to XMLElement. This can return null.
     
    -XMLTextToText ()
     Safe cast to XMLText. This can return null.
     
    -XMLUnknownToUnknown ()
     Safe cast to XMLUnknown. This can return null.
     
    -XMLDeclarationToDeclaration ()
     Safe cast to XMLDeclaration. This can return null.
     
    +XMLNodeToNode ()
     Safe cast to XMLNode. This can return null.
     
    +XMLElementToElement ()
     Safe cast to XMLElement. This can return null.
     
    +XMLTextToText ()
     Safe cast to XMLText. This can return null.
     
    +XMLUnknownToUnknown ()
     Safe cast to XMLUnknown. This can return null.
     
    +XMLDeclarationToDeclaration ()
     Safe cast to XMLDeclaration. This can return null.
     

    Detailed Description

    A XMLHandle is a class that wraps a node pointer with null checks; this is an incredibly useful thing. Note that XMLHandle is not part of the TinyXML-2 DOM structure. It is a separate utility class.

    @@ -184,7 +192,7 @@ if ( child2 )
    diff --git a/docs/classtinyxml2_1_1_x_m_l_node-members.html b/docs/classtinyxml2_1_1_x_m_l_node-members.html index 6359fb2..3315a5a 100644 --- a/docs/classtinyxml2_1_1_x_m_l_node-members.html +++ b/docs/classtinyxml2_1_1_x_m_l_node-members.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Member List + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    tinyxml2::XMLNode Member List
    +
    tinyxml2::XMLNode Member List

    This is the complete list of members for tinyxml2::XMLNode, including all inherited members.

    - + - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - - - - - - + + + + + + +
    Accept(XMLVisitor *visitor) const =0tinyxml2::XMLNodepure virtual
    DeepClone(XMLDocument *target) consttinyxml2::XMLNode
    DeepClone(XMLDocument *target) consttinyxml2::XMLNode
    DeleteChild(XMLNode *node)tinyxml2::XMLNode
    DeleteChildren()tinyxml2::XMLNode
    FirstChild() consttinyxml2::XMLNodeinline
    FirstChildElement(const char *name=0) consttinyxml2::XMLNode
    GetDocument() consttinyxml2::XMLNodeinline
    GetDocument()tinyxml2::XMLNodeinline
    DeleteChildren()tinyxml2::XMLNode
    FirstChild() consttinyxml2::XMLNodeinline
    FirstChildElement(const char *name=0) consttinyxml2::XMLNode
    GetDocument() consttinyxml2::XMLNodeinline
    GetDocument()tinyxml2::XMLNodeinline
    GetLineNum() consttinyxml2::XMLNodeinline
    GetUserData() consttinyxml2::XMLNodeinline
    InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
    InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
    InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
    LastChild() consttinyxml2::XMLNodeinline
    LastChildElement(const char *name=0) consttinyxml2::XMLNode
    NextSibling() consttinyxml2::XMLNodeinline
    NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
    NoChildren() consttinyxml2::XMLNodeinline
    Parent() consttinyxml2::XMLNodeinline
    PreviousSibling() consttinyxml2::XMLNodeinline
    PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
    SetUserData(void *userData)tinyxml2::XMLNodeinline
    GetUserData() consttinyxml2::XMLNodeinline
    InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
    InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
    InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
    LastChild() consttinyxml2::XMLNodeinline
    LastChildElement(const char *name=0) consttinyxml2::XMLNode
    NextSibling() consttinyxml2::XMLNodeinline
    NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
    NoChildren() consttinyxml2::XMLNodeinline
    Parent() consttinyxml2::XMLNodeinline
    PreviousSibling() consttinyxml2::XMLNodeinline
    PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
    SetUserData(void *userData)tinyxml2::XMLNodeinline
    SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
    ShallowClone(XMLDocument *document) const =0tinyxml2::XMLNodepure virtual
    ShallowClone(XMLDocument *document) const =0tinyxml2::XMLNodepure virtual
    ShallowEqual(const XMLNode *compare) const =0tinyxml2::XMLNodepure virtual
    ToComment()tinyxml2::XMLNodeinlinevirtual
    ToDeclaration()tinyxml2::XMLNodeinlinevirtual
    ToDocument()tinyxml2::XMLNodeinlinevirtual
    ToElement()tinyxml2::XMLNodeinlinevirtual
    ToText()tinyxml2::XMLNodeinlinevirtual
    ToUnknown()tinyxml2::XMLNodeinlinevirtual
    Value() consttinyxml2::XMLNode
    ToComment()tinyxml2::XMLNodeinlinevirtual
    ToDeclaration()tinyxml2::XMLNodeinlinevirtual
    ToDocument()tinyxml2::XMLNodeinlinevirtual
    ToElement()tinyxml2::XMLNodeinlinevirtual
    ToText()tinyxml2::XMLNodeinlinevirtual
    ToUnknown()tinyxml2::XMLNodeinlinevirtual
    Value() consttinyxml2::XMLNode
    diff --git a/docs/classtinyxml2_1_1_x_m_l_node.html b/docs/classtinyxml2_1_1_x_m_l_node.html index a6f21a6..2e0881d 100644 --- a/docs/classtinyxml2_1_1_x_m_l_node.html +++ b/docs/classtinyxml2_1_1_x_m_l_node.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: tinyxml2::XMLNode Class Reference + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    @@ -90,106 +98,106 @@ Inheritance diagram for tinyxml2::XMLNode:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - + + + + + - + - + - - + +

    +

    Public Member Functions

    -const XMLDocumentGetDocument () const
     Get the XMLDocument that owns this XMLNode.
     
    -XMLDocumentGetDocument ()
     Get the XMLDocument that owns this XMLNode.
     
    -virtual XMLElementToElement ()
     Safely cast to an Element, or null.
     
    -virtual XMLTextToText ()
     Safely cast to Text, or null.
     
    -virtual XMLCommentToComment ()
     Safely cast to a Comment, or null.
     
    -virtual XMLDocumentToDocument ()
     Safely cast to a Document, or null.
     
    -virtual XMLDeclarationToDeclaration ()
     Safely cast to a Declaration, or null.
     
    -virtual XMLUnknownToUnknown ()
     Safely cast to an Unknown, or null.
     
    const char * Value () const
     
    void SetValue (const char *val, bool staticMem=false)
    +const XMLDocumentGetDocument () const
     Get the XMLDocument that owns this XMLNode.
     
    +XMLDocumentGetDocument ()
     Get the XMLDocument that owns this XMLNode.
     
    +virtual XMLElementToElement ()
     Safely cast to an Element, or null.
     
    +virtual XMLTextToText ()
     Safely cast to Text, or null.
     
    +virtual XMLCommentToComment ()
     Safely cast to a Comment, or null.
     
    +virtual XMLDocumentToDocument ()
     Safely cast to a Document, or null.
     
    +virtual XMLDeclarationToDeclaration ()
     Safely cast to a Declaration, or null.
     
    +virtual XMLUnknownToUnknown ()
     Safely cast to an Unknown, or null.
     
    const char * Value () const
     
    void SetValue (const char *val, bool staticMem=false)
     
    -int GetLineNum () const
    +int GetLineNum () const
     Gets the line number the node is in, if the document was parsed from a file.
     
    -const XMLNodeParent () const
     Get the parent of this node on the DOM.
     
    -bool NoChildren () const
    +const XMLNodeParent () const
     Get the parent of this node on the DOM.
     
    +bool NoChildren () const
     Returns true if this node has no children.
     
    -const XMLNodeFirstChild () const
     Get the first child node, or null if none exists.
     
    const XMLElementFirstChildElement (const char *name=0) const
     
    -const XMLNodeLastChild () const
     Get the last child node, or null if none exists.
     
    const XMLElementLastChildElement (const char *name=0) const
     
    -const XMLNodePreviousSibling () const
     Get the previous (left) sibling node of this node.
     
    -const XMLElementPreviousSiblingElement (const char *name=0) const
     Get the previous (left) sibling element of this node, with an optionally supplied name.
     
    -const XMLNodeNextSibling () const
     Get the next (right) sibling node of this node.
     
    -const XMLElementNextSiblingElement (const char *name=0) const
     Get the next (right) sibling element of this node, with an optionally supplied name.
     
    XMLNodeInsertEndChild (XMLNode *addThis)
     
    XMLNodeInsertFirstChild (XMLNode *addThis)
     
    XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
     
    void DeleteChildren ()
    +const XMLNodeFirstChild () const
     Get the first child node, or null if none exists.
     
    const XMLElementFirstChildElement (const char *name=0) const
     
    +const XMLNodeLastChild () const
     Get the last child node, or null if none exists.
     
    const XMLElementLastChildElement (const char *name=0) const
     
    +const XMLNodePreviousSibling () const
     Get the previous (left) sibling node of this node.
     
    +const XMLElementPreviousSiblingElement (const char *name=0) const
     Get the previous (left) sibling element of this node, with an optionally supplied name.
     
    +const XMLNodeNextSibling () const
     Get the next (right) sibling node of this node.
     
    +const XMLElementNextSiblingElement (const char *name=0) const
     Get the next (right) sibling element of this node, with an optionally supplied name.
     
    XMLNodeInsertEndChild (XMLNode *addThis)
     
    XMLNodeInsertFirstChild (XMLNode *addThis)
     
    XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
     
    void DeleteChildren ()
     
    void DeleteChild (XMLNode *node)
    void DeleteChild (XMLNode *node)
     
    virtual XMLNodeShallowClone (XMLDocument *document) const =0
     
    XMLNodeDeepClone (XMLDocument *target) const
     
    virtual bool ShallowEqual (const XMLNode *compare) const =0
    virtual XMLNodeShallowClone (XMLDocument *document) const =0
     
    XMLNodeDeepClone (XMLDocument *target) const
     
    virtual bool ShallowEqual (const XMLNode *compare) const =0
     
    virtual bool Accept (XMLVisitor *visitor) const =0
    virtual bool Accept (XMLVisitor *visitor) const =0
     
    void SetUserData (void *userData)
    void SetUserData (void *userData)
     
    void * GetUserData () const
     
    void * GetUserData () const
     

    Detailed Description

    XMLNode is a base class for every object that is in the XML Document Object Model (DOM), except XMLAttributes. Nodes have siblings, a parent, and children which can be navigated. A node is always in a XMLDocument. The type of a XMLNode can be queried, and it can be cast to its more defined type.

    @@ -204,8 +212,8 @@ An Element can contain: Element (container or leaf) Attributes (not on tree) Comment (leaf) Unknown (leaf)

    Member Function Documentation

    - -

    ◆ Accept()

    + +

    ◆ Accept()

    @@ -216,8 +224,7 @@ An Element can contain: Element (container or leaf) virtual bool tinyxml2::XMLNode::Accept ( - XMLVisitor *  - visitor) + XMLVisitor * visitor) const @@ -235,25 +242,24 @@ An Element can contain: Element (container or leaf)
  • http://c2.com/cgi/wiki?HierarchicalVisitorPattern
  • Which are both good references for "visiting".

    -

    An example of using Accept():

    XMLPrinter printer;
    +

    An example of using Accept():

    XMLPrinter printer;
     tinyxmlDoc.Accept( &printer );
     const char* xmlcstr = printer.CStr();
     
    -

    Implemented in tinyxml2::XMLDocument, tinyxml2::XMLElement, tinyxml2::XMLUnknown, tinyxml2::XMLDeclaration, tinyxml2::XMLComment, and tinyxml2::XMLText.

    +

    Implemented in tinyxml2::XMLText, tinyxml2::XMLComment, tinyxml2::XMLDeclaration, tinyxml2::XMLUnknown, tinyxml2::XMLElement, and tinyxml2::XMLDocument.

    - -

    ◆ DeepClone()

    + +

    ◆ DeepClone()

    - + - - +
    XMLNode* tinyxml2::XMLNode::DeepClone XMLNode * tinyxml2::XMLNode::DeepClone (XMLDocumenttarget)XMLDocument * target) const
    @@ -264,8 +270,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ DeleteChild()

    + +

    ◆ DeleteChild()

    @@ -273,8 +279,7 @@ const char* xmlcstr = printer.CStr(); void tinyxml2::XMLNode::DeleteChild ( - XMLNode *  - node) + XMLNode * node) @@ -283,8 +288,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ DeleteChildren()

    + +

    ◆ DeleteChildren()

    @@ -292,7 +297,7 @@ const char* xmlcstr = printer.CStr(); void tinyxml2::XMLNode::DeleteChildren ( - ) + ) @@ -301,17 +306,16 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ FirstChildElement()

    + +

    ◆ FirstChildElement()

    - + - - +
    const XMLElement* tinyxml2::XMLNode::FirstChildElement const XMLElement * tinyxml2::XMLNode::FirstChildElement (const char * name = 0)const char * name = 0) const
    @@ -320,8 +324,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ GetUserData()

    + +

    ◆ GetUserData()

    @@ -330,9 +334,9 @@ const char* xmlcstr = printer.CStr(); - + - +
    void* tinyxml2::XMLNode::GetUserData void * tinyxml2::XMLNode::GetUserData ()) const
    @@ -346,28 +350,21 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ InsertAfterChild()

    + +

    ◆ InsertAfterChild()

    - + - - + - - - - - - - +
    XMLNode* tinyxml2::XMLNode::InsertAfterChild XMLNode * tinyxml2::XMLNode::InsertAfterChild (XMLNodeafterThis, XMLNode * afterThis,
    XMLNodeaddThis 
    )XMLNode * addThis )
    @@ -375,17 +372,16 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ InsertEndChild()

    + +

    ◆ InsertEndChild()

    - + - - +
    XMLNode* tinyxml2::XMLNode::InsertEndChild XMLNode * tinyxml2::XMLNode::InsertEndChild (XMLNodeaddThis)XMLNode * addThis)
    @@ -394,17 +390,16 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ InsertFirstChild()

    + +

    ◆ InsertFirstChild()

    - + - - +
    XMLNode* tinyxml2::XMLNode::InsertFirstChild XMLNode * tinyxml2::XMLNode::InsertFirstChild (XMLNodeaddThis)XMLNode * addThis)
    @@ -413,17 +408,16 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ LastChildElement()

    + +

    ◆ LastChildElement()

    - + - - +
    const XMLElement* tinyxml2::XMLNode::LastChildElement const XMLElement * tinyxml2::XMLNode::LastChildElement (const char * name = 0)const char * name = 0) const
    @@ -432,8 +426,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ SetUserData()

    + +

    ◆ SetUserData()

    @@ -444,8 +438,7 @@ const char* xmlcstr = printer.CStr(); void tinyxml2::XMLNode::SetUserData ( - void *  - userData) + void * userData) @@ -459,8 +452,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ SetValue()

    + +

    ◆ SetValue()

    @@ -468,28 +461,21 @@ const char* xmlcstr = printer.CStr(); void tinyxml2::XMLNode::SetValue ( - const char *  - val, + const char * val, - bool  - staticMem = false  - - - - ) - + bool staticMem = false )
    -

    Set the Value of an XML node.

    See also
    Value()
    +

    Set the Value of an XML node.

    See also
    Value()
    - -

    ◆ ShallowClone()

    + +

    ◆ ShallowClone()

    @@ -498,10 +484,9 @@ const char* xmlcstr = printer.CStr(); - + - - +
    virtual XMLNode* tinyxml2::XMLNode::ShallowClone virtual XMLNode * tinyxml2::XMLNode::ShallowClone (XMLDocumentdocument)XMLDocument * document) const
    @@ -511,15 +496,15 @@ const char* xmlcstr = printer.CStr();
    -

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    +

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    Note: if called on a XMLDocument, this will return null.

    -

    Implemented in tinyxml2::XMLElement, tinyxml2::XMLUnknown, tinyxml2::XMLDeclaration, tinyxml2::XMLComment, tinyxml2::XMLText, and tinyxml2::XMLDocument.

    +

    Implemented in tinyxml2::XMLDocument, tinyxml2::XMLText, tinyxml2::XMLComment, tinyxml2::XMLDeclaration, tinyxml2::XMLUnknown, and tinyxml2::XMLElement.

    - -

    ◆ ShallowEqual()

    + +

    ◆ ShallowEqual()

    @@ -530,8 +515,7 @@ const char* xmlcstr = printer.CStr(); virtual bool tinyxml2::XMLNode::ShallowEqual ( - const XMLNode *  - compare) + const XMLNode * compare) const @@ -544,20 +528,20 @@ const char* xmlcstr = printer.CStr();

    Test if 2 nodes are the same, but don't test children. The 2 nodes do not need to be in the same Document.

    Note: if called on a XMLDocument, this will return false.

    -

    Implemented in tinyxml2::XMLElement, tinyxml2::XMLUnknown, tinyxml2::XMLDeclaration, tinyxml2::XMLComment, tinyxml2::XMLText, and tinyxml2::XMLDocument.

    +

    Implemented in tinyxml2::XMLDocument, tinyxml2::XMLText, tinyxml2::XMLComment, tinyxml2::XMLDeclaration, tinyxml2::XMLUnknown, and tinyxml2::XMLElement.

    - -

    ◆ Value()

    + +

    ◆ Value()

    - + - +
    const char* tinyxml2::XMLNode::Value const char * tinyxml2::XMLNode::Value ()) const
    @@ -576,7 +560,7 @@ Text: the text string
    diff --git a/docs/classtinyxml2_1_1_x_m_l_node.png b/docs/classtinyxml2_1_1_x_m_l_node.png index cb1e7ce191b61a5d9696a6ad4e8d0851896e182b..d750dee8fb978acd6f958c9ce56843e765f27738 100644 GIT binary patch literal 1889 zcmd5-dpML?82`qIbfHp_YbtGHx@eb(n9U_~$?Z!d_f&&OR@f%P&_&sVF+)j4J-$Tl z)37EowV8G?#^p;{86zQs%6$zpcF;c0?(^(F?O%KTc;EAT-{-vV?>*2%n|c7A?dHvKR>8Ik-v&(sigPCcXXgHR}x z*^POwxiX*9dC=hqAj6BpMDC6(kisy|=Ag@uh>^P^)B?lx@^|hf*3V)_YYedQ(enEf z2|QPlGv}lMZeVViA%MZQ8S#?ke1TOI#KU_y6vTJ|BGmz;Qxc?L2q*~Ujs*coUtl-o zpO8a^=Rbwc#9R~@^?D>bcBs5e=G&z)@@TE=(lt1MIwi<8*8v3?lZb>zx(_f}hL}RUNTIN7o@s>p(1>RAEh6Ei2>uRV)y*DkhaAn%FG% zo!BwC<3ePW1fsQSeIZtm8`Ca;a|7?dg98_jf`6kNiS2Uh*$!3n2o^0?6_kD9C=NF$G}=y!!Vo{%gmL?AzvcEW}r*l(ZpaN8<}f z_br95b$s2i$WMCUi-8}T7qS>MR(mlkN58anVXY^y1eYyQ{SPp*CBloyE*?7kI^ymi zyZ8}8Xg8z!ilc|vat=#bzSEe4&|0@yEQdvDWlt zXGMs7?ADWL90q3@N1aGB&D~}zOrfrigVJ-6UkRSMi24QF0#iH3A8hI-Mc2pNnjW36 zE0S*aDzWzsW_wiJ{@8DKOoJ3duU+RtP5&*nv|1$K25z>f=V`eEqAhf*oTVrMB$qP!9=X5kxm+(+_a<5X+_i(> zn4vU>We?A3mESP=Sfkv+RV2sP9hIJFE~xSx?XyOEH@=zzUlX*mOwb+v^&1k>tzu4S z{3PY>@o)FL6)3!oCo{(8JTC||#sdvp4qc zTwhy|c09=Y_xGS)L;yRZg-NKg^+^y=#p4GxQK2it-Sr||;MwlRCT|~+1XS$X1?dbG zZsV2dN4!tWQ0$2wL7DhNFu8`&@un`ByQa?1O>Z(>rFv_G4g1>{;l|uPUew?d&~BMm z1}SX!G*+AW&NgcVvfMmbR^6fT60dET#7HF-jwKldruFvE2)y(2_(PB~-o)*`CQelu ztF3vy2ITWkv0y*6_uCF{Q50mERawXgucgyiX8HaP_WFGO;Tz@Y>^gEKECG^el{3L@ z`WKb*4z*3OJ*Khb&0aBcH9E`|Fm`*u*1izG-BEb5ktoP^h639~23S`4W2iyeFA1w3SakL@=GqpYiEAkRIZXr++-)hV9wIQ+;XLd zn!{*CRi1P+OOa926!*XQrPC@|)�$eZK)C z^DN)>fO!D4XW&rR+Og_tmY(BA;-m{Lx9v?P$LAb7i0-Iz{8Phq=WeRF^8(sBdsh>_ zBF&_iD=)p=X8b5Rra8!`>4x|w?8Em^8#^B+agERx8TmcCc{a*H>-?o#j7Y^U;&C06I&#^jV%lw#RoLd`IG zV^?1SJDS@{b&|^$!kJ)vHUn*7SyrrH;X-_Ui7K#G7B^Nqx;h!x^{L@E!xlsNwD8kA zFnU#s%BF*<s~2<2lKq1GjGtk(cDdtdNpFB1GG>r)O;0Em*3z)ma8az#Kq%$*}!ymwgx}#18DFJHWz1EP!7!4T`Z4 z59V1NLt6l1!mQ9Yqc9*YPzIbj94dP)Fnj7NEJd{~^l4s9WzD;2L>IUsUfnD6dvSbj z>?yv$4dd}!z%%iu?=i!m?3aUb|b*2gg5?XzsZgQsGnQsoG@GNZ15p+Z4tNkz}cdB;` z86P3ThK!EmguXIv<{N=rL0;UgXMg0!)505OE~NoHm+LkxlT`8P(&8N-sPdC|^YcYf z{8_R5z`(*VeR#}jEwZ=jVd(5z04FS}S@srNQ^tSdF`O$y$rHgHB%jgSqRGyDrF|E5 z7+0W9c{V=&Y*KPSwXe5+DYvlSsk8XZ!U09B!!XNB>@2=r&1riPYm*hy9##vAw$+oZ z6-1fEU6tpoNiDc%zWdrpWFGSkI;McXbg+B5Wcu-Bdl4%Ss7m&f{rq5`fA)DJBT+Qd zahLT#f2F&uZqoWVJM6}pg@lO|f~)HUy=yS%VJw}03RH-2PAO>|Od&r|QV9mKd>JuA zO#b*a8`L9t1L@%|<4PBB8E2d_`~BYbk$W+8b-jN2hm_o;&iAWd7Tx$t=$&Cj;g-n> z(p#M;DrR^i+4f6?v`lbtuDkC?F1V*^)`8$3l#cHn=qD%A6el@7>?UvVUU9=VXRO0# znP6IG-6@$ov40<>$uMH*p$K#>pe0J8R)1O?#Pa&gDeUvNY*YyrCJNTIuuih&2w2iYHn{($h9S^Iu^rzE0x3K(YKz~N) z+pQd@yQ+aPC(UIsC_ht_=~zfr-WK+f z-3{`o3QbPg3(KXkgdmybWY6eOgbbqD>{)%)d65^X{DQOm*fD&}rpu1Rc>UcV!J@dS z!4n6RJ`)F}pXZ-w9I44XtezXVgZd^lOwvcUF(N66K8!+goVK)evMMN@+M65^zEgRE zu$C-&Oy?Sr%m%aVMp^HqzFU1J_;;myNg6c@WaC%m)Ikqn=&i-T13)?xvqucfm8?q* z)?7XaJh%i)ZC!H=M*#X7KvG-R9CWnx{#m8185~I9QfB|A>!bEU3&VunPwwk)*fm5p Xzr(?>R=o-O$02}Yen;y(KKc3&bpL#% diff --git a/docs/classtinyxml2_1_1_x_m_l_printer-members.html b/docs/classtinyxml2_1_1_x_m_l_printer-members.html index 81c7319..9f8a08c 100644 --- a/docs/classtinyxml2_1_1_x_m_l_printer-members.html +++ b/docs/classtinyxml2_1_1_x_m_l_printer-members.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Member List + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    tinyxml2::XMLPrinter Member List
    +
    tinyxml2::XMLPrinter Member List

    This is the complete list of members for tinyxml2::XMLPrinter, including all inherited members.

    - - - + + + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + +
    ClearBuffer(bool resetToFirstElement=true)tinyxml2::XMLPrinterinline
    CloseElement(bool compactMode=false)tinyxml2::XMLPrintervirtual
    CStr() consttinyxml2::XMLPrinterinline
    CStrSize() consttinyxml2::XMLPrinterinline
    CloseElement(bool compactMode=false)tinyxml2::XMLPrintervirtual
    CStr() consttinyxml2::XMLPrinterinline
    CStrSize() consttinyxml2::XMLPrinterinline
    OpenElement(const char *name, bool compactMode=false)tinyxml2::XMLPrinter
    PrintSpace(int depth)tinyxml2::XMLPrinterprotectedvirtual
    PrintSpace(int depth)tinyxml2::XMLPrinterprotectedvirtual
    PushAttribute(const char *name, const char *value)tinyxml2::XMLPrinter
    PushComment(const char *comment)tinyxml2::XMLPrinter
    PushComment(const char *comment)tinyxml2::XMLPrinter
    PushHeader(bool writeBOM, bool writeDeclaration)tinyxml2::XMLPrinter
    PushText(const char *text, bool cdata=false)tinyxml2::XMLPrinter
    PushText(const char *text, bool cdata=false)tinyxml2::XMLPrinter
    PushText(int value)tinyxml2::XMLPrinter
    PushText(unsigned value)tinyxml2::XMLPrinter
    PushText(unsigned value)tinyxml2::XMLPrinter
    PushText(int64_t value)tinyxml2::XMLPrinter
    PushText(uint64_t value)tinyxml2::XMLPrinter
    PushText(uint64_t value)tinyxml2::XMLPrinter
    PushText(bool value)tinyxml2::XMLPrinter
    PushText(float value)tinyxml2::XMLPrinter
    PushText(float value)tinyxml2::XMLPrinter
    PushText(double value)tinyxml2::XMLPrinter
    Visit(const XMLText &text)tinyxml2::XMLPrintervirtual
    Visit(const XMLComment &comment)tinyxml2::XMLPrintervirtual
    Visit(const XMLDeclaration &declaration)tinyxml2::XMLPrintervirtual
    Visit(const XMLUnknown &unknown)tinyxml2::XMLPrintervirtual
    VisitEnter(const XMLDocument &)tinyxml2::XMLPrintervirtual
    VisitEnter(const XMLElement &element, const XMLAttribute *attribute)tinyxml2::XMLPrintervirtual
    VisitExit(const XMLDocument &)tinyxml2::XMLPrinterinlinevirtual
    VisitExit(const XMLElement &element)tinyxml2::XMLPrintervirtual
    XMLPrinter(FILE *file=0, bool compact=false, int depth=0)tinyxml2::XMLPrinter
    Visit(const XMLText &text) overridetinyxml2::XMLPrintervirtual
    Visit(const XMLComment &comment) overridetinyxml2::XMLPrintervirtual
    Visit(const XMLDeclaration &declaration) overridetinyxml2::XMLPrintervirtual
    Visit(const XMLUnknown &unknown) overridetinyxml2::XMLPrintervirtual
    VisitEnter(const XMLDocument &) overridetinyxml2::XMLPrintervirtual
    VisitEnter(const XMLElement &element, const XMLAttribute *attribute) overridetinyxml2::XMLPrintervirtual
    VisitExit(const XMLDocument &) overridetinyxml2::XMLPrinterinlinevirtual
    VisitExit(const XMLElement &element) overridetinyxml2::XMLPrintervirtual
    XMLPrinter(FILE *file=0, bool compact=false, int depth=0)tinyxml2::XMLPrinter
    diff --git a/docs/classtinyxml2_1_1_x_m_l_printer.html b/docs/classtinyxml2_1_1_x_m_l_printer.html index d044419..40b7c6c 100644 --- a/docs/classtinyxml2_1_1_x_m_l_printer.html +++ b/docs/classtinyxml2_1_1_x_m_l_printer.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: tinyxml2::XMLPrinter Class Reference + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    tinyxml2::XMLPrinter Class Reference
    +
    tinyxml2::XMLPrinter Class Reference
    @@ -86,100 +94,100 @@ Inheritance diagram for tinyxml2::XMLPrinter:
    - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - +

    +

    Public Member Functions

     XMLPrinter (FILE *file=0, bool compact=false, int depth=0)
     XMLPrinter (FILE *file=0, bool compact=false, int depth=0)
     
    void PushHeader (bool writeBOM, bool writeDeclaration)
    void PushHeader (bool writeBOM, bool writeDeclaration)
     
    void OpenElement (const char *name, bool compactMode=false)
    void OpenElement (const char *name, bool compactMode=false)
     
    -void PushAttribute (const char *name, const char *value)
    +void PushAttribute (const char *name, const char *value)
     If streaming, add an attribute to an open element.
     
    -virtual void CloseElement (bool compactMode=false)
    +virtual void CloseElement (bool compactMode=false)
     If streaming, close the Element.
     
    -void PushText (const char *text, bool cdata=false)
    +void PushText (const char *text, bool cdata=false)
     Add a text node.
     
    -void PushText (int value)
    +void PushText (int value)
     Add a text node from an integer.
     
    -void PushText (unsigned value)
    +void PushText (unsigned value)
     Add a text node from an unsigned.
     
    -void PushText (int64_t value)
    +void PushText (int64_t value)
     Add a text node from a signed 64bit integer.
     
    -void PushText (uint64_t value)
    +void PushText (uint64_t value)
     Add a text node from an unsigned 64bit integer.
     
    -void PushText (bool value)
    +void PushText (bool value)
     Add a text node from a bool.
     
    -void PushText (float value)
    +void PushText (float value)
     Add a text node from a float.
     
    -void PushText (double value)
    +void PushText (double value)
     Add a text node from a double.
     
    -void PushComment (const char *comment)
    +void PushComment (const char *comment)
     Add a comment.
     
    -virtual bool VisitEnter (const XMLDocument &)
     Visit a document.
     
    -virtual bool VisitExit (const XMLDocument &)
     Visit a document.
     
    -virtual bool VisitEnter (const XMLElement &element, const XMLAttribute *attribute)
     Visit an element.
     
    -virtual bool VisitExit (const XMLElement &element)
     Visit an element.
     
    -virtual bool Visit (const XMLText &text)
     Visit a text node.
     
    -virtual bool Visit (const XMLComment &comment)
     Visit a comment node.
     
    -virtual bool Visit (const XMLDeclaration &declaration)
     Visit a declaration.
     
    -virtual bool Visit (const XMLUnknown &unknown)
     Visit an unknown node.
     
    const char * CStr () const
     
    int CStrSize () const
    +virtual bool VisitEnter (const XMLDocument &) override
     Visit a document.
     
    +virtual bool VisitExit (const XMLDocument &) override
     Visit a document.
     
    +virtual bool VisitEnter (const XMLElement &element, const XMLAttribute *attribute) override
     Visit an element.
     
    +virtual bool VisitExit (const XMLElement &element) override
     Visit an element.
     
    +virtual bool Visit (const XMLText &text) override
     Visit a text node.
     
    +virtual bool Visit (const XMLComment &comment) override
     Visit a comment node.
     
    +virtual bool Visit (const XMLDeclaration &declaration) override
     Visit a declaration.
     
    +virtual bool Visit (const XMLUnknown &unknown) override
     Visit an unknown node.
     
    const char * CStr () const
     
    int CStrSize () const
     
    void ClearBuffer (bool resetToFirstElement=true)
    void ClearBuffer (bool resetToFirstElement=true)
     
    - - +

    +

    Protected Member Functions

    virtual void PrintSpace (int depth)
    virtual void PrintSpace (int depth)
     

    Detailed Description

    @@ -204,8 +212,8 @@ printer.OpenElement( "foo" ); printer.PushAttribute( "foo", "bar" ); printer.CloseElement();

    Constructor & Destructor Documentation

    - -

    ◆ XMLPrinter()

    + +

    ◆ XMLPrinter()

    @@ -213,35 +221,27 @@ printer.CloseElement(); tinyxml2::XMLPrinter::XMLPrinter ( - FILE *  - file = 0, + FILE * file = 0, - bool  - compact = false, + bool compact = false, - int  - depth = 0  - - - - ) - + int depth = 0 )
    -

    Construct the printer. If the FILE* is specified, this will print to the FILE. Else it will print to memory, and the result is available in CStr(). If 'compact' is set to true, then output is created with only required whitespace and newlines.

    +

    Construct the printer. If the FILE* is specified, this will print to the FILE. Else it will print to memory, and the result is available in CStr(). If 'compact' is set to true, then output is created with only required whitespace and newlines.

    Member Function Documentation

    - -

    ◆ ClearBuffer()

    + +

    ◆ ClearBuffer()

    @@ -252,8 +252,7 @@ printer.CloseElement(); void tinyxml2::XMLPrinter::ClearBuffer ( - bool  - resetToFirstElement = true) + bool resetToFirstElement = true) @@ -267,8 +266,8 @@ printer.CloseElement();
    - -

    ◆ CStr()

    + +

    ◆ CStr()

    @@ -277,9 +276,9 @@ printer.CloseElement(); - + - +
    const char* tinyxml2::XMLPrinter::CStr const char * tinyxml2::XMLPrinter::CStr ()) const
    @@ -293,8 +292,8 @@ printer.CloseElement();
    - -

    ◆ CStrSize()

    + +

    ◆ CStrSize()

    @@ -305,7 +304,7 @@ printer.CloseElement(); int tinyxml2::XMLPrinter::CStrSize ( - ) + ) const @@ -319,8 +318,8 @@ printer.CloseElement();
    - -

    ◆ OpenElement()

    + +

    ◆ OpenElement()

    @@ -328,28 +327,21 @@ printer.CloseElement(); void tinyxml2::XMLPrinter::OpenElement ( - const char *  - name, + const char * name, - bool  - compactMode = false  - - - - ) - + bool compactMode = false )
    -

    If streaming, start writing an element. The element must be closed with CloseElement()

    +

    If streaming, start writing an element. The element must be closed with CloseElement()

    - -

    ◆ PrintSpace()

    + +

    ◆ PrintSpace()

    @@ -360,8 +352,7 @@ printer.CloseElement(); virtual void tinyxml2::XMLPrinter::PrintSpace ( - int  - depth) + int depth) @@ -371,12 +362,12 @@ printer.CloseElement();
    -

    Prints out the space before an element. You may override to change the space and tabs used. A PrintSpace() override should call Print().

    +

    Prints out the space before an element. You may override to change the space and tabs used. A PrintSpace() override should call Print().

    - -

    ◆ PushHeader()

    + +

    ◆ PushHeader()

    @@ -384,19 +375,12 @@ printer.CloseElement(); void tinyxml2::XMLPrinter::PushHeader ( - bool  - writeBOM, + bool writeBOM, - bool  - writeDeclaration  - - - - ) - + bool writeDeclaration )
    @@ -410,7 +394,7 @@ printer.CloseElement();
    diff --git a/docs/classtinyxml2_1_1_x_m_l_printer.png b/docs/classtinyxml2_1_1_x_m_l_printer.png index 9bc674855364f4b2b9731ddf08f0b2af7159034e..4fcb981b0d363345817a64bc4e7df3cdd32b3a61 100644 GIT binary patch delta 569 zcmV-90>=Hy1kwbMB!3%FOjJex|Nj600O;)Xb&tZQI4~)27?;fG;Nal@|Nk}3R-^y` z010$bPE!E?|NsC0|Ns9t0-MwT00G@eL_t(|0qvb@j>8}fgz+F%-2cQ|o_>UcRFy)t z@(M3BhVd6;$lnlSj5{qv0N7^^-~bFjr2)XHWj_(msw1(GhkpmxnZ5!5fGcYnnxInE zpA!K40svGS0Qt?z`XW}XEXbXXd4db@shyak00@vx zB2NHxrh7WrY4X^a764YCRn7rwv;%;R-=TVRQFMb>tK0$@?*xKv_E@X|021v30N&p< zfX??k^a4N^yMGuEz%Bo28ZFxbUFLioyFA%w8gb_2X#n+bLUyyNdB*bd;QzyTb<0UW>q9KZn_zyTb<0saF35z$Ty zlu}Cj%mEx=0KB^uO7_3YR{d5Bd06UO&(otRKuRfHS%1^ldX=h0Wq`Tl1waNa>x)>m zrqUc*{4T&)UYz6KkhfdVG@9~w*6Bo4sZu*JM*vt|1APF{neORer^#YxIso(<(1KEW zUW9t$1i;4cQF?T{O-F!+b`3DzDN(Y`9*a)_Og&x!@cym=RB5aL<{8k%E(Vkmx0*mn zqeXeb6f!`bg6o^`vHS4^;JN#G4)Eaj!M}zM@CyJ$L>ui7>N#nQz>wn000000NkvXX Hu0mjfej*G% delta 561 zcmV-10?z%?1j+=EB!3uCOjJex|Nj600O;)Xb&tZ30001x0001xz`(!-iQFFm000Pd zQchC<|NsC0|NsBh%2YA{00G%aL_t(|0qvb@j>8}fgzZ7<{g1pQJp2fRRFy)ta)ldO z!}!A(@|RLdX{S*FfPEGK0U!W;Gys@d_A|?<(o++qdveY64SxUtTv^qy1cj>n902$Q z05Giseg}6^eI@~gg34Q0QlNw08hoA0X!Bz-i872696ftw9$x& zzOok)(N5b9@Oo_~*bVTGzn5S;K%9aA2!H?xfB*=900@8p2!H_i4*<-}JB^r#XrBc@ z0Ca%&V}+9axoq`sGf}#wzRft>8v+m!U0Kz)dWEV+6@P%S - + - - + + TinyXML-2: Member List + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    tinyxml2::XMLText Member List
    +
    tinyxml2::XMLText Member List

    This is the complete list of members for tinyxml2::XMLText, including all inherited members.

    - - - - + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - + + + - + - - - - - - - - - + + + + + + + + +
    Accept(XMLVisitor *visitor) consttinyxml2::XMLTextvirtual
    CData() consttinyxml2::XMLTextinline
    DeepClone(XMLDocument *target) consttinyxml2::XMLNode
    DeleteChild(XMLNode *node)tinyxml2::XMLNode
    Accept(XMLVisitor *visitor) const overridetinyxml2::XMLTextvirtual
    CData() consttinyxml2::XMLTextinline
    DeepClone(XMLDocument *target) consttinyxml2::XMLNode
    DeleteChild(XMLNode *node)tinyxml2::XMLNode
    DeleteChildren()tinyxml2::XMLNode
    FirstChild() consttinyxml2::XMLNodeinline
    FirstChildElement(const char *name=0) consttinyxml2::XMLNode
    GetDocument() consttinyxml2::XMLNodeinline
    GetDocument()tinyxml2::XMLNodeinline
    GetLineNum() consttinyxml2::XMLNodeinline
    GetUserData() consttinyxml2::XMLNodeinline
    InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
    InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
    InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
    LastChild() consttinyxml2::XMLNodeinline
    LastChildElement(const char *name=0) consttinyxml2::XMLNode
    NextSibling() consttinyxml2::XMLNodeinline
    NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
    FirstChild() consttinyxml2::XMLNodeinline
    FirstChildElement(const char *name=0) consttinyxml2::XMLNode
    GetDocument() consttinyxml2::XMLNodeinline
    GetDocument()tinyxml2::XMLNodeinline
    GetLineNum() consttinyxml2::XMLNodeinline
    GetUserData() consttinyxml2::XMLNodeinline
    InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
    InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
    InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
    LastChild() consttinyxml2::XMLNodeinline
    LastChildElement(const char *name=0) consttinyxml2::XMLNode
    NextSibling() consttinyxml2::XMLNodeinline
    NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
    NoChildren() consttinyxml2::XMLNodeinline
    Parent() consttinyxml2::XMLNodeinline
    PreviousSibling() consttinyxml2::XMLNodeinline
    PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
    Parent() consttinyxml2::XMLNodeinline
    PreviousSibling() consttinyxml2::XMLNodeinline
    PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
    SetCData(bool isCData)tinyxml2::XMLTextinline
    SetUserData(void *userData)tinyxml2::XMLNodeinline
    SetUserData(void *userData)tinyxml2::XMLNodeinline
    SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
    ShallowClone(XMLDocument *document) consttinyxml2::XMLTextvirtual
    ShallowEqual(const XMLNode *compare) consttinyxml2::XMLTextvirtual
    ToComment()tinyxml2::XMLNodeinlinevirtual
    ToDeclaration()tinyxml2::XMLNodeinlinevirtual
    ToDocument()tinyxml2::XMLNodeinlinevirtual
    ToElement()tinyxml2::XMLNodeinlinevirtual
    ToText()tinyxml2::XMLTextinlinevirtual
    ToUnknown()tinyxml2::XMLNodeinlinevirtual
    Value() consttinyxml2::XMLNode
    ShallowClone(XMLDocument *document) const overridetinyxml2::XMLTextvirtual
    ShallowEqual(const XMLNode *compare) const overridetinyxml2::XMLTextvirtual
    ToComment()tinyxml2::XMLNodeinlinevirtual
    ToDeclaration()tinyxml2::XMLNodeinlinevirtual
    ToDocument()tinyxml2::XMLNodeinlinevirtual
    ToElement()tinyxml2::XMLNodeinlinevirtual
    ToText() overridetinyxml2::XMLTextinlinevirtual
    ToUnknown()tinyxml2::XMLNodeinlinevirtual
    Value() consttinyxml2::XMLNode
    diff --git a/docs/classtinyxml2_1_1_x_m_l_text.html b/docs/classtinyxml2_1_1_x_m_l_text.html index 7317358..56db24c 100644 --- a/docs/classtinyxml2_1_1_x_m_l_text.html +++ b/docs/classtinyxml2_1_1_x_m_l_text.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: tinyxml2::XMLText Class Reference + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    @@ -85,123 +93,123 @@ Inheritance diagram for tinyxml2::XMLText:
    - - - - - - - + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - - + +

    +

    Public Member Functions

    virtual bool Accept (XMLVisitor *visitor) const
     
    -virtual XMLTextToText ()
     Safely cast to Text, or null.
     
    -void SetCData (bool isCData)
    virtual bool Accept (XMLVisitor *visitor) const override
     
    +virtual XMLTextToText () override
     Safely cast to Text, or null.
     
    +void SetCData (bool isCData)
     Declare whether this should be CDATA or standard text.
     
    -bool CData () const
    +bool CData () const
     Returns true if this is a CDATA text element.
     
    virtual XMLNodeShallowClone (XMLDocument *document) const
     
    virtual bool ShallowEqual (const XMLNode *compare) const
     
    - Public Member Functions inherited from tinyxml2::XMLNode
    -const XMLDocumentGetDocument () const
     Get the XMLDocument that owns this XMLNode.
     
    -XMLDocumentGetDocument ()
     Get the XMLDocument that owns this XMLNode.
     
    -virtual XMLElementToElement ()
     Safely cast to an Element, or null.
     
    -virtual XMLCommentToComment ()
     Safely cast to a Comment, or null.
     
    -virtual XMLDocumentToDocument ()
     Safely cast to a Document, or null.
     
    -virtual XMLDeclarationToDeclaration ()
     Safely cast to a Declaration, or null.
     
    -virtual XMLUnknownToUnknown ()
     Safely cast to an Unknown, or null.
     
    const char * Value () const
     
    void SetValue (const char *val, bool staticMem=false)
    virtual XMLNodeShallowClone (XMLDocument *document) const override
     
    virtual bool ShallowEqual (const XMLNode *compare) const override
     
    - Public Member Functions inherited from tinyxml2::XMLNode
    +const XMLDocumentGetDocument () const
     Get the XMLDocument that owns this XMLNode.
     
    +XMLDocumentGetDocument ()
     Get the XMLDocument that owns this XMLNode.
     
    +virtual XMLElementToElement ()
     Safely cast to an Element, or null.
     
    +virtual XMLCommentToComment ()
     Safely cast to a Comment, or null.
     
    +virtual XMLDocumentToDocument ()
     Safely cast to a Document, or null.
     
    +virtual XMLDeclarationToDeclaration ()
     Safely cast to a Declaration, or null.
     
    +virtual XMLUnknownToUnknown ()
     Safely cast to an Unknown, or null.
     
    const char * Value () const
     
    void SetValue (const char *val, bool staticMem=false)
     
    -int GetLineNum () const
    +int GetLineNum () const
     Gets the line number the node is in, if the document was parsed from a file.
     
    -const XMLNodeParent () const
     Get the parent of this node on the DOM.
     
    -bool NoChildren () const
    +const XMLNodeParent () const
     Get the parent of this node on the DOM.
     
    +bool NoChildren () const
     Returns true if this node has no children.
     
    -const XMLNodeFirstChild () const
     Get the first child node, or null if none exists.
     
    const XMLElementFirstChildElement (const char *name=0) const
     
    -const XMLNodeLastChild () const
     Get the last child node, or null if none exists.
     
    const XMLElementLastChildElement (const char *name=0) const
     
    -const XMLNodePreviousSibling () const
     Get the previous (left) sibling node of this node.
     
    -const XMLElementPreviousSiblingElement (const char *name=0) const
     Get the previous (left) sibling element of this node, with an optionally supplied name.
     
    -const XMLNodeNextSibling () const
     Get the next (right) sibling node of this node.
     
    -const XMLElementNextSiblingElement (const char *name=0) const
     Get the next (right) sibling element of this node, with an optionally supplied name.
     
    XMLNodeInsertEndChild (XMLNode *addThis)
     
    XMLNodeInsertFirstChild (XMLNode *addThis)
     
    XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
     
    void DeleteChildren ()
    +const XMLNodeFirstChild () const
     Get the first child node, or null if none exists.
     
    const XMLElementFirstChildElement (const char *name=0) const
     
    +const XMLNodeLastChild () const
     Get the last child node, or null if none exists.
     
    const XMLElementLastChildElement (const char *name=0) const
     
    +const XMLNodePreviousSibling () const
     Get the previous (left) sibling node of this node.
     
    +const XMLElementPreviousSiblingElement (const char *name=0) const
     Get the previous (left) sibling element of this node, with an optionally supplied name.
     
    +const XMLNodeNextSibling () const
     Get the next (right) sibling node of this node.
     
    +const XMLElementNextSiblingElement (const char *name=0) const
     Get the next (right) sibling element of this node, with an optionally supplied name.
     
    XMLNodeInsertEndChild (XMLNode *addThis)
     
    XMLNodeInsertFirstChild (XMLNode *addThis)
     
    XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
     
    void DeleteChildren ()
     
    void DeleteChild (XMLNode *node)
    void DeleteChild (XMLNode *node)
     
    XMLNodeDeepClone (XMLDocument *target) const
     
    void SetUserData (void *userData)
    XMLNodeDeepClone (XMLDocument *target) const
     
    void SetUserData (void *userData)
     
    void * GetUserData () const
     
    void * GetUserData () const
     

    Detailed Description

    XML text.

    Note that a text node can have child element nodes, for example:

    <root>This is <b>bold</b></root>
    -

    A text node can have 2 ways to output the next. "normal" output and CDATA. It will default to the mode it was parsed from the XML file and you generally want to leave it alone, but you can change the output mode with SetCData() and query it with CData().

    +

    A text node can have 2 ways to output the next. "normal" output and CDATA. It will default to the mode it was parsed from the XML file and you generally want to leave it alone, but you can change the output mode with SetCData() and query it with CData().

    Member Function Documentation

    - -

    ◆ Accept()

    + +

    ◆ Accept()

    @@ -212,14 +220,13 @@ const XMLElement * virtual bool tinyxml2::XMLText::Accept ( - XMLVisitor *  - visitor) + XMLVisitor * visitor) const -virtual +overridevirtual
    @@ -231,7 +238,7 @@ const XMLElement *
  • http://c2.com/cgi/wiki?HierarchicalVisitorPattern
  • Which are both good references for "visiting".

    -

    An example of using Accept():

    XMLPrinter printer;
    +

    An example of using Accept():

    XMLPrinter printer;
     tinyxmlDoc.Accept( &printer );
     const char* xmlcstr = printer.CStr();
     
    @@ -239,8 +246,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ ShallowClone()

    + +

    ◆ ShallowClone()

    @@ -249,28 +256,27 @@ const char* xmlcstr = printer.CStr(); - + - - +
    virtual XMLNode* tinyxml2::XMLText::ShallowClone virtual XMLNode * tinyxml2::XMLText::ShallowClone (XMLDocumentdocument)XMLDocument * document) const
    -virtual +overridevirtual
    -

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    +

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    Note: if called on a XMLDocument, this will return null.

    -

    Implements tinyxml2::XMLNode.

    +

    Implements tinyxml2::XMLNode.

    - -

    ◆ ShallowEqual()

    + +

    ◆ ShallowEqual()

    @@ -281,14 +287,13 @@ const char* xmlcstr = printer.CStr(); virtual bool tinyxml2::XMLText::ShallowEqual ( - const XMLNode *  - compare) + const XMLNode * compare) const -virtual +overridevirtual
    @@ -305,7 +310,7 @@ const char* xmlcstr = printer.CStr();
    diff --git a/docs/classtinyxml2_1_1_x_m_l_text.png b/docs/classtinyxml2_1_1_x_m_l_text.png index 5a9863acc475a4164a359cdca7f2ba64ba74433f..ec37c93dd0e0135ef60467903d521b169ac60f3e 100644 GIT binary patch delta 577 zcmX@la*JhxO1*S|Pl)UP|Nj{n7+$>jTH1eTxrKpdfyDGPFCIL202DVp8@2=}$5|5O z7t8?UgMm5I>?;fmj88pX978G?-_FhMJFLLda=ba@=Rfs(ZQ(hy*mnmdEDbVjVtI33 zV)`Ff4#hJ9OrCw$nI=CGILq#xqf)slH!dZ9s@t*p0{LqzkNuJGnG}Ai&eqa(vK+6) zH`@of>KFB9siZ!(x%lQ8Th6mdv;QnpTjN=}?QGcB*v?ZIvO?I38O-L@{LsCTz9pxA zzKzd)!5*o^pG5$dtQk^{geivh~@M{_OTU&|mC-;C%7*^oc6RUuYjxY%y?T z_>jJrA)zg;F@C-0lgJ0=<$RS=Ke$&{H8Ljjh)FQCWdIo+SQ)!im5iJPLa%;|N(jBG z_)Gl3_ZNCyx&LA(zPl-TEpc6aY^dp38#ADscIy6nYOa$D(>`6kZ&=Z-f6G$P7{7woLVbsH%=ZP0ajTH1eT0+0p92M!!y?YtuoFZhxqrTFJ`ejnzlQ*n-H8m*4zwhReXy$wCZ6D;S z?!Ny{XzHBHE}LgbZ%k2sA7x(kh07S(LRl_w)J#%jZvKzW#SNyZJ)zy;k3D zn6H=Y$l4mAT|c|k`}&>>x38|sTKjl&Sm@u~eh2!C{STZkzJ7kus#g+!RV-Qr)HoiT zuVOrNLFdD3(@q=iKhMr7`ZNDe2-i0_Afan;Kma>-*zV$z#=$7Do|R2v(SN2ta(7cV zp3Rrdd_Ol?^4UGsRWon1@f6fA6}kTVNRH4spSok#Y|Has|6T9WJ^A)g;r)#7Pxlqp zti2Vq{Cm)mPde$T8LF#`4Bw}0=r7)STrDfI>-!hgGdp9Nvn8z$thCeJ@$}h`nYS8( z8+RW}<>gqrHMfp4FZp}p>wkBf?_M)sy6tTN!?&~9Y)n^^-sXtu-3_{Pe%-mf^~L%{ zw$)4KHp|<2`5*L`fA~6GFrlMPNJq)Y@jru`gyh - + - - + + TinyXML-2: Member List + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    tinyxml2::XMLUnknown Member List
    +
    tinyxml2::XMLUnknown Member List

    This is the complete list of members for tinyxml2::XMLUnknown, including all inherited members.

    - - + + - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + +
    Accept(XMLVisitor *visitor) consttinyxml2::XMLUnknownvirtual
    DeepClone(XMLDocument *target) consttinyxml2::XMLNode
    Accept(XMLVisitor *visitor) const overridetinyxml2::XMLUnknownvirtual
    DeepClone(XMLDocument *target) consttinyxml2::XMLNode
    DeleteChild(XMLNode *node)tinyxml2::XMLNode
    DeleteChildren()tinyxml2::XMLNode
    FirstChild() consttinyxml2::XMLNodeinline
    FirstChildElement(const char *name=0) consttinyxml2::XMLNode
    GetDocument() consttinyxml2::XMLNodeinline
    GetDocument()tinyxml2::XMLNodeinline
    DeleteChildren()tinyxml2::XMLNode
    FirstChild() consttinyxml2::XMLNodeinline
    FirstChildElement(const char *name=0) consttinyxml2::XMLNode
    GetDocument() consttinyxml2::XMLNodeinline
    GetDocument()tinyxml2::XMLNodeinline
    GetLineNum() consttinyxml2::XMLNodeinline
    GetUserData() consttinyxml2::XMLNodeinline
    InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
    InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
    InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
    LastChild() consttinyxml2::XMLNodeinline
    LastChildElement(const char *name=0) consttinyxml2::XMLNode
    NextSibling() consttinyxml2::XMLNodeinline
    NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
    NoChildren() consttinyxml2::XMLNodeinline
    Parent() consttinyxml2::XMLNodeinline
    PreviousSibling() consttinyxml2::XMLNodeinline
    PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
    SetUserData(void *userData)tinyxml2::XMLNodeinline
    GetUserData() consttinyxml2::XMLNodeinline
    InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)tinyxml2::XMLNode
    InsertEndChild(XMLNode *addThis)tinyxml2::XMLNode
    InsertFirstChild(XMLNode *addThis)tinyxml2::XMLNode
    LastChild() consttinyxml2::XMLNodeinline
    LastChildElement(const char *name=0) consttinyxml2::XMLNode
    NextSibling() consttinyxml2::XMLNodeinline
    NextSiblingElement(const char *name=0) consttinyxml2::XMLNode
    NoChildren() consttinyxml2::XMLNodeinline
    Parent() consttinyxml2::XMLNodeinline
    PreviousSibling() consttinyxml2::XMLNodeinline
    PreviousSiblingElement(const char *name=0) consttinyxml2::XMLNode
    SetUserData(void *userData)tinyxml2::XMLNodeinline
    SetValue(const char *val, bool staticMem=false)tinyxml2::XMLNode
    ShallowClone(XMLDocument *document) consttinyxml2::XMLUnknownvirtual
    ShallowEqual(const XMLNode *compare) consttinyxml2::XMLUnknownvirtual
    ToComment()tinyxml2::XMLNodeinlinevirtual
    ToDeclaration()tinyxml2::XMLNodeinlinevirtual
    ToDocument()tinyxml2::XMLNodeinlinevirtual
    ToElement()tinyxml2::XMLNodeinlinevirtual
    ToText()tinyxml2::XMLNodeinlinevirtual
    ToUnknown()tinyxml2::XMLUnknowninlinevirtual
    Value() consttinyxml2::XMLNode
    ShallowClone(XMLDocument *document) const overridetinyxml2::XMLUnknownvirtual
    ShallowEqual(const XMLNode *compare) const overridetinyxml2::XMLUnknownvirtual
    ToComment()tinyxml2::XMLNodeinlinevirtual
    ToDeclaration()tinyxml2::XMLNodeinlinevirtual
    ToDocument()tinyxml2::XMLNodeinlinevirtual
    ToElement()tinyxml2::XMLNodeinlinevirtual
    ToText()tinyxml2::XMLNodeinlinevirtual
    ToUnknown() overridetinyxml2::XMLUnknowninlinevirtual
    Value() consttinyxml2::XMLNode
    diff --git a/docs/classtinyxml2_1_1_x_m_l_unknown.html b/docs/classtinyxml2_1_1_x_m_l_unknown.html index 8b10ba7..4f503d3 100644 --- a/docs/classtinyxml2_1_1_x_m_l_unknown.html +++ b/docs/classtinyxml2_1_1_x_m_l_unknown.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: tinyxml2::XMLUnknown Class Reference + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    @@ -85,114 +93,114 @@ Inheritance diagram for tinyxml2::XMLUnknown:
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - - + +

    +

    Public Member Functions

    -virtual XMLUnknownToUnknown ()
     Safely cast to an Unknown, or null.
     
    virtual bool Accept (XMLVisitor *visitor) const
     
    virtual XMLNodeShallowClone (XMLDocument *document) const
     
    virtual bool ShallowEqual (const XMLNode *compare) const
     
    - Public Member Functions inherited from tinyxml2::XMLNode
    -const XMLDocumentGetDocument () const
     Get the XMLDocument that owns this XMLNode.
     
    -XMLDocumentGetDocument ()
     Get the XMLDocument that owns this XMLNode.
     
    -virtual XMLElementToElement ()
     Safely cast to an Element, or null.
     
    -virtual XMLTextToText ()
     Safely cast to Text, or null.
     
    -virtual XMLCommentToComment ()
     Safely cast to a Comment, or null.
     
    -virtual XMLDocumentToDocument ()
     Safely cast to a Document, or null.
     
    -virtual XMLDeclarationToDeclaration ()
     Safely cast to a Declaration, or null.
     
    const char * Value () const
     
    void SetValue (const char *val, bool staticMem=false)
    +virtual XMLUnknownToUnknown () override
     Safely cast to an Unknown, or null.
     
    virtual bool Accept (XMLVisitor *visitor) const override
     
    virtual XMLNodeShallowClone (XMLDocument *document) const override
     
    virtual bool ShallowEqual (const XMLNode *compare) const override
     
    - Public Member Functions inherited from tinyxml2::XMLNode
    +const XMLDocumentGetDocument () const
     Get the XMLDocument that owns this XMLNode.
     
    +XMLDocumentGetDocument ()
     Get the XMLDocument that owns this XMLNode.
     
    +virtual XMLElementToElement ()
     Safely cast to an Element, or null.
     
    +virtual XMLTextToText ()
     Safely cast to Text, or null.
     
    +virtual XMLCommentToComment ()
     Safely cast to a Comment, or null.
     
    +virtual XMLDocumentToDocument ()
     Safely cast to a Document, or null.
     
    +virtual XMLDeclarationToDeclaration ()
     Safely cast to a Declaration, or null.
     
    const char * Value () const
     
    void SetValue (const char *val, bool staticMem=false)
     
    -int GetLineNum () const
    +int GetLineNum () const
     Gets the line number the node is in, if the document was parsed from a file.
     
    -const XMLNodeParent () const
     Get the parent of this node on the DOM.
     
    -bool NoChildren () const
    +const XMLNodeParent () const
     Get the parent of this node on the DOM.
     
    +bool NoChildren () const
     Returns true if this node has no children.
     
    -const XMLNodeFirstChild () const
     Get the first child node, or null if none exists.
     
    const XMLElementFirstChildElement (const char *name=0) const
     
    -const XMLNodeLastChild () const
     Get the last child node, or null if none exists.
     
    const XMLElementLastChildElement (const char *name=0) const
     
    -const XMLNodePreviousSibling () const
     Get the previous (left) sibling node of this node.
     
    -const XMLElementPreviousSiblingElement (const char *name=0) const
     Get the previous (left) sibling element of this node, with an optionally supplied name.
     
    -const XMLNodeNextSibling () const
     Get the next (right) sibling node of this node.
     
    -const XMLElementNextSiblingElement (const char *name=0) const
     Get the next (right) sibling element of this node, with an optionally supplied name.
     
    XMLNodeInsertEndChild (XMLNode *addThis)
     
    XMLNodeInsertFirstChild (XMLNode *addThis)
     
    XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
     
    void DeleteChildren ()
    +const XMLNodeFirstChild () const
     Get the first child node, or null if none exists.
     
    const XMLElementFirstChildElement (const char *name=0) const
     
    +const XMLNodeLastChild () const
     Get the last child node, or null if none exists.
     
    const XMLElementLastChildElement (const char *name=0) const
     
    +const XMLNodePreviousSibling () const
     Get the previous (left) sibling node of this node.
     
    +const XMLElementPreviousSiblingElement (const char *name=0) const
     Get the previous (left) sibling element of this node, with an optionally supplied name.
     
    +const XMLNodeNextSibling () const
     Get the next (right) sibling node of this node.
     
    +const XMLElementNextSiblingElement (const char *name=0) const
     Get the next (right) sibling element of this node, with an optionally supplied name.
     
    XMLNodeInsertEndChild (XMLNode *addThis)
     
    XMLNodeInsertFirstChild (XMLNode *addThis)
     
    XMLNodeInsertAfterChild (XMLNode *afterThis, XMLNode *addThis)
     
    void DeleteChildren ()
     
    void DeleteChild (XMLNode *node)
    void DeleteChild (XMLNode *node)
     
    XMLNodeDeepClone (XMLDocument *target) const
     
    void SetUserData (void *userData)
    XMLNodeDeepClone (XMLDocument *target) const
     
    void SetUserData (void *userData)
     
    void * GetUserData () const
     
    void * GetUserData () const
     

    Detailed Description

    Any tag that TinyXML-2 doesn't recognize is saved as an unknown. It is a tag of text, but should not be modified. It will be written back to the XML, unchanged, when the file is saved.

    DTD tags get thrown into XMLUnknowns.

    Member Function Documentation

    - -

    ◆ Accept()

    + +

    ◆ Accept()

    @@ -203,14 +211,13 @@ const XMLElement * virtual bool tinyxml2::XMLUnknown::Accept ( - XMLVisitor *  - visitor) + XMLVisitor * visitor) const -virtual +overridevirtual
    @@ -222,7 +229,7 @@ const XMLElement *
  • http://c2.com/cgi/wiki?HierarchicalVisitorPattern
  • Which are both good references for "visiting".

    -

    An example of using Accept():

    XMLPrinter printer;
    +

    An example of using Accept():

    XMLPrinter printer;
     tinyxmlDoc.Accept( &printer );
     const char* xmlcstr = printer.CStr();
     
    @@ -230,8 +237,8 @@ const char* xmlcstr = printer.CStr();
    - -

    ◆ ShallowClone()

    + +

    ◆ ShallowClone()

    @@ -240,28 +247,27 @@ const char* xmlcstr = printer.CStr(); - + - - +
    virtual XMLNode* tinyxml2::XMLUnknown::ShallowClone virtual XMLNode * tinyxml2::XMLUnknown::ShallowClone (XMLDocumentdocument)XMLDocument * document) const
    -virtual +overridevirtual
    -

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    +

    Make a copy of this node, but not its children. You may pass in a Document pointer that will be the owner of the new Node. If the 'document' is null, then the node returned will be allocated from the current Document. (this->GetDocument())

    Note: if called on a XMLDocument, this will return null.

    -

    Implements tinyxml2::XMLNode.

    +

    Implements tinyxml2::XMLNode.

    - -

    ◆ ShallowEqual()

    + +

    ◆ ShallowEqual()

    @@ -272,14 +278,13 @@ const char* xmlcstr = printer.CStr(); virtual bool tinyxml2::XMLUnknown::ShallowEqual ( - const XMLNode *  - compare) + const XMLNode * compare) const -virtual +overridevirtual
    @@ -296,7 +301,7 @@ const char* xmlcstr = printer.CStr();
    diff --git a/docs/classtinyxml2_1_1_x_m_l_unknown.png b/docs/classtinyxml2_1_1_x_m_l_unknown.png index 217b62c5590fd41f7e30a49d292a0a03662d9083..47897cfb6e6680abfe727a34e7fbbd35d80981b9 100644 GIT binary patch delta 637 zcmZo?oyIyrrCvI~C&cyt|NjgO3@_e%E$u(F+`>S!Kw|ot7Y`mh0E(NQ4O;?~<17jC z3uXZF!N8np_7w&OCPhyd$B+ufw{tJ{y;k6HX?I-p=YRYjUxftWNz-%wYSw=ZT)I^5&Dm?FHhz=TYosUDxXwNE zO5|wK%A9Y%a%bnBt=?ekx6o~k?BQMNW~tSk@7dTt%cd@bPZy@jhpX04iadt=~4 zzm;=u-{7?rx@vv*O|@Cxf$h0{eGH~GU&{X! z=Sk}CZhkQ~++HvFEPH0{_d7Sj-A#pVdV6jSGtLfR{`Y#W(#q4l`{gJ7;Rv36f6B~T ze^&X_9QORwv_a8x{?nYIbCseD514Hj5+tW>sWg4TWON!tjH&+`I%VcxiB)6*G)BM-rdp<=-^3;z> zcQzopr0A}1U A5C8xG delta 622 zcmbQn+Ri#brCuVyC&cyt|NjgO3@_e%E$u%v0muU50|ySUcHWT(ayd$Z{DK*Pia_A% zsSqOu1|~627srqa#vsw=P_l)*aXJ-~!)*`p9Xi zGugyEXSHmZxMT(hA6S;-I!Q0`xA)7%-=@{?+-M$sy+>Tt8m!hRc>o;q^v+q3{ z_Wwp&?K9mQV(H7>*2o?%zJFuJK3ku?NkP^7gG>{6udb6_<+gC;tewo#!Y`-Xs+Qib z;J&CTea7DtYCJ!ZXDjayGJL91EFq_rX8M*({^~Dv&pvDE=`WRT8p&)q#I^zVeIfEK>feG zY)a6w#(E|L&P-;3$z}|OXP-shtz7%}^}g-<@AmH98T#0x;d+F0L->`Ge^hoS)rQxc zS~lVEDJ}b(PniSyUXrP zx^7nMf9Lj&w<0%OZYLbLS>bSQ-uO}6@#R}$=E)}VX8(mDP{&C6oJ q+cmFmPrY9N_VUbgKrf{| - + - - + + TinyXML-2: Member List + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    tinyxml2::XMLVisitor Member List
    +
    tinyxml2::XMLVisitor Member List

    This is the complete list of members for tinyxml2::XMLVisitor, including all inherited members.

    - + - + - + - +
    Visit(const XMLDeclaration &)tinyxml2::XMLVisitorinlinevirtual
    Visit(const XMLText &)tinyxml2::XMLVisitorinlinevirtual
    Visit(const XMLText &)tinyxml2::XMLVisitorinlinevirtual
    Visit(const XMLComment &)tinyxml2::XMLVisitorinlinevirtual
    Visit(const XMLUnknown &)tinyxml2::XMLVisitorinlinevirtual
    Visit(const XMLUnknown &)tinyxml2::XMLVisitorinlinevirtual
    VisitEnter(const XMLDocument &)tinyxml2::XMLVisitorinlinevirtual
    VisitEnter(const XMLElement &, const XMLAttribute *)tinyxml2::XMLVisitorinlinevirtual
    VisitEnter(const XMLElement &, const XMLAttribute *)tinyxml2::XMLVisitorinlinevirtual
    VisitExit(const XMLDocument &)tinyxml2::XMLVisitorinlinevirtual
    VisitExit(const XMLElement &)tinyxml2::XMLVisitorinlinevirtual
    VisitExit(const XMLElement &)tinyxml2::XMLVisitorinlinevirtual
    diff --git a/docs/classtinyxml2_1_1_x_m_l_visitor.html b/docs/classtinyxml2_1_1_x_m_l_visitor.html index d4412bb..84c2277 100644 --- a/docs/classtinyxml2_1_1_x_m_l_visitor.html +++ b/docs/classtinyxml2_1_1_x_m_l_visitor.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: tinyxml2::XMLVisitor Class Reference + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    @@ -85,43 +93,43 @@ Inheritance diagram for tinyxml2::XMLVisitor:
    - - + - + - + - + - + - + - + - +

    +

    Public Member Functions

    -virtual bool VisitEnter (const XMLDocument &)
    +virtual bool VisitEnter (const XMLDocument &)
     Visit a document.
     
    -virtual bool VisitExit (const XMLDocument &)
    +virtual bool VisitExit (const XMLDocument &)
     Visit a document.
     
    -virtual bool VisitEnter (const XMLElement &, const XMLAttribute *)
    +virtual bool VisitEnter (const XMLElement &, const XMLAttribute *)
     Visit an element.
     
    -virtual bool VisitExit (const XMLElement &)
    +virtual bool VisitExit (const XMLElement &)
     Visit an element.
     
    -virtual bool Visit (const XMLDeclaration &)
    +virtual bool Visit (const XMLDeclaration &)
     Visit a declaration.
     
    -virtual bool Visit (const XMLText &)
    +virtual bool Visit (const XMLText &)
     Visit a text node.
     
    -virtual bool Visit (const XMLComment &)
    +virtual bool Visit (const XMLComment &)
     Visit a comment node.
     
    -virtual bool Visit (const XMLUnknown &)
    +virtual bool Visit (const XMLUnknown &)
     Visit an unknown node.
     

    Detailed Description

    -

    Implements the interface to the "Visitor pattern" (see the Accept() method.) If you call the Accept() method, it requires being passed a XMLVisitor class to handle callbacks. For nodes that contain other nodes (Document, Element) you will get called with a VisitEnter/VisitExit pair. Nodes that are always leafs are simply called with Visit().

    +

    Implements the interface to the "Visitor pattern" (see the Accept() method.) If you call the Accept() method, it requires being passed a XMLVisitor class to handle callbacks. For nodes that contain other nodes (Document, Element) you will get called with a VisitEnter/VisitExit pair. Nodes that are always leafs are simply called with Visit().

    If you return 'true' from a Visit method, recursive parsing will continue. If you return false, no children of this node or its siblings will be visited.

    All flavors of Visit methods have a default implementation that returns 'true' (continue visiting). You need to only override methods that are interesting to you.

    Generally Accept() is called on the XMLDocument, although all nodes support visiting.

    @@ -133,7 +141,7 @@ virtual bool  diff --git a/docs/classtinyxml2_1_1_x_m_l_visitor.png b/docs/classtinyxml2_1_1_x_m_l_visitor.png index 8ae4c23cfa5be521ed0b30b0fa6a8048f73e4ee2..022e517e948c4b16c3507a01ba62af8692a5d09a 100644 GIT binary patch delta 577 zcmV-H0>1sw1lk0UB!3%FOjJex|Nj600O;)Xb&tZQI4~)27?;fG;Nal@|Nk}3R-^y` z010$bPE!E?|NsC0|Ns9t0-MwT00HGmL_t(|0qvdJj>I4ch6R%e@BhSGj~uGClO}bt zVI!+k^ye$0y$t{WJ1qba(LQqk2Vj7sU$G?rQMc;1TFAqbYk#J%0EmdLtZHb2LREea z0PG78k!l?vy;)wL#foKD>U88g0PJe+q@4U^ZWTXoLDi^B`?E$Tq@_;j#2f_xM6yZb z0f5eQO9wkm9vjmF!0LjF;+Fn2jh3ww)Jg1HAWy;SCVcCHoB_OcK~DhQ`#|{D&;fn{003a4 zg%H9c`-Bj}PTLLe`D`ZG4RFNYORyclPk{qCfCD&y12}*KIDi8aDWZ~xgjD>E%^a>RvC$fJUpiHM7shJxqnFjM8qqr`dY70)u;?Gmb?H+ zzY|C*}wMt81W706Nnx9qcq&Y)mJB zRs&j4N{@?BPaFW)_$^9{Znxad`a2<@ZT47v3t;N;3V`=_4WLS61u)KlE_N{h zL~bR4k~&6<@`NFPJO$S`;f-qn5%IZA0A7nf0eCOIe+?brCjerMaijeK=CNtft1U=g P00000NkvXXu0mjf@$mo1 delta 567 zcmcb`a)D)nO1(sYPl)UP|Nj{n7+$>jTH1eT0+0p92M!!y?YtuoI9VgJpAQ!6-ozwk0J)ZeMRxPfJ+*8jH*KiC-()-X!fZK>3(-Qh2%Y`Jz)d}=ZS$Ax7Rtr@mm-YP3pQoF`S zm|^|;>Bl$}!gn+L_$9h3?E9(f$17Ma%;RLquZupz$Po06v0=}B%Z9h*`@gUp&?_@l zaCq~lK~hS)K3eFEU(R}m_f0oFe_UgA@j@`XZuGklcu_7 zE#moZ;`zmRMx+n3f${yyi`%PauBs0aZP@pO_W)zfIs2oV#HR{vc;wG`>x=P?x>*H(*27AT{L0;T{`DY)Kj!d(Ykp?CK22WQ%mvv4FO#lgW_@n>; diff --git a/docs/clipboard.js b/docs/clipboard.js new file mode 100644 index 0000000..42c1fb0 --- /dev/null +++ b/docs/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/docs/cookie.js b/docs/cookie.js new file mode 100644 index 0000000..53ad21d --- /dev/null +++ b/docs/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/docs/doc.svg b/docs/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/docs/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/docd.svg b/docs/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/docs/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/doxygen.css b/docs/doxygen.css index ffbff02..7b7d851 100644 --- a/docs/doxygen.css +++ b/docs/doxygen.css @@ -1,29 +1,422 @@ -/* The standard CSS for doxygen 1.9.1 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; +/* The standard CSS for doxygen 1.10.0*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--fragment-copy-ok-color: #2EC82E; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #f8d1cc; +--warning-color-hl: #b61825; +--warning-color-text: #75070f; +--note-color-bg: #faf3d8; +--note-color-hl: #f3a600; +--note-color-text: #5f4204; +--todo-color-bg: #e4f3ff; +--todo-color-hl: #1879C4; +--todo-color-text: #274a5c; +--test-color-bg: #e8e8ff; +--test-color-hl: #3939C4; +--test-color-text: #1a1a5c; +--deprecated-color-bg: #ecf0f3; +--deprecated-color-hl: #5b6269; +--deprecated-color-text: #43454a; +--bug-color-bg: #e4dafd; +--bug-color-hl: #5b2bdd; +--bug-color-text: #2a0d72; +--invariant-color-bg: #d8f1e3; +--invariant-color-hl: #44b86f; +--invariant-color-text: #265532; +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: #090D16; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--fragment-copy-ok-color: #0EA80E; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #2e1917; +--warning-color-hl: #ad2617; +--warning-color-text: #f5b1aa; +--note-color-bg: #3b2e04; +--note-color-hl: #f1b602; +--note-color-text: #ceb670; +--todo-color-bg: #163750; +--todo-color-hl: #1982D2; +--todo-color-text: #dcf0fa; +--test-color-bg: #121258; +--test-color-hl: #4242cf; +--test-color-text: #c0c0da; +--deprecated-color-bg: #2e323b; +--deprecated-color-hl: #738396; +--deprecated-color-text: #abb0bd; +--bug-color-bg: #2a2536; +--bug-color-hl: #7661b3; +--bug-color-text: #ae9ed6; +--invariant-color-bg: #303a35; +--invariant-color-hl: #76ce96; +--invariant-color-text: #cceed5; +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); } -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; } /* @group Heading Levels */ -h1.groupheader { - font-size: 150%; -} - .title { - font: 400 14px/28px Roboto,sans-serif; + font-family: var(--font-family-normal); + line-height: 28px; font-size: 150%; font-weight: bold; margin: 10px 2px; } +h1.groupheader { + font-size: 150%; +} + h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); font-size: 150%; font-weight: normal; margin-top: 1.75em; @@ -46,22 +439,13 @@ h1, h2, h3, h4, h5, h6 { } h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; + text-shadow: 0 0 15px var(--glow-color); } dt { font-weight: bold; } -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; -} - p.startli, p.startdd { margin-top: 2px; } @@ -113,7 +497,6 @@ h3.version { } div.navtab { - border-right: 1px solid #A3B4D7; padding-right: 15px; text-align: right; line-height: 110%; @@ -127,16 +510,17 @@ td.navtab { padding-right: 6px; padding-left: 6px; } + td.navtabHL { - background-image: url('tab_a.png'); + background-image: var(--nav-gradient-active-image); background-repeat:repeat-x; padding-right: 6px; padding-left: 6px; } td.navtabHL a, td.navtabHL a:visited { - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); } a.navtab { @@ -148,7 +532,13 @@ div.qindex{ width: 100%; line-height: 140%; font-size: 130%; - color: #A0A0A0; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; } dt.alphachar{ @@ -157,7 +547,7 @@ dt.alphachar{ } .alphachar a{ - color: black; + color: var(--index-header-color); } .alphachar a:hover, .alphachar a:visited{ @@ -176,8 +566,12 @@ dt.alphachar{ line-height: 1.15em; } +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + .classindex dl.odd { - background-color: #F8F9FC; + background-color: var(--index-odd-item-bg-color); } @media(min-width: 1120px) { @@ -196,21 +590,23 @@ dt.alphachar{ /* @group Link Styling */ a { - color: #3D578C; + color: var(--page-link-color); font-weight: normal; text-decoration: none; } .contents a:visited { - color: #4665A2; + color: var(--page-visited-link-color); } a:hover { - text-decoration: underline; + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); } -.contents a.qindexHL:visited { - color: #FFFFFF; +a:hover > span.arrow { + text-decoration: none; + background : var(--nav-background-color); } a.el { @@ -221,12 +617,39 @@ a.elRef { } a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; + color: var(--code-link-color); } a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } /* @end */ @@ -235,7 +658,17 @@ dl.el { } ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; } #side-nav ul { @@ -249,35 +682,70 @@ ul { .fragment { text-align: left; direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-x: auto; overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid var(--fragment-border-color); + border-radius: 4px; + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); } pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: var(--font-family-monospace); +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; + fill: var(--fragment-foreground-color); + justify-content: center; + align-items: center; + cursor: pointer; } -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; +.clipboard.success { + border: 1px solid var(--fragment-foreground-color); + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .28; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: var(--fragment-copy-ok-color); +} + +.clipboard.success { + border-color: var(--fragment-copy-ok-color); } div.line { - font-family: monospace, fixed; + font-family: var(--font-family-monospace); font-size: 13px; min-height: 13px; - line-height: 1.0; + line-height: 1.2; text-wrap: unrestricted; white-space: -moz-pre-wrap; /* Moz */ white-space: -pre-wrap; /* Opera 4-6 */ @@ -306,24 +774,40 @@ div.line:after { } div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); } +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} span.lineno { padding-right: 4px; + margin-right: 9px; text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); white-space: pre; } -span.lineno a { - background-color: #D8D8D8; +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); } span.lineno a:hover { - background-color: #C8C8C8; + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); } .lineno { @@ -335,24 +819,6 @@ span.lineno a:hover { user-select: none; } -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #FFFFFF; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - div.classindex ul { list-style: none; padding-left: 0; @@ -374,8 +840,7 @@ div.groupText { } body { - background-color: white; - color: black; + color: var(--page-foreground-color); margin: 0; } @@ -385,33 +850,15 @@ div.contents { margin-right: 8px; } -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - p.formulaDsp { text-align: center; } -img.formulaDsp { - +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; } img.formulaInl, img.inline { @@ -437,89 +884,74 @@ address.footer { img.footer { border: 0px; vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; } /* @group Code Colorization */ span.keyword { - color: #008000 + color: var(--code-keyword-color); } span.keywordtype { - color: #604020 + color: var(--code-type-keyword-color); } span.keywordflow { - color: #e08000 + color: var(--code-flow-keyword-color); } span.comment { - color: #800000 + color: var(--code-comment-color); } span.preprocessor { - color: #806020 + color: var(--code-preprocessor-color); } span.stringliteral { - color: #002080 + color: var(--code-string-literal-color); } span.charliteral { - color: #008080 + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); } span.vhdldigit { - color: #ff00ff + color: var(--code-vhdl-digit-color); } span.vhdlchar { - color: #000000 + color: var(--code-vhdl-char-color); } span.vhdlkeyword { - color: #700070 + color: var(--code-vhdl-keyword-color); } span.vhdllogic { - color: #ff0000 + color: var(--code-vhdl-logic-color); } blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); margin: 0 24px 0 4px; padding: 0 12px 0 16px; } -blockquote.DocNodeRTL { - border-left: 0; - border-right: 2px solid #9CAFD4; - margin: 0 4px 0 24px; - padding: 0 16px 0 12px; -} - /* @end */ -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - td.tiny { font-size: 75%; } @@ -527,18 +959,19 @@ td.tiny { .dirtab { padding: 4px; border-collapse: collapse; - border: 1px solid #A3B4D7; + border: 1px solid var(--table-cell-border-color); } th.dirtab { - background: #EBEFF6; + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); font-weight: bold; } hr { height: 0px; border: none; - border-top: 1px solid #4A6AAA; + border-top: 1px solid var(--separator-color); } hr.footer { @@ -566,14 +999,14 @@ table.memberdecls { } .memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); } .mdescLeft, .mdescRight, .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; + background-color: var(--memdecl-background-color); border: none; margin: 4px; padding: 1px 0 0 8px; @@ -581,11 +1014,11 @@ table.memberdecls { .mdescLeft, .mdescRight { padding: 0px 8px 4px 8px; - color: #555; + color: var(--memdecl-foreground-color); } .memSeparator { - border-bottom: 1px solid #DEE4F0; + border-bottom: 1px solid var(--memdecl-separator-color); line-height: 1px; margin: 0px; padding: 0px; @@ -600,7 +1033,7 @@ table.memberdecls { } .memTemplParams { - color: #4665A2; + color: var(--memdecl-template-color); white-space: nowrap; font-size: 80%; } @@ -613,15 +1046,15 @@ table.memberdecls { .memtitle { padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); border-top-right-radius: 4px; border-top-left-radius: 4px; margin-bottom: -1px; - background-image: url('nav_f.png'); + background-image: var(--memdef-title-gradient-image); background-repeat: repeat-x; - background-color: #E2E8F2; + background-color: var(--memdef-title-background-color); line-height: 1.25; font-weight: 300; float:left; @@ -636,20 +1069,11 @@ table.memberdecls { .memtemplate { font-size: 80%; - color: #4665A2; + color: var(--memdef-template-color); font-weight: normal; margin-left: 9px; } -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - .mempage { width: 100%; } @@ -668,7 +1092,7 @@ table.memberdecls { } .memitem.glow { - box-shadow: 0 0 15px cyan; + box-shadow: 0 0 15px var(--glow-color); } .memname { @@ -681,41 +1105,32 @@ table.memberdecls { } .memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); padding: 6px 0px 6px 0px; - color: #253555; + color: var(--memdef-proto-text-color); font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - } .overload { - font-family: "courier new",courier,monospace; + font-family: var(--font-family-monospace); font-size: 65%; } .memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); padding: 6px 10px 2px 10px; - background-color: #FBFCFD; border-top-width: 0; background-image:url('nav_g.png'); background-repeat:repeat-x; - background-color: #FFFFFF; + background-color: var(--memdef-doc-background-color); /* opera specific markup */ border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; @@ -745,36 +1160,44 @@ dl.reflist dd { .paramtype { white-space: nowrap; + padding: 0px; + padding-bottom: 1px; } .paramname { - color: #602020; white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; } + .paramname em { + color: var(--memdef-param-name-color); font-style: normal; + margin-right: 1px; } -.paramname code { - line-height: 14px; + +.paramname .paramdefval { + font-family: var(--font-family-monospace); } .params, .retval, .exception, .tparams { margin-left: 0px; padding-left: 0px; -} +} .params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { font-weight: bold; vertical-align: top; } - + .params .paramtype, .tparams .paramtype { font-style: italic; vertical-align: top; -} - +} + .params .paramdir, .tparams .paramdir { - font-family: "courier new",courier,monospace; + font-family: var(--font-family-monospace); vertical-align: top; } @@ -798,13 +1221,13 @@ span.mlabels { } span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); text-shadow: none; - color: white; + color: var(--label-foreground-color); margin-right: 4px; padding: 2px 3px; border-radius: 3px; @@ -821,8 +1244,8 @@ span.mlabel { div.directory { margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); width: 100%; } @@ -858,9 +1281,14 @@ div.directory { border-left: 1px solid rgba(0,0,0,0.05); } +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + .directory tr.even { padding-left: 6px; - background-color: #F7F8FB; + background-color: var(--index-even-item-bg-color); } .directory img { @@ -878,11 +1306,11 @@ div.directory { cursor: pointer; padding-left: 2px; padding-right: 2px; - color: #3D578C; + color: var(--page-link-color); } .arrow { - color: #9CAFD4; + color: var(--nav-arrow-color); -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; @@ -896,14 +1324,15 @@ div.directory { } .icon { - font-family: Arial, Helvetica; + font-family: var(--font-family-icon); + line-height: normal; font-weight: bold; font-size: 12px; height: 14px; width: 16px; display: inline-block; - background-color: #728DC1; - color: white; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); text-align: center; border-radius: 4px; margin-left: 2px; @@ -920,8 +1349,7 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; + background-image:var(--icon-folder-open-image); background-repeat: repeat-y; vertical-align:top; display: inline-block; @@ -931,8 +1359,7 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; + background-image:var(--icon-folder-closed-image); background-repeat: repeat-y; vertical-align:top; display: inline-block; @@ -942,17 +1369,13 @@ div.directory { width: 24px; height: 18px; margin-bottom: 4px; - background-image:url('doc.png'); + background-image:var(--icon-doc-image); background-position: 0px -4px; background-repeat: repeat-y; vertical-align:top; display: inline-block; } -table.directory { - font: 400 14px Roboto,sans-serif; -} - /* @end */ div.dynheader { @@ -967,7 +1390,7 @@ div.dynheader { address { font-style: normal; - color: #2A3D61; + color: var(--footer-foreground-color); } table.doxtable caption { @@ -981,28 +1404,23 @@ table.doxtable { } table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; + border: 1px solid var(--table-cell-border-color); padding: 3px 7px 2px; } table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); font-size: 110%; padding-bottom: 4px; padding-top: 5px; } table.fieldtable { - /*width: 100%;*/ margin-bottom: 10px; - border: 1px solid #A8B8D9; + border: 1px solid var(--memdef-border-color); border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); } @@ -1012,8 +1430,8 @@ table.fieldtable { .fieldtable td.fieldtype, .fieldtable td.fieldname { white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); vertical-align: top; } @@ -1022,14 +1440,13 @@ table.fieldtable { } .fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ + border-bottom: 1px solid var(--memdef-border-color); } .fieldtable td.fielddoc p:first-child { margin-top: 0px; -} - +} + .fieldtable td.fielddoc p:last-child { margin-bottom: 2px; } @@ -1039,22 +1456,18 @@ table.fieldtable { } .fieldtable th { - background-image:url('nav_f.png'); + background-image: var(--memdef-title-gradient-image); background-repeat:repeat-x; - background-color: #E2E8F2; + background-color: var(--memdef-title-background-color); font-size: 90%; - color: #253555; + color: var(--memdef-proto-text-color); padding-bottom: 4px; padding-top: 5px; text-align:left; font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; + border-bottom: 1px solid var(--memdef-border-color); } @@ -1062,7 +1475,7 @@ table.fieldtable { top: 0px; left: 10px; height: 36px; - background-image: url('tab_b.png'); + background-image: var(--nav-gradient-image); z-index: 101; overflow: hidden; font-size: 13px; @@ -1071,13 +1484,13 @@ table.fieldtable { .navpath ul { font-size: 11px; - background-image:url('tab_b.png'); + background-image: var(--nav-gradient-image); background-repeat:repeat-x; background-position: 0 -5px; height:30px; line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); overflow:hidden; margin:0px; padding:0px; @@ -1089,27 +1502,27 @@ table.fieldtable { float:left; padding-left:10px; padding-right:15px; - background-image:url('bc_s.png'); + background-image:var(--nav-breadcrumb-image); background-repeat:no-repeat; background-position:right; - color:#364D7C; + color: var(--nav-foreground-color); } .navpath li.navelem a { height:32px; display:block; - text-decoration: none; outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; } .navpath li.navelem a:hover { - color:#6884BD; + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); } .navpath li.footer @@ -1121,7 +1534,7 @@ table.fieldtable { background-image:none; background-repeat:no-repeat; background-position:right; - color:#364D7C; + color: var(--footer-foreground-color); font-size: 8pt; } @@ -1133,7 +1546,7 @@ div.summary padding-right: 5px; width: 50%; text-align: right; -} +} div.summary a { @@ -1148,7 +1561,7 @@ table.classindex margin-right: 3%; width: 94%; border: 0; - border-spacing: 0; + border-spacing: 0; padding: 0; } @@ -1166,11 +1579,11 @@ div.ingroups a div.header { - background-image:url('nav_h.png'); + background-image: var(--header-gradient-image); background-repeat:repeat-x; - background-color: #F9FAFC; + background-color: var(--header-background-color); margin: 0px; - border-bottom: 1px solid #C4CFE5; + border-bottom: 1px solid var(--header-separator-color); } div.headertitle @@ -1187,17 +1600,13 @@ dl { padding: 0 0 0 0; } -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +/* + dl.section { margin-left: 0px; padding-left: 0px; } -dl.section.DocNodeRTL { - margin-right: 0px; - padding-right: 0px; -} - dl.note { margin-left: -7px; padding-left: 3px; @@ -1205,16 +1614,6 @@ dl.note { border-color: #D0C000; } -dl.note.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #D0C000; -} - dl.warning, dl.attention { margin-left: -7px; padding-left: 3px; @@ -1222,16 +1621,6 @@ dl.warning, dl.attention { border-color: #FF0000; } -dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #FF0000; -} - dl.pre, dl.post, dl.invariant { margin-left: -7px; padding-left: 3px; @@ -1239,16 +1628,6 @@ dl.pre, dl.post, dl.invariant { border-color: #00D000; } -dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00D000; -} - dl.deprecated { margin-left: -7px; padding-left: 3px; @@ -1256,16 +1635,6 @@ dl.deprecated { border-color: #505050; } -dl.deprecated.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #505050; -} - dl.todo { margin-left: -7px; padding-left: 3px; @@ -1273,16 +1642,6 @@ dl.todo { border-color: #00C0E0; } -dl.todo.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00C0E0; -} - dl.test { margin-left: -7px; padding-left: 3px; @@ -1290,16 +1649,6 @@ dl.test { border-color: #3030E0; } -dl.test.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #3030E0; -} - dl.bug { margin-left: -7px; padding-left: 3px; @@ -1307,20 +1656,108 @@ dl.bug { border-color: #C08050; } -dl.bug.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #C08050; +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; } dl.section dd { - margin-bottom: 6px; + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color-bg); + border-left: 8px solid var(--warning-color-hl); + color: var(--warning-color-text); } +dl.warning dt, dl.attention dt { + color: var(--warning-color-hl); +} + +dl.note, dl.remark { + background: var(--note-color-bg); + border-left: 8px solid var(--note-color-hl); + color: var(--note-color-text); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-hl); +} + +dl.todo { + background: var(--todo-color-bg); + border-left: 8px solid var(--todo-color-hl); + color: var(--todo-color-text); +} + +dl.todo dt { + color: var(--todo-color-hl); +} + +dl.test { + background: var(--test-color-bg); + border-left: 8px solid var(--test-color-hl); + color: var(--test-color-text); +} + +dl.test dt { + color: var(--test-color-hl); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.bug { + background: var(--bug-color-bg); + border-left: 8px solid var(--bug-color-hl); + color: var(--bug-color-text); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.deprecated { + background: var(--deprecated-color-bg); + border-left: 8px solid var(--deprecated-color-hl); + color: var(--deprecated-color-text); +} + +dl.deprecated dt a { + color: var(--deprecated-color-hl) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color-bg); + border-left: 8px solid var(--invariant-color-hl); + color: var(--invariant-color-text); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-hl); +} + + +#projectrow +{ + height: 56px; +} #projectlogo { @@ -1328,34 +1765,38 @@ dl.section dd { vertical-align: bottom; border-collapse: separate; } - + #projectlogo img -{ +{ border: 0px none; } - + #projectalign { vertical-align: middle; + padding-left: 0.5em; } #projectname { - font: 300% Tahoma, Arial,sans-serif; + font-size: 200%; + font-family: var(--font-family-title); margin: 0px; padding: 2px 0px; } - + #projectbrief { - font: 120% Tahoma, Arial,sans-serif; + font-size: 90%; + font-family: var(--font-family-title); margin: 0px; padding: 0px; } #projectnumber { - font: 50% Tahoma, Arial,sans-serif; + font-size: 50%; + font-family: 50% var(--font-family-title); margin: 0px; padding: 0px; } @@ -1365,7 +1806,8 @@ dl.section dd { padding: 0px; margin: 0px; width: 100%; - border-bottom: 1px solid #5373B4; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); } .image @@ -1398,17 +1840,12 @@ dl.section dd { font-weight: bold; } -div.zoom -{ - border: 1px solid #90A5CE; -} - dl.citelist { margin-bottom:50px; } dl.citelist dt { - color:#334975; + color:var(--citation-label-color); float:left; font-weight:bold; margin-right:10px; @@ -1424,8 +1861,8 @@ dl.citelist dd { div.toc { padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); border-radius: 7px 7px 7px 7px; float: right; height: auto; @@ -1433,28 +1870,17 @@ div.toc { width: 200px; } -.PageDocRTL-title div.toc { - float: left !important; - text-align: right; -} - div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); margin-top: 5px; padding-left: 10px; padding-top: 2px; } -.PageDocRTL-title div.toc li { - background-position-x: right !important; - padding-left: 0 !important; - padding-right: 10px; -} - div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); border-bottom: 0 none; margin: 0; } @@ -1463,7 +1889,7 @@ div.toc ul { list-style: none outside none; border: medium none; padding: 0px; -} +} div.toc li.level1 { margin-left: 0px; @@ -1474,11 +1900,11 @@ div.toc li.level2 { } div.toc li.level3 { - margin-left: 30px; + margin-left: 15px; } div.toc li.level4 { - margin-left: 45px; + margin-left: 15px; } span.emoji { @@ -1487,29 +1913,13 @@ span.emoji { */ } -.PageDocRTL-title div.toc li.level1 { - margin-left: 0 !important; - margin-right: 0; -} - -.PageDocRTL-title div.toc li.level2 { - margin-left: 0 !important; - margin-right: 15px; -} - -.PageDocRTL-title div.toc li.level3 { - margin-left: 0 !important; - margin-right: 30px; -} - -.PageDocRTL-title div.toc li.level4 { - margin-left: 0 !important; - margin-right: 45px; +span.obfuscator { + display: none; } .inherit_header { font-weight: bold; - color: gray; + color: var(--inherit-header-color); cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; @@ -1541,11 +1951,12 @@ tr.heading h2 { #powerTip { cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; + box-shadow: var(--tooltip-shadow); display: none; font-size: smaller; max-width: 80%; @@ -1556,7 +1967,7 @@ tr.heading h2 { } #powerTip div.ttdoc { - color: grey; + color: var(--tooltip-doc-color); font-style: italic; } @@ -1564,18 +1975,24 @@ tr.heading h2 { font-weight: bold; } +#powerTip a { + color: var(--tooltip-link-color); +} + #powerTip div.ttname { font-weight: bold; } #powerTip div.ttdeci { - color: #006318; + color: var(--tooltip-declaration-color); } #powerTip div { margin: 0px; padding: 0px; - font: 12px/16px Roboto,sans-serif; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; } #powerTip:before, #powerTip:after { @@ -1620,12 +2037,12 @@ tr.heading h2 { } #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #FFFFFF; + border-top-color: var(--tooltip-background-color); border-width: 10px; margin: 0px -10px; } -#powerTip.n:before { - border-top-color: #808080; +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); border-width: 11px; margin: 0px -11px; } @@ -1648,13 +2065,13 @@ tr.heading h2 { } #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #FFFFFF; + border-bottom-color: var(--tooltip-background-color); border-width: 10px; margin: 0px -10px; } #powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; + border-bottom-color: var(--tooltip-border-color); border-width: 11px; margin: 0px -11px; } @@ -1675,13 +2092,13 @@ tr.heading h2 { left: 100%; } #powerTip.e:after { - border-left-color: #FFFFFF; + border-left-color: var(--tooltip-border-color); border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.e:before { - border-left-color: #808080; + border-left-color: var(--tooltip-border-color); border-width: 11px; top: 50%; margin-top: -11px; @@ -1691,13 +2108,13 @@ tr.heading h2 { right: 100%; } #powerTip.w:after { - border-right-color: #FFFFFF; + border-right-color: var(--tooltip-border-color); border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.w:before { - border-right-color: #808080; + border-right-color: var(--tooltip-border-color); border-width: 11px; top: 50%; margin-top: -11px; @@ -1731,7 +2148,7 @@ table.markdownTable { } table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; + border: 1px solid var(--table-cell-border-color); padding: 3px 7px 2px; } @@ -1739,8 +2156,8 @@ table.markdownTable tr { } th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); font-size: 110%; padding-bottom: 4px; padding-top: 5px; @@ -1758,36 +2175,51 @@ th.markdownTableHeadCenter, td.markdownTableBodyCenter { text-align: center } -.DocNodeRTL { - text-align: right; - direction: rtl; +tt, code, kbd, samp +{ + display: inline-block; } +/* @end */ -.DocNodeLTR { - text-align: left; - direction: ltr; +u { + text-decoration: underline; } -table.DocNodeRTL { - width: auto; - margin-right: 0; - margin-left: auto; +details>summary { + list-style-type: none; } -table.DocNodeLTR { - width: auto; - margin-right: auto; - margin-left: 0; +details > summary::-webkit-details-marker { + display: none; } -tt, code, kbd, samp -{ - display: inline-block; - direction:ltr; +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; } -/* @end */ -u { - text-decoration: underline; +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); } diff --git a/docs/doxygen.svg b/docs/doxygen.svg index d42dad5..79a7635 100644 --- a/docs/doxygen.svg +++ b/docs/doxygen.svg @@ -1,4 +1,6 @@ + @@ -17,7 +19,7 @@ - + diff --git a/docs/doxygen_crawl.html b/docs/doxygen_crawl.html new file mode 100644 index 0000000..609646d --- /dev/null +++ b/docs/doxygen_crawl.html @@ -0,0 +1,88 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/dynsections.js b/docs/dynsections.js index 3174bd7..8f49326 100644 --- a/docs/dynsections.js +++ b/docs/dynsections.js @@ -22,100 +22,173 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; /* @license-end */ diff --git a/docs/files.html b/docs/files.html index 6db97a1..892674a 100644 --- a/docs/files.html +++ b/docs/files.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: File List + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,14 +58,20 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    File List
    +
    File List
    Here is a list of all documented files with brief descriptions:
    @@ -74,7 +82,7 @@ $(function() {
    diff --git a/docs/folderclosed.svg b/docs/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/docs/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/folderclosedd.svg b/docs/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/docs/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/folderopen.svg b/docs/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/docs/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/docs/folderopend.svg b/docs/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/docs/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/functions.html b/docs/functions.html index 91f878e..57c5334 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,32 +58,29 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - a -

    diff --git a/docs/functions_b.html b/docs/functions_b.html index 7f6a77a..fbf5611 100644 --- a/docs/functions_b.html +++ b/docs/functions_b.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,29 +58,30 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - b -

    diff --git a/docs/functions_c.html b/docs/functions_c.html index 9050d95..275b5b3 100644 --- a/docs/functions_c.html +++ b/docs/functions_c.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,41 +58,34 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - c -

    diff --git a/docs/functions_d.html b/docs/functions_d.html index 1d214aa..c240732 100644 --- a/docs/functions_d.html +++ b/docs/functions_d.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,47 +58,36 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - d -

    diff --git a/docs/functions_e.html b/docs/functions_e.html index 1d2c5a3..0bba68d 100644 --- a/docs/functions_e.html +++ b/docs/functions_e.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,32 +58,31 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - e -

    diff --git a/docs/functions_f.html b/docs/functions_f.html index 4d4cce5..4f3cbd8 100644 --- a/docs/functions_f.html +++ b/docs/functions_f.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,43 +58,34 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - f -

    diff --git a/docs/functions_func.html b/docs/functions_func.html index dd3c76d..fb5201f 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,32 +58,29 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - a -

    diff --git a/docs/functions_func_b.html b/docs/functions_func_b.html index da6fdf4..65b23e7 100644 --- a/docs/functions_func_b.html +++ b/docs/functions_func_b.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,29 +58,30 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - b -

    diff --git a/docs/functions_func_c.html b/docs/functions_func_c.html index a9c8d30..c88ad4b 100644 --- a/docs/functions_func_c.html +++ b/docs/functions_func_c.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,41 +58,34 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - c -

    diff --git a/docs/functions_func_d.html b/docs/functions_func_d.html index 272ba3c..b794fac 100644 --- a/docs/functions_func_d.html +++ b/docs/functions_func_d.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,47 +58,36 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - d -

    diff --git a/docs/functions_func_e.html b/docs/functions_func_e.html index 194408c..b4e6ddb 100644 --- a/docs/functions_func_e.html +++ b/docs/functions_func_e.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,32 +58,31 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - e -

    diff --git a/docs/functions_func_f.html b/docs/functions_func_f.html index 95f324f..5ffbe36 100644 --- a/docs/functions_func_f.html +++ b/docs/functions_func_f.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,43 +58,34 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - f -

    diff --git a/docs/functions_func_g.html b/docs/functions_func_g.html index 06909ed..991a6a2 100644 --- a/docs/functions_func_g.html +++ b/docs/functions_func_g.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,33 +58,31 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - g -

    diff --git a/docs/functions_func_h.html b/docs/functions_func_h.html index fe71afb..474456b 100644 --- a/docs/functions_func_h.html +++ b/docs/functions_func_h.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,23 +58,28 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - h -

    diff --git a/docs/functions_func_i.html b/docs/functions_func_i.html index 195a666..c1723c6 100644 --- a/docs/functions_func_i.html +++ b/docs/functions_func_i.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,56 +58,39 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - i -

    diff --git a/docs/functions_func_l.html b/docs/functions_func_l.html index 41da93c..0924fd9 100644 --- a/docs/functions_func_l.html +++ b/docs/functions_func_l.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,31 +58,30 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - l -

    diff --git a/docs/functions_func_n.html b/docs/functions_func_n.html index 195bdb5..aecb529 100644 --- a/docs/functions_func_n.html +++ b/docs/functions_func_n.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,53 +58,37 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - n -

    diff --git a/docs/functions_func_o.html b/docs/functions_func_o.html index fea324d..9c9b9b2 100644 --- a/docs/functions_func_o.html +++ b/docs/functions_func_o.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,26 +58,29 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - o -

    diff --git a/docs/functions_func_p.html b/docs/functions_func_p.html index 59bab84..7993545 100644 --- a/docs/functions_func_p.html +++ b/docs/functions_func_p.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,55 +58,38 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - p -

    diff --git a/docs/functions_func_q.html b/docs/functions_func_q.html index 9f97d62..1d7dd9b 100644 --- a/docs/functions_func_q.html +++ b/docs/functions_func_q.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,89 +58,50 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - q -

    diff --git a/docs/functions_func_r.html b/docs/functions_func_r.html index a30280f..59100be 100644 --- a/docs/functions_func_r.html +++ b/docs/functions_func_r.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,23 +58,28 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - r -

    diff --git a/docs/functions_func_s.html b/docs/functions_func_s.html index ddc0524..c860fa8 100644 --- a/docs/functions_func_s.html +++ b/docs/functions_func_s.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,63 +58,37 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    diff --git a/docs/functions_func_t.html b/docs/functions_func_t.html index afb9ff6..7d98c7d 100644 --- a/docs/functions_func_t.html +++ b/docs/functions_func_t.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,51 +58,34 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - t -

    diff --git a/docs/functions_func_u.html b/docs/functions_func_u.html index ef4de8c..bd4f950 100644 --- a/docs/functions_func_u.html +++ b/docs/functions_func_u.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,35 +58,32 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - u -

    diff --git a/docs/functions_func_v.html b/docs/functions_func_v.html index b189d4e..9c13ad7 100644 --- a/docs/functions_func_v.html +++ b/docs/functions_func_v.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,36 +58,31 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - v -

    diff --git a/docs/functions_func_x.html b/docs/functions_func_x.html index dd3040f..6b0c661 100644 --- a/docs/functions_func_x.html +++ b/docs/functions_func_x.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members - Functions + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,29 +58,30 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -  +
    Here is a list of all documented functions with links to the class documentation for each member:
    -

    - x -

    diff --git a/docs/functions_g.html b/docs/functions_g.html index d788ac5..2bca2cd 100644 --- a/docs/functions_g.html +++ b/docs/functions_g.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,33 +58,31 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - g -

    diff --git a/docs/functions_h.html b/docs/functions_h.html index 79938c7..49c2488 100644 --- a/docs/functions_h.html +++ b/docs/functions_h.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,23 +58,28 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - h -

    diff --git a/docs/functions_i.html b/docs/functions_i.html index 26f42e1..1593653 100644 --- a/docs/functions_i.html +++ b/docs/functions_i.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,56 +58,39 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - i -

    diff --git a/docs/functions_l.html b/docs/functions_l.html index fdaeaa8..75ae791 100644 --- a/docs/functions_l.html +++ b/docs/functions_l.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,31 +58,30 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - l -

    diff --git a/docs/functions_n.html b/docs/functions_n.html index da911b6..7f6707b 100644 --- a/docs/functions_n.html +++ b/docs/functions_n.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,53 +58,37 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - n -

    diff --git a/docs/functions_o.html b/docs/functions_o.html index a75344f..78a18ea 100644 --- a/docs/functions_o.html +++ b/docs/functions_o.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,26 +58,29 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - o -

    diff --git a/docs/functions_p.html b/docs/functions_p.html index 3411ec0..5106997 100644 --- a/docs/functions_p.html +++ b/docs/functions_p.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,55 +58,38 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - p -

    diff --git a/docs/functions_q.html b/docs/functions_q.html index 6df8d6e..fa7c8a5 100644 --- a/docs/functions_q.html +++ b/docs/functions_q.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,89 +58,50 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - q -

    diff --git a/docs/functions_r.html b/docs/functions_r.html index 75f15a3..a88893b 100644 --- a/docs/functions_r.html +++ b/docs/functions_r.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,23 +58,28 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - r -

    diff --git a/docs/functions_s.html b/docs/functions_s.html index 7d81025..e184e57 100644 --- a/docs/functions_s.html +++ b/docs/functions_s.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,63 +58,37 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    diff --git a/docs/functions_t.html b/docs/functions_t.html index 4afc96c..187154c 100644 --- a/docs/functions_t.html +++ b/docs/functions_t.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,51 +58,34 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - t -

    diff --git a/docs/functions_u.html b/docs/functions_u.html index b2a4031..4c5bee7 100644 --- a/docs/functions_u.html +++ b/docs/functions_u.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,35 +58,32 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - u -

    diff --git a/docs/functions_v.html b/docs/functions_v.html index 2b0b5d9..9b4fb1e 100644 --- a/docs/functions_v.html +++ b/docs/functions_v.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,36 +58,31 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - v -

    diff --git a/docs/functions_x.html b/docs/functions_x.html index 0488791..4a9df22 100644 --- a/docs/functions_x.html +++ b/docs/functions_x.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Members + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,29 +58,30 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    Here is a list of all documented class members with links to the class documentation for each member:
    -

    - x -

    diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 65db86d..ade52fb 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Class Hierarchy + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,36 +58,42 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    Class Hierarchy
    +
    Class Hierarchy
    diff --git a/docs/index.html b/docs/index.html index 033d617..57993bb 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: TinyXML-2 + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + @@ -56,19 +58,24 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    -
    TinyXML-2
    +
    +
    TinyXML-2

    -

    Build

    -

    TinyXML-2 Logo

    +

    Test

    TinyXML-2 is a simple, small, efficient, C++ XML parser that can be easily integrated into other programs.

    The master is hosted on github: https://github.com/leethomason/tinyxml2

    The online HTML version of these docs: http://leethomason.github.io/tinyxml2/

    @@ -95,7 +102,7 @@ $(function() {

    An XMLDocument is a C++ object like any other, that can be on the stack, or new'd and deleted on the heap.

    However, any sub-node of the Document, XMLElement, XMLText, etc, can only be created by calling the appropriate XMLDocument::NewElement, NewText, etc. method. Although you have pointers to these objects, they are still owned by the Document. When the Document is deleted, so are all the nodes it contains.

    White Space

    -

    Whitespace Preservation (default)

    +

    Whitespace Preservation (default, PRESERVE_WHITESPACE)

    Microsoft has an excellent article on white space: http://msdn.microsoft.com/en-us/library/ms256097.aspx

    By default, TinyXML-2 preserves white space in a (hopefully) sane way that is almost compliant with the spec. (TinyXML-1 used a completely different model, much more similar to 'collapse', below.)

    As a first step, all newlines / carriage-returns / line-feeds are normalized to a line-feed character, as required by the XML spec.

    @@ -109,7 +116,7 @@ $(function() { </document> <document><data>1</data><data>2</data><data>3</data></document> -

    Whitespace Collapse

    +

    Whitespace Collapse (COLLAPSE_WHITESPACE)

    For some applications, it is preferable to collapse whitespace. Collapsing whitespace gives you "HTML-like" behavior, which is sometimes more suitable for hand typed documents.

    TinyXML-2 supports this with the 'whitespace' parameter to the XMLDocument constructor. (The default is to preserve whitespace, as described above.)

    However, you may also use COLLAPSE_WHITESPACE, which will:

    @@ -119,7 +126,10 @@ $(function() {
  • Collapse a run of any number of space characters into a single space character
  • Note that (currently) there is a performance impact for using COLLAPSE_WHITESPACE. It essentially causes the XML to be parsed twice.

    -

    Error Reporting

    +

    Pedantic Whitespace (PEDANTIC_WHITESPACE)

    +

    For applications that need to know about text nodes that are composed entirely of whitespace, PEDANTIC_WHITESPACE is available. PEDANTIC_WHITESPACE maintains all the whilespace between elements.

    +

    PEDANTIC_WHITESPACE is a new mode and not as tested as the other whitespace modes.

    +

    Error Reporting

    TinyXML-2 reports the line number of any errors in an XML document that cannot be parsed correctly. In addition, all nodes (elements, declarations, text, comments etc.) and attributes have a line number recorded as they are parsed. This allows an application that performs additional validation of the parsed XML document (e.g. application-implemented DTD validation) to report line number information for error messages.

    Entities

    TinyXML-2 recognizes the pre-defined "character entities", meaning special characters. Namely:

    &amp;   &
    @@ -186,8 +196,8 @@ printer.CloseElement();
     
  • xmltest.cpp
  • Generally speaking, the intent is that you simply include the tinyxml2.cpp and tinyxml2.h files in your project and build with your other source code.

    -

    There is also a CMake build included. CMake is the general build for TinyXML-2. Additional build systems are costly to maintain, and tend to bit-rot.

    -

    A Visual Studio project is included, but that is largely for developer convenience, and is not intended to integrate well with other builds.

    +

    There is also a CMake build included. CMake is the general build for TinyXML-2.

    +

    (Additional build systems are costly to maintain, and tend to bit-rot. They are being removed over time.)

    Building TinyXML-2 - Using vcpkg

    You can download and install TinyXML-2 using the vcpkg dependency manager:

    git clone https://github.com/Microsoft/vcpkg.git
     cd vcpkg
    @@ -213,10 +223,11 @@ cd vcpkg
     

    TinyXML-2 grew from that effort. Lee Thomason is the original author of TinyXML-2 (and TinyXML-1) but TinyXML-2 has been and is being improved by many contributors.

    Thanks to John Mackay at http://john.mackay.rosalilastudio.com for the TinyXML-2 logo!

    +
    diff --git a/docs/jquery.js b/docs/jquery.js index 103c32d..1dffb65 100644 --- a/docs/jquery.js +++ b/docs/jquery.js @@ -1,12 +1,11 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
    ",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
    "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element -},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(y){"use strict";y.ui=y.ui||{};y.ui.version="1.13.2";var n,i=0,h=Array.prototype.hasOwnProperty,a=Array.prototype.slice;y.cleanData=(n=y.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=y._data(i,"events"))&&e.remove&&y(i).triggerHandler("remove");n(t)}),y.widget=function(t,i,e){var s,n,o,h={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=y.Widget),Array.isArray(e)&&(e=y.extend.apply(null,[{}].concat(e))),y.expr.pseudos[r.toLowerCase()]=function(t){return!!y.data(t,r)},y[a]=y[a]||{},s=y[a][t],n=y[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},y.extend(n,s,{version:e.version,_proto:y.extend({},e),_childConstructors:[]}),(o=new i).options=y.widget.extend({},o.options),y.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}h[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=y.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},h,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(y.each(s._childConstructors,function(t,e){var i=e.prototype;y.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),y.widget.bridge(t,n),n},y.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
    "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n
    ").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
    ").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0'+ + for (let i in data.children) { + let url; + const link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ data.children[i].text+''+ makeTree(data.children[i],relPath)+'
  • '; } @@ -36,15 +43,91 @@ function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { } return result; } - - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + let searchBoxHtml; if (searchEnabled) { if (serverSide) { - $('#main-menu').append('
  • '); + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; } else { - $('#main-menu').append('
  • '); + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; + if ($mainMenuState.length) { + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = () => $menu.css('display', 'block'); + $menu.hide().slideDown(options); + } else { + options['complete'] = () => $menu.css('display', 'none'); + $menu.show().slideUp(options); + } + }); + // set default menu visibility + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); } $('#main-menu').smartmenus(); } diff --git a/docs/minus.svg b/docs/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/docs/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/minusd.svg b/docs/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/docs/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/nav_fd.png b/docs/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/docs/nav_hd.png b/docs/nav_hd.png new file mode 100644 index 0000000000000000000000000000000000000000..de80f18ad6488b9990303f267a76fdc83f0ffd80 GIT binary patch literal 114 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8!2~3AUOE6t21`#D$B+ufw|9379#G(63FK{W z5s6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/docs/pages.html b/docs/pages.html index 12adb83..0c7428d 100644 --- a/docs/pages.html +++ b/docs/pages.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: Related Pages + + @@ -19,10 +21,9 @@
    - - + @@ -30,21 +31,22 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ +
    @@ -56,28 +58,34 @@ $(function() {
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    Related Pages
    +
    Related Pages
    diff --git a/docs/plus.svg b/docs/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/docs/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/plusd.svg b/docs/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/docs/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/search/all_0.js b/docs/search/all_0.js index 69ff10e..5da8a55 100644 --- a/docs/search/all_0.js +++ b/docs/search/all_0.js @@ -1,5 +1,4 @@ var searchData= [ - ['accept_0',['Accept',['../classtinyxml2_1_1_x_m_l_node.html#a81e66df0a44c67a7af17f3b77a152785',1,'tinyxml2::XMLNode::Accept()'],['../classtinyxml2_1_1_x_m_l_text.html#a1b2c1448f1a21299d0a7913f18b55206',1,'tinyxml2::XMLText::Accept()'],['../classtinyxml2_1_1_x_m_l_comment.html#a4a33dc32fae0285b03f9cfcb3e43e122',1,'tinyxml2::XMLComment::Accept()'],['../classtinyxml2_1_1_x_m_l_declaration.html#a5f376019fb34752eb248548f42f32045',1,'tinyxml2::XMLDeclaration::Accept()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a70983aa1b1cff3d3aa6d4d0a80e5ee48',1,'tinyxml2::XMLUnknown::Accept()'],['../classtinyxml2_1_1_x_m_l_element.html#a3ea8a40e788fb9ad876c28a32932c6d5',1,'tinyxml2::XMLElement::Accept()'],['../classtinyxml2_1_1_x_m_l_document.html#a9efa54f7ecb37c17ab1fa2b3078ccca1',1,'tinyxml2::XMLDocument::Accept()']]], - ['attribute_1',['Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a70e49ed60b11212ae35f7e354cfe1de9',1,'tinyxml2::XMLElement']]] + ['2_0',['TinyXML-2',['../index.html',1,'']]] ]; diff --git a/docs/search/all_1.js b/docs/search/all_1.js index a8b1167..9843f18 100644 --- a/docs/search/all_1.js +++ b/docs/search/all_1.js @@ -1,6 +1,9 @@ var searchData= [ - ['boolattribute_2',['BoolAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a53eda26131e1ad1031ef8ec8adb51bd8',1,'tinyxml2::XMLElement']]], - ['booltext_3',['BoolText',['../classtinyxml2_1_1_x_m_l_element.html#a68569f59f6382bcea7f5013ec59736d2',1,'tinyxml2::XMLElement']]], - ['boolvalue_4',['BoolValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a98ce5207344ad33a265b0422addae1ff',1,'tinyxml2::XMLAttribute']]] + ['accept_0',['Accept',['../classtinyxml2_1_1_x_m_l_node.html#a81e66df0a44c67a7af17f3b77a152785',1,'tinyxml2::XMLNode::Accept()'],['../classtinyxml2_1_1_x_m_l_text.html#a4022fa0089f2964203c7a69cd0f3726f',1,'tinyxml2::XMLText::Accept()'],['../classtinyxml2_1_1_x_m_l_comment.html#a171ccb71232b90cd0d6945b92cfc4aec',1,'tinyxml2::XMLComment::Accept()'],['../classtinyxml2_1_1_x_m_l_declaration.html#afd861abee3ed6c88e9a6965dac32f8b7',1,'tinyxml2::XMLDeclaration::Accept()'],['../classtinyxml2_1_1_x_m_l_unknown.html#ab510bfaa18873a3968964655353d2946',1,'tinyxml2::XMLUnknown::Accept()'],['../classtinyxml2_1_1_x_m_l_element.html#acae4a763d74c13ce4a31eb70b4db9f82',1,'tinyxml2::XMLElement::Accept()'],['../classtinyxml2_1_1_x_m_l_document.html#a853f05e2f7f51eb598e32ec61d8bc53c',1,'tinyxml2::XMLDocument::Accept()']]], + ['an_20xml_20file_1',['Load an XML File',['../_example_1.html',1,'']]], + ['an_20xml_20from_20char_20buffer_2',['Parse an XML from char buffer',['../_example_2.html',1,'']]], + ['and_20text_20information_3',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['attribute_4',['Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a48cf4a315cfbac7d74cd0d5ff2c5df51',1,'tinyxml2::XMLElement']]], + ['attributes_20and_20text_20information_5',['Read attributes and text information.',['../_example_4.html',1,'']]] ]; diff --git a/docs/search/all_10.js b/docs/search/all_10.js index cac5f2a..c29ac63 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -1,11 +1,13 @@ var searchData= [ - ['tinyxml_2d2_113',['TinyXML-2',['../index.html',1,'']]], - ['tocomment_114',['ToComment',['../classtinyxml2_1_1_x_m_l_node.html#aff47671055aa99840a1c1ebd661e63e3',1,'tinyxml2::XMLNode::ToComment()'],['../classtinyxml2_1_1_x_m_l_comment.html#a8093e1dc8a34fa446d9dc3fde0e6c0ee',1,'tinyxml2::XMLComment::ToComment()']]], - ['todeclaration_115',['ToDeclaration',['../classtinyxml2_1_1_x_m_l_node.html#a174fd4c22c010b58138c1b84a0dfbd51',1,'tinyxml2::XMLNode::ToDeclaration()'],['../classtinyxml2_1_1_x_m_l_declaration.html#a159d8ac45865215e88059ea1e5b52fc5',1,'tinyxml2::XMLDeclaration::ToDeclaration()'],['../classtinyxml2_1_1_x_m_l_handle.html#a108858be7ee3eb53f73b5194c1aa8ff0',1,'tinyxml2::XMLHandle::ToDeclaration()']]], - ['todocument_116',['ToDocument',['../classtinyxml2_1_1_x_m_l_node.html#a836e2966ed736fc3c94f70e12a2a3357',1,'tinyxml2::XMLNode::ToDocument()'],['../classtinyxml2_1_1_x_m_l_document.html#a3e185f880882bd978367bb55937735ec',1,'tinyxml2::XMLDocument::ToDocument()']]], - ['toelement_117',['ToElement',['../classtinyxml2_1_1_x_m_l_node.html#aab516e699567f75cc9ab2ef2eee501e8',1,'tinyxml2::XMLNode::ToElement()'],['../classtinyxml2_1_1_x_m_l_element.html#ad9ff5c2dbc15df36cf664ce1b0ea0a5d',1,'tinyxml2::XMLElement::ToElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a5e73ed8f3f6f9619d5a8bb1862c47d99',1,'tinyxml2::XMLHandle::ToElement()']]], - ['tonode_118',['ToNode',['../classtinyxml2_1_1_x_m_l_handle.html#a03ea6ec970a021b71bf1219a0f6717df',1,'tinyxml2::XMLHandle']]], - ['totext_119',['ToText',['../classtinyxml2_1_1_x_m_l_node.html#a41c55dab9162d1eb62db2008430e376b',1,'tinyxml2::XMLNode::ToText()'],['../classtinyxml2_1_1_x_m_l_text.html#ab1213b4ddebe9b17ec7e7040e9f1caf7',1,'tinyxml2::XMLText::ToText()'],['../classtinyxml2_1_1_x_m_l_handle.html#a6ab9e8cbfb41417246e5657e3842c62a',1,'tinyxml2::XMLHandle::ToText()']]], - ['tounknown_120',['ToUnknown',['../classtinyxml2_1_1_x_m_l_node.html#a8675a74aa0ada6eccab0c77ef3e5b9bd',1,'tinyxml2::XMLNode::ToUnknown()'],['../classtinyxml2_1_1_x_m_l_unknown.html#af4374856421921cad578c8affae872b6',1,'tinyxml2::XMLUnknown::ToUnknown()'],['../classtinyxml2_1_1_x_m_l_handle.html#aa387368a1ad8d843a9f12df863d298de',1,'tinyxml2::XMLHandle::ToUnknown()']]] + ['savefile_0',['SaveFile',['../classtinyxml2_1_1_x_m_l_document.html#a73ac416b4a2aa0952e841220eb3da18f',1,'tinyxml2::XMLDocument::SaveFile(const char *filename, bool compact=false)'],['../classtinyxml2_1_1_x_m_l_document.html#a8b95779479a0035acc67b3a61dfe1b74',1,'tinyxml2::XMLDocument::SaveFile(FILE *fp, bool compact=false)']]], + ['setattribute_1',['SetAttribute',['../classtinyxml2_1_1_x_m_l_attribute.html#a406d2c4a13c7af99a65edb59dd9f7581',1,'tinyxml2::XMLAttribute::SetAttribute(const char *value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ad86d7d7058d76761c3a80662566a57e5',1,'tinyxml2::XMLAttribute::SetAttribute(int value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ae70468c0f6df2748ba3529c716999fae',1,'tinyxml2::XMLAttribute::SetAttribute(unsigned value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a7c1240f479722b9aa29b6c030aa116c2',1,'tinyxml2::XMLAttribute::SetAttribute(int64_t value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a10964060a5c0d92486ecf8705bdf37da',1,'tinyxml2::XMLAttribute::SetAttribute(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ab3516def4fe058fe328f2b89fc2d77da',1,'tinyxml2::XMLAttribute::SetAttribute(bool value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a9a65ab3147abe8ccbbd373ce8791e818',1,'tinyxml2::XMLAttribute::SetAttribute(double value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ae95e843313aaf5d56c32530b6456df02',1,'tinyxml2::XMLAttribute::SetAttribute(float value)'],['../classtinyxml2_1_1_x_m_l_element.html#a11943abf2d0831548c3790dd5d9f119c',1,'tinyxml2::XMLElement::SetAttribute(const char *name, const char *value)'],['../classtinyxml2_1_1_x_m_l_element.html#aae6568c64c7f1cc88be8461ba41a79cf',1,'tinyxml2::XMLElement::SetAttribute(const char *name, int value)'],['../classtinyxml2_1_1_x_m_l_element.html#ae143997e90064ba82326b29a9930ea8f',1,'tinyxml2::XMLElement::SetAttribute(const char *name, unsigned value)'],['../classtinyxml2_1_1_x_m_l_element.html#aaeefdf9171fec91b13a776b42299b0dd',1,'tinyxml2::XMLElement::SetAttribute(const char *name, int64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#ad598868c0599ddc4695dab18552c308d',1,'tinyxml2::XMLElement::SetAttribute(const char *name, uint64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#aa848b696e6a75e4e545c6da9893b11e1',1,'tinyxml2::XMLElement::SetAttribute(const char *name, bool value)'],['../classtinyxml2_1_1_x_m_l_element.html#a233397ee81e70eb5d4b814c5f8698533',1,'tinyxml2::XMLElement::SetAttribute(const char *name, double value)'],['../classtinyxml2_1_1_x_m_l_element.html#a554b70d882e65b28fc084b23df9b9759',1,'tinyxml2::XMLElement::SetAttribute(const char *name, float value)']]], + ['setbom_2',['SetBOM',['../classtinyxml2_1_1_x_m_l_document.html#a14419b698f7c4b140df4e80f3f0c93b0',1,'tinyxml2::XMLDocument']]], + ['setcdata_3',['SetCData',['../classtinyxml2_1_1_x_m_l_text.html#ad080357d76ab7cc59d7651249949329d',1,'tinyxml2::XMLText']]], + ['setname_4',['SetName',['../classtinyxml2_1_1_x_m_l_element.html#a97712009a530d8cb8a63bf705f02b4f1',1,'tinyxml2::XMLElement']]], + ['settext_5',['SetText',['../classtinyxml2_1_1_x_m_l_element.html#a1f9c2cd61b72af5ae708d37b7ad283ce',1,'tinyxml2::XMLElement::SetText(const char *inText)'],['../classtinyxml2_1_1_x_m_l_element.html#aeae8917b5ea6060b3c08d4e3d8d632d7',1,'tinyxml2::XMLElement::SetText(int value)'],['../classtinyxml2_1_1_x_m_l_element.html#a7bbfcc11d516598bc924a8fba4d08597',1,'tinyxml2::XMLElement::SetText(unsigned value)'],['../classtinyxml2_1_1_x_m_l_element.html#a7b62cd33acdfeff7ea2b1b330d4368e4',1,'tinyxml2::XMLElement::SetText(int64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#a6e615bc745afd1ca8ded56d7aac02657',1,'tinyxml2::XMLElement::SetText(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#ae4b543d6770de76fb6ab68e541c192a4',1,'tinyxml2::XMLElement::SetText(bool value)'],['../classtinyxml2_1_1_x_m_l_element.html#a67bd77ac9aaeff58ff20b4275a65ba4e',1,'tinyxml2::XMLElement::SetText(double value)'],['../classtinyxml2_1_1_x_m_l_element.html#a51d560da5ae3ad6b75e0ab9ffb2ae42a',1,'tinyxml2::XMLElement::SetText(float value)']]], + ['setuserdata_6',['SetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a002978fc889cc011d143185f2377eca2',1,'tinyxml2::XMLNode']]], + ['setvalue_7',['SetValue',['../classtinyxml2_1_1_x_m_l_node.html#a09dd68cf9eae137579f6e50f36487513',1,'tinyxml2::XMLNode']]], + ['shallowclone_8',['ShallowClone',['../classtinyxml2_1_1_x_m_l_node.html#a9046880c05b81ad99ee645f4b2a53ecd',1,'tinyxml2::XMLNode::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_text.html#a277bbcf2e0e1326ca7f6f7c4d0820bb0',1,'tinyxml2::XMLText::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_comment.html#a5396d702a6ca251ee1493707a3ac6086',1,'tinyxml2::XMLComment::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_declaration.html#a0e1151bfb4c2a42ed8a1991169cbc59e',1,'tinyxml2::XMLDeclaration::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a5ffeb6cd9e55008ebc160c1ceb4115ec',1,'tinyxml2::XMLUnknown::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_element.html#a6dc4d8774d1e77a8c37a7b3d039d3049',1,'tinyxml2::XMLElement::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_document.html#a01ab2fc16fbce5f4456d67d24090e70b',1,'tinyxml2::XMLDocument::ShallowClone()']]], + ['shallowequal_9',['ShallowEqual',['../classtinyxml2_1_1_x_m_l_node.html#a7ce18b751c3ea09eac292dca264f9226',1,'tinyxml2::XMLNode::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_text.html#a032269f8d4d0357912fcb9bdc796f50c',1,'tinyxml2::XMLText::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_comment.html#a5d905bdee77945cf8473987911fbe581',1,'tinyxml2::XMLComment::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_declaration.html#a125d70baaba44a55c2f10e185f70d478',1,'tinyxml2::XMLDeclaration::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a300a119859a7c25a64f400c16535d8b4',1,'tinyxml2::XMLUnknown::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_element.html#aaba88737610559755425b8a59179817e',1,'tinyxml2::XMLElement::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_document.html#ac538345c44f521e418ff86b4bdc20ca8',1,'tinyxml2::XMLDocument::ShallowEqual()']]] ]; diff --git a/docs/search/all_11.js b/docs/search/all_11.js index aa21f64..494ed06 100644 --- a/docs/search/all_11.js +++ b/docs/search/all_11.js @@ -1,8 +1,12 @@ var searchData= [ - ['unsigned64attribute_121',['Unsigned64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a226502bab8f1be7ede1fdd255398eb85',1,'tinyxml2::XMLElement']]], - ['unsigned64text_122',['Unsigned64Text',['../classtinyxml2_1_1_x_m_l_element.html#af48c1023abbac1acdf4927c51c3a5f0c',1,'tinyxml2::XMLElement']]], - ['unsignedattribute_123',['UnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#afea43a1d4aa33e3703ddee5fc9adc26c',1,'tinyxml2::XMLElement']]], - ['unsignedtext_124',['UnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a49bad014ffcc17b0b6119d5b2c97dfb5',1,'tinyxml2::XMLElement']]], - ['unsignedvalue_125',['UnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a0be5343b08a957c42c02c5d32c35d338',1,'tinyxml2::XMLAttribute']]] + ['text_20information_0',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['tinyxml_202_1',['TinyXML-2',['../index.html',1,'']]], + ['tocomment_2',['ToComment',['../classtinyxml2_1_1_x_m_l_node.html#a5dc13f02ae49e3fa609e426f47c8466d',1,'tinyxml2::XMLNode::ToComment()'],['../classtinyxml2_1_1_x_m_l_comment.html#a7bd0df98fc2bb55d1d4445bfd2ec0053',1,'tinyxml2::XMLComment::ToComment()']]], + ['todeclaration_3',['ToDeclaration',['../classtinyxml2_1_1_x_m_l_node.html#a12aa783a3a4445ad5557c7d56cd8dc4a',1,'tinyxml2::XMLNode::ToDeclaration()'],['../classtinyxml2_1_1_x_m_l_declaration.html#ac485f175252b0d838d86de5fa22455cd',1,'tinyxml2::XMLDeclaration::ToDeclaration()'],['../classtinyxml2_1_1_x_m_l_handle.html#a85d0c76920a013ea2a29456dbf7d160d',1,'tinyxml2::XMLHandle::ToDeclaration()']]], + ['todocument_4',['ToDocument',['../classtinyxml2_1_1_x_m_l_node.html#a6107c3f57ab6e0755959947762953652',1,'tinyxml2::XMLNode::ToDocument()'],['../classtinyxml2_1_1_x_m_l_document.html#a290ad241e05e6aeeccbc78a4f3454f55',1,'tinyxml2::XMLDocument::ToDocument()']]], + ['toelement_5',['ToElement',['../classtinyxml2_1_1_x_m_l_node.html#a9417e1f8a9787ae27741605493514b18',1,'tinyxml2::XMLNode::ToElement()'],['../classtinyxml2_1_1_x_m_l_element.html#a88621376780280c0695458e30212eebe',1,'tinyxml2::XMLElement::ToElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#ab2371c4adb8b04afe04ed216bf9b0676',1,'tinyxml2::XMLHandle::ToElement()']]], + ['tonode_6',['ToNode',['../classtinyxml2_1_1_x_m_l_handle.html#a689453c96dd3d4016437d2298d1de691',1,'tinyxml2::XMLHandle']]], + ['totext_7',['ToText',['../classtinyxml2_1_1_x_m_l_node.html#a0aea8c9c5853c35a06da1988486abc60',1,'tinyxml2::XMLNode::ToText()'],['../classtinyxml2_1_1_x_m_l_text.html#a221e45ee1026407049d89786cbbfe145',1,'tinyxml2::XMLText::ToText()'],['../classtinyxml2_1_1_x_m_l_handle.html#accc80bcbd81e816f13a23c172587c288',1,'tinyxml2::XMLHandle::ToText()']]], + ['tounknown_8',['ToUnknown',['../classtinyxml2_1_1_x_m_l_node.html#aa8a2dd38b786c3b8d406c2047753cbfd',1,'tinyxml2::XMLNode::ToUnknown()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a7d2238fe165736605de3ba2e2e5a99d1',1,'tinyxml2::XMLUnknown::ToUnknown()'],['../classtinyxml2_1_1_x_m_l_handle.html#add97784cbe14ef42bb36e158ad6e6082',1,'tinyxml2::XMLHandle::ToUnknown()']]] ]; diff --git a/docs/search/all_12.js b/docs/search/all_12.js index 886312d..d1602ad 100644 --- a/docs/search/all_12.js +++ b/docs/search/all_12.js @@ -1,7 +1,8 @@ var searchData= [ - ['value_126',['Value',['../classtinyxml2_1_1_x_m_l_node.html#a66344989a4b436155bcda72bd6b07b82',1,'tinyxml2::XMLNode::Value()'],['../classtinyxml2_1_1_x_m_l_attribute.html#a1aab1dd0e43ecbcfa306adbcf3a3d853',1,'tinyxml2::XMLAttribute::Value()']]], - ['visit_127',['Visit',['../classtinyxml2_1_1_x_m_l_visitor.html#adc75bd459fc7ba8223b50f0616767f9a',1,'tinyxml2::XMLVisitor::Visit(const XMLDeclaration &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#af30233565856480ea48b6fa0d6dec65b',1,'tinyxml2::XMLVisitor::Visit(const XMLText &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#acc8147fb5a85f6c65721654e427752d7',1,'tinyxml2::XMLVisitor::Visit(const XMLComment &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#a14e4748387c34bf53d24e8119bb1f292',1,'tinyxml2::XMLVisitor::Visit(const XMLUnknown &)'],['../classtinyxml2_1_1_x_m_l_printer.html#a275ae25544a12199ae40b6994ca6e4de',1,'tinyxml2::XMLPrinter::Visit(const XMLText &text)'],['../classtinyxml2_1_1_x_m_l_printer.html#a3f16a30be1537ac141d9bd2db824ba9e',1,'tinyxml2::XMLPrinter::Visit(const XMLComment &comment)'],['../classtinyxml2_1_1_x_m_l_printer.html#a9ceff5cd85e5db65838962174fcdcc46',1,'tinyxml2::XMLPrinter::Visit(const XMLDeclaration &declaration)'],['../classtinyxml2_1_1_x_m_l_printer.html#aa15e1da81e17dea5da6499ac5b08d9d8',1,'tinyxml2::XMLPrinter::Visit(const XMLUnknown &unknown)']]], - ['visitenter_128',['VisitEnter',['../classtinyxml2_1_1_x_m_l_visitor.html#acb3c22fc5f60eb9db98f533f2761f67d',1,'tinyxml2::XMLVisitor::VisitEnter(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#af97980a17dd4e37448b181f5ddfa92b5',1,'tinyxml2::XMLVisitor::VisitEnter(const XMLElement &, const XMLAttribute *)'],['../classtinyxml2_1_1_x_m_l_printer.html#ae966b988a7a28c41e91c5ca17fb2054b',1,'tinyxml2::XMLPrinter::VisitEnter(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_printer.html#a2ce2aa508c21ac91615093ddb9c282c5',1,'tinyxml2::XMLPrinter::VisitEnter(const XMLElement &element, const XMLAttribute *attribute)']]], - ['visitexit_129',['VisitExit',['../classtinyxml2_1_1_x_m_l_visitor.html#a170e9989cd046ba904f302d087e07086',1,'tinyxml2::XMLVisitor::VisitExit(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#a772f10ddc83f881956d32628faa16eb6',1,'tinyxml2::XMLVisitor::VisitExit(const XMLElement &)'],['../classtinyxml2_1_1_x_m_l_printer.html#a15fc1f2b922f540917dcf52808737b29',1,'tinyxml2::XMLPrinter::VisitExit(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_printer.html#ae99e0a7086543591edfb565f24689098',1,'tinyxml2::XMLPrinter::VisitExit(const XMLElement &element)']]] + ['unsigned64attribute_0',['Unsigned64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a226502bab8f1be7ede1fdd255398eb85',1,'tinyxml2::XMLElement']]], + ['unsigned64text_1',['Unsigned64Text',['../classtinyxml2_1_1_x_m_l_element.html#af48c1023abbac1acdf4927c51c3a5f0c',1,'tinyxml2::XMLElement']]], + ['unsignedattribute_2',['UnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#afea43a1d4aa33e3703ddee5fc9adc26c',1,'tinyxml2::XMLElement']]], + ['unsignedtext_3',['UnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a49bad014ffcc17b0b6119d5b2c97dfb5',1,'tinyxml2::XMLElement']]], + ['unsignedvalue_4',['UnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a0be5343b08a957c42c02c5d32c35d338',1,'tinyxml2::XMLAttribute']]] ]; diff --git a/docs/search/all_13.js b/docs/search/all_13.js index a438148..cc7cc15 100644 --- a/docs/search/all_13.js +++ b/docs/search/all_13.js @@ -1,15 +1,7 @@ var searchData= [ - ['xmlattribute_130',['XMLAttribute',['../classtinyxml2_1_1_x_m_l_attribute.html',1,'tinyxml2']]], - ['xmlcomment_131',['XMLComment',['../classtinyxml2_1_1_x_m_l_comment.html',1,'tinyxml2']]], - ['xmlconsthandle_132',['XMLConstHandle',['../classtinyxml2_1_1_x_m_l_const_handle.html',1,'tinyxml2']]], - ['xmldeclaration_133',['XMLDeclaration',['../classtinyxml2_1_1_x_m_l_declaration.html',1,'tinyxml2']]], - ['xmldocument_134',['XMLDocument',['../classtinyxml2_1_1_x_m_l_document.html',1,'tinyxml2::XMLDocument'],['../classtinyxml2_1_1_x_m_l_document.html#a57ddf17b6e054dda10af98991b1b8f70',1,'tinyxml2::XMLDocument::XMLDocument()']]], - ['xmlelement_135',['XMLElement',['../classtinyxml2_1_1_x_m_l_element.html',1,'tinyxml2']]], - ['xmlhandle_136',['XMLHandle',['../classtinyxml2_1_1_x_m_l_handle.html',1,'tinyxml2::XMLHandle'],['../classtinyxml2_1_1_x_m_l_handle.html#a9c240a35c18f053509b4b97ddccd9793',1,'tinyxml2::XMLHandle::XMLHandle(XMLNode *node)'],['../classtinyxml2_1_1_x_m_l_handle.html#aa2edbc1c0d3e3e8259bd98de7f1cf500',1,'tinyxml2::XMLHandle::XMLHandle(XMLNode &node)'],['../classtinyxml2_1_1_x_m_l_handle.html#afd8e01e6018c07347b8e6d80272466aa',1,'tinyxml2::XMLHandle::XMLHandle(const XMLHandle &ref)']]], - ['xmlnode_137',['XMLNode',['../classtinyxml2_1_1_x_m_l_node.html',1,'tinyxml2']]], - ['xmlprinter_138',['XMLPrinter',['../classtinyxml2_1_1_x_m_l_printer.html',1,'tinyxml2::XMLPrinter'],['../classtinyxml2_1_1_x_m_l_printer.html#aa6d3841c069085f5b8a27bc7103c04f7',1,'tinyxml2::XMLPrinter::XMLPrinter()']]], - ['xmltext_139',['XMLText',['../classtinyxml2_1_1_x_m_l_text.html',1,'tinyxml2']]], - ['xmlunknown_140',['XMLUnknown',['../classtinyxml2_1_1_x_m_l_unknown.html',1,'tinyxml2']]], - ['xmlvisitor_141',['XMLVisitor',['../classtinyxml2_1_1_x_m_l_visitor.html',1,'tinyxml2']]] + ['value_0',['Value',['../classtinyxml2_1_1_x_m_l_node.html#a0485e51c670e741884cfd8362274d680',1,'tinyxml2::XMLNode::Value()'],['../classtinyxml2_1_1_x_m_l_attribute.html#ab1c5cd993f836a771818ca408994b14e',1,'tinyxml2::XMLAttribute::Value()']]], + ['visit_1',['Visit',['../classtinyxml2_1_1_x_m_l_visitor.html#adc75bd459fc7ba8223b50f0616767f9a',1,'tinyxml2::XMLVisitor::Visit(const XMLDeclaration &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#af30233565856480ea48b6fa0d6dec65b',1,'tinyxml2::XMLVisitor::Visit(const XMLText &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#acc8147fb5a85f6c65721654e427752d7',1,'tinyxml2::XMLVisitor::Visit(const XMLComment &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#a14e4748387c34bf53d24e8119bb1f292',1,'tinyxml2::XMLVisitor::Visit(const XMLUnknown &)'],['../classtinyxml2_1_1_x_m_l_printer.html#ad903ea1672831f797130b4cddddfa532',1,'tinyxml2::XMLPrinter::Visit(const XMLText &text) override'],['../classtinyxml2_1_1_x_m_l_printer.html#a76fe434cdd4c39cb9963e3025e53609a',1,'tinyxml2::XMLPrinter::Visit(const XMLComment &comment) override'],['../classtinyxml2_1_1_x_m_l_printer.html#a63df55647c0e170e5b8702842b82008e',1,'tinyxml2::XMLPrinter::Visit(const XMLDeclaration &declaration) override'],['../classtinyxml2_1_1_x_m_l_printer.html#a31002765840bc4ea7b22332f71d83c74',1,'tinyxml2::XMLPrinter::Visit(const XMLUnknown &unknown) override']]], + ['visitenter_2',['VisitEnter',['../classtinyxml2_1_1_x_m_l_visitor.html#acb3c22fc5f60eb9db98f533f2761f67d',1,'tinyxml2::XMLVisitor::VisitEnter(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#af97980a17dd4e37448b181f5ddfa92b5',1,'tinyxml2::XMLVisitor::VisitEnter(const XMLElement &, const XMLAttribute *)'],['../classtinyxml2_1_1_x_m_l_printer.html#a73eba3d1aab34c4c3ac38d7d2d186671',1,'tinyxml2::XMLPrinter::VisitEnter(const XMLDocument &) override'],['../classtinyxml2_1_1_x_m_l_printer.html#a5cab997d51b0387c21e2274bd1147755',1,'tinyxml2::XMLPrinter::VisitEnter(const XMLElement &element, const XMLAttribute *attribute) override']]], + ['visitexit_3',['VisitExit',['../classtinyxml2_1_1_x_m_l_visitor.html#a170e9989cd046ba904f302d087e07086',1,'tinyxml2::XMLVisitor::VisitExit(const XMLDocument &)'],['../classtinyxml2_1_1_x_m_l_visitor.html#a772f10ddc83f881956d32628faa16eb6',1,'tinyxml2::XMLVisitor::VisitExit(const XMLElement &)'],['../classtinyxml2_1_1_x_m_l_printer.html#a261a24986e3507258a74405a7dc08cbf',1,'tinyxml2::XMLPrinter::VisitExit(const XMLDocument &) override'],['../classtinyxml2_1_1_x_m_l_printer.html#a9a397f4c809a4de7ba27902b3ae1bbf7',1,'tinyxml2::XMLPrinter::VisitExit(const XMLElement &element) override']]] ]; diff --git a/docs/search/all_14.js b/docs/search/all_14.js new file mode 100644 index 0000000..5ada783 --- /dev/null +++ b/docs/search/all_14.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['xml_0',['Get information out of XML',['../_example_3.html',1,'']]], + ['xml_20file_1',['Load an XML File',['../_example_1.html',1,'']]], + ['xml_20from_20char_20buffer_2',['Parse an XML from char buffer',['../_example_2.html',1,'']]], + ['xmlattribute_3',['XMLAttribute',['../classtinyxml2_1_1_x_m_l_attribute.html',1,'tinyxml2']]], + ['xmlcomment_4',['XMLComment',['../classtinyxml2_1_1_x_m_l_comment.html',1,'tinyxml2']]], + ['xmlconsthandle_5',['XMLConstHandle',['../classtinyxml2_1_1_x_m_l_const_handle.html',1,'tinyxml2']]], + ['xmldeclaration_6',['XMLDeclaration',['../classtinyxml2_1_1_x_m_l_declaration.html',1,'tinyxml2']]], + ['xmldocument_7',['XMLDocument',['../classtinyxml2_1_1_x_m_l_document.html',1,'tinyxml2::XMLDocument'],['../classtinyxml2_1_1_x_m_l_document.html#a57ddf17b6e054dda10af98991b1b8f70',1,'tinyxml2::XMLDocument::XMLDocument()']]], + ['xmlelement_8',['XMLElement',['../classtinyxml2_1_1_x_m_l_element.html',1,'tinyxml2']]], + ['xmlhandle_9',['XMLHandle',['../classtinyxml2_1_1_x_m_l_handle.html',1,'tinyxml2::XMLHandle'],['../classtinyxml2_1_1_x_m_l_handle.html#a9c240a35c18f053509b4b97ddccd9793',1,'tinyxml2::XMLHandle::XMLHandle(XMLNode *node)'],['../classtinyxml2_1_1_x_m_l_handle.html#aa2edbc1c0d3e3e8259bd98de7f1cf500',1,'tinyxml2::XMLHandle::XMLHandle(XMLNode &node)'],['../classtinyxml2_1_1_x_m_l_handle.html#afd8e01e6018c07347b8e6d80272466aa',1,'tinyxml2::XMLHandle::XMLHandle(const XMLHandle &ref)']]], + ['xmlnode_10',['XMLNode',['../classtinyxml2_1_1_x_m_l_node.html',1,'tinyxml2']]], + ['xmlprinter_11',['XMLPrinter',['../classtinyxml2_1_1_x_m_l_printer.html',1,'tinyxml2::XMLPrinter'],['../classtinyxml2_1_1_x_m_l_printer.html#aa6d3841c069085f5b8a27bc7103c04f7',1,'tinyxml2::XMLPrinter::XMLPrinter()']]], + ['xmltext_12',['XMLText',['../classtinyxml2_1_1_x_m_l_text.html',1,'tinyxml2']]], + ['xmlunknown_13',['XMLUnknown',['../classtinyxml2_1_1_x_m_l_unknown.html',1,'tinyxml2']]], + ['xmlvisitor_14',['XMLVisitor',['../classtinyxml2_1_1_x_m_l_visitor.html',1,'tinyxml2']]] +]; diff --git a/docs/search/all_2.js b/docs/search/all_2.js index 211e24e..afeff4b 100644 --- a/docs/search/all_2.js +++ b/docs/search/all_2.js @@ -1,10 +1,7 @@ var searchData= [ - ['cdata_5',['CData',['../classtinyxml2_1_1_x_m_l_text.html#ac1bb5ea4166c320882d9e0ad16fd385b',1,'tinyxml2::XMLText']]], - ['clear_6',['Clear',['../classtinyxml2_1_1_x_m_l_document.html#a65656b0b2cbc822708eb351504178aaf',1,'tinyxml2::XMLDocument']]], - ['clearbuffer_7',['ClearBuffer',['../classtinyxml2_1_1_x_m_l_printer.html#a690cb140ba98b7339734ff865f56b0b3',1,'tinyxml2::XMLPrinter']]], - ['clearerror_8',['ClearError',['../classtinyxml2_1_1_x_m_l_document.html#a4085d9c52f1d93214311459d6d1fcf17',1,'tinyxml2::XMLDocument']]], - ['closeelement_9',['CloseElement',['../classtinyxml2_1_1_x_m_l_printer.html#ad04d29562b46fcdb23ab320f8b664240',1,'tinyxml2::XMLPrinter']]], - ['cstr_10',['CStr',['../classtinyxml2_1_1_x_m_l_printer.html#a180671d73844f159f2d4aafbc11d106e',1,'tinyxml2::XMLPrinter']]], - ['cstrsize_11',['CStrSize',['../classtinyxml2_1_1_x_m_l_printer.html#a3256cf3523d4898b91abb18b924be04c',1,'tinyxml2::XMLPrinter']]] + ['boolattribute_0',['BoolAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a53eda26131e1ad1031ef8ec8adb51bd8',1,'tinyxml2::XMLElement']]], + ['booltext_1',['BoolText',['../classtinyxml2_1_1_x_m_l_element.html#a68569f59f6382bcea7f5013ec59736d2',1,'tinyxml2::XMLElement']]], + ['boolvalue_2',['BoolValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a98ce5207344ad33a265b0422addae1ff',1,'tinyxml2::XMLAttribute']]], + ['buffer_3',['Parse an XML from char buffer',['../_example_2.html',1,'']]] ]; diff --git a/docs/search/all_3.js b/docs/search/all_3.js index 6520bfa..7565a62 100644 --- a/docs/search/all_3.js +++ b/docs/search/all_3.js @@ -1,12 +1,11 @@ var searchData= [ - ['deepclone_12',['DeepClone',['../classtinyxml2_1_1_x_m_l_node.html#a62c71b6bf8734b5424063b8d9a61c266',1,'tinyxml2::XMLNode']]], - ['deepcopy_13',['DeepCopy',['../classtinyxml2_1_1_x_m_l_document.html#af592ffc91514e25a39664521ac83db45',1,'tinyxml2::XMLDocument']]], - ['deleteattribute_14',['DeleteAttribute',['../classtinyxml2_1_1_x_m_l_element.html#aebd45aa7118964c30b32fe12e944628a',1,'tinyxml2::XMLElement']]], - ['deletechild_15',['DeleteChild',['../classtinyxml2_1_1_x_m_l_node.html#a363b6edbd6ebd55f8387d2b89f2b0921',1,'tinyxml2::XMLNode']]], - ['deletechildren_16',['DeleteChildren',['../classtinyxml2_1_1_x_m_l_node.html#a0360085cc54df5bff85d5c5da13afdce',1,'tinyxml2::XMLNode']]], - ['deletenode_17',['DeleteNode',['../classtinyxml2_1_1_x_m_l_document.html#ac1d6e2c7fcc1a660624ac4f68e96380d',1,'tinyxml2::XMLDocument']]], - ['doubleattribute_18',['DoubleAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a10a90c505aea716bf073eea1c97f33b5',1,'tinyxml2::XMLElement']]], - ['doubletext_19',['DoubleText',['../classtinyxml2_1_1_x_m_l_element.html#a81b1ff0cf2f2cd09be8badc08b39a2b7',1,'tinyxml2::XMLElement']]], - ['doublevalue_20',['DoubleValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a4aa73513f54ff0087d3e804f0f54e30f',1,'tinyxml2::XMLAttribute']]] + ['cdata_0',['CData',['../classtinyxml2_1_1_x_m_l_text.html#ac1bb5ea4166c320882d9e0ad16fd385b',1,'tinyxml2::XMLText']]], + ['char_20buffer_1',['Parse an XML from char buffer',['../_example_2.html',1,'']]], + ['clear_2',['Clear',['../classtinyxml2_1_1_x_m_l_document.html#a65656b0b2cbc822708eb351504178aaf',1,'tinyxml2::XMLDocument']]], + ['clearbuffer_3',['ClearBuffer',['../classtinyxml2_1_1_x_m_l_printer.html#a690cb140ba98b7339734ff865f56b0b3',1,'tinyxml2::XMLPrinter']]], + ['clearerror_4',['ClearError',['../classtinyxml2_1_1_x_m_l_document.html#a4085d9c52f1d93214311459d6d1fcf17',1,'tinyxml2::XMLDocument']]], + ['closeelement_5',['CloseElement',['../classtinyxml2_1_1_x_m_l_printer.html#ad04d29562b46fcdb23ab320f8b664240',1,'tinyxml2::XMLPrinter']]], + ['cstr_6',['CStr',['../classtinyxml2_1_1_x_m_l_printer.html#abfa772366c44a17cdeb8aea294d57f78',1,'tinyxml2::XMLPrinter']]], + ['cstrsize_7',['CStrSize',['../classtinyxml2_1_1_x_m_l_printer.html#a3256cf3523d4898b91abb18b924be04c',1,'tinyxml2::XMLPrinter']]] ]; diff --git a/docs/search/all_4.js b/docs/search/all_4.js index 52bdc46..389526f 100644 --- a/docs/search/all_4.js +++ b/docs/search/all_4.js @@ -1,7 +1,12 @@ var searchData= [ - ['error_21',['Error',['../classtinyxml2_1_1_x_m_l_document.html#a34e6318e182e40e3cc4f4ba5d59ed9ed',1,'tinyxml2::XMLDocument']]], - ['errorid_22',['ErrorID',['../classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d',1,'tinyxml2::XMLDocument']]], - ['errorlinenum_23',['ErrorLineNum',['../classtinyxml2_1_1_x_m_l_document.html#a57400f816dbe7799ece33615ead9ab76',1,'tinyxml2::XMLDocument']]], - ['errorstr_24',['ErrorStr',['../classtinyxml2_1_1_x_m_l_document.html#ad75aa9d32c4e8b300655186808aa9abf',1,'tinyxml2::XMLDocument']]] + ['deepclone_0',['DeepClone',['../classtinyxml2_1_1_x_m_l_node.html#a3bb369fd733f1989b751d99a9417adab',1,'tinyxml2::XMLNode']]], + ['deepcopy_1',['DeepCopy',['../classtinyxml2_1_1_x_m_l_document.html#af592ffc91514e25a39664521ac83db45',1,'tinyxml2::XMLDocument']]], + ['deleteattribute_2',['DeleteAttribute',['../classtinyxml2_1_1_x_m_l_element.html#aebd45aa7118964c30b32fe12e944628a',1,'tinyxml2::XMLElement']]], + ['deletechild_3',['DeleteChild',['../classtinyxml2_1_1_x_m_l_node.html#a363b6edbd6ebd55f8387d2b89f2b0921',1,'tinyxml2::XMLNode']]], + ['deletechildren_4',['DeleteChildren',['../classtinyxml2_1_1_x_m_l_node.html#a0360085cc54df5bff85d5c5da13afdce',1,'tinyxml2::XMLNode']]], + ['deletenode_5',['DeleteNode',['../classtinyxml2_1_1_x_m_l_document.html#ac1d6e2c7fcc1a660624ac4f68e96380d',1,'tinyxml2::XMLDocument']]], + ['doubleattribute_6',['DoubleAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a10a90c505aea716bf073eea1c97f33b5',1,'tinyxml2::XMLElement']]], + ['doubletext_7',['DoubleText',['../classtinyxml2_1_1_x_m_l_element.html#a81b1ff0cf2f2cd09be8badc08b39a2b7',1,'tinyxml2::XMLElement']]], + ['doublevalue_8',['DoubleValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a4aa73513f54ff0087d3e804f0f54e30f',1,'tinyxml2::XMLAttribute']]] ]; diff --git a/docs/search/all_5.js b/docs/search/all_5.js index 1d4413a..45f017a 100644 --- a/docs/search/all_5.js +++ b/docs/search/all_5.js @@ -1,10 +1,7 @@ var searchData= [ - ['findattribute_25',['FindAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a2dcd4d5d6fb63396cd2f257c318b42c4',1,'tinyxml2::XMLElement']]], - ['firstattribute_26',['FirstAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a3e191704c8d499906ec11fe2f60c6686',1,'tinyxml2::XMLElement']]], - ['firstchild_27',['FirstChild',['../classtinyxml2_1_1_x_m_l_node.html#ae7dc225e1018cdd685f7563593a1fe08',1,'tinyxml2::XMLNode::FirstChild()'],['../classtinyxml2_1_1_x_m_l_handle.html#a536447dc7f54c0cd11e031dad94795ae',1,'tinyxml2::XMLHandle::FirstChild()']]], - ['firstchildelement_28',['FirstChildElement',['../classtinyxml2_1_1_x_m_l_node.html#a1795a35852dc8aae877cc8ded986e59b',1,'tinyxml2::XMLNode::FirstChildElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a74b04dd0f15e0bf01860e282b840b6a3',1,'tinyxml2::XMLHandle::FirstChildElement()']]], - ['floatattribute_29',['FloatAttribute',['../classtinyxml2_1_1_x_m_l_element.html#ab1f4be2332e27dc640e9b6abd01d64dd',1,'tinyxml2::XMLElement']]], - ['floattext_30',['FloatText',['../classtinyxml2_1_1_x_m_l_element.html#a45444eb21f99ca46101545992dc2e927',1,'tinyxml2::XMLElement']]], - ['floatvalue_31',['FloatValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a27797b45d21c981257720db94f5f8801',1,'tinyxml2::XMLAttribute']]] + ['error_0',['Error',['../classtinyxml2_1_1_x_m_l_document.html#a34e6318e182e40e3cc4f4ba5d59ed9ed',1,'tinyxml2::XMLDocument']]], + ['errorid_1',['ErrorID',['../classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d',1,'tinyxml2::XMLDocument']]], + ['errorlinenum_2',['ErrorLineNum',['../classtinyxml2_1_1_x_m_l_document.html#a57400f816dbe7799ece33615ead9ab76',1,'tinyxml2::XMLDocument']]], + ['errorstr_3',['ErrorStr',['../classtinyxml2_1_1_x_m_l_document.html#ae97fff2402a0d01e0509c430b37996b3',1,'tinyxml2::XMLDocument']]] ]; diff --git a/docs/search/all_6.js b/docs/search/all_6.js index 9dddc4f..c0f7a60 100644 --- a/docs/search/all_6.js +++ b/docs/search/all_6.js @@ -1,8 +1,12 @@ var searchData= [ - ['get_20information_20out_20of_20xml_32',['Get information out of XML',['../_example_3.html',1,'']]], - ['getdocument_33',['GetDocument',['../classtinyxml2_1_1_x_m_l_node.html#a2de84cfa4ec3fe249bad745069d145f1',1,'tinyxml2::XMLNode::GetDocument() const'],['../classtinyxml2_1_1_x_m_l_node.html#af343d1ef0b45c0020e62d784d7e67a68',1,'tinyxml2::XMLNode::GetDocument()']]], - ['getlinenum_34',['GetLineNum',['../classtinyxml2_1_1_x_m_l_node.html#a9b5fc636646fda761d342c72e91cb286',1,'tinyxml2::XMLNode::GetLineNum()'],['../classtinyxml2_1_1_x_m_l_attribute.html#a02d5ea924586e35f9c13857d1671b765',1,'tinyxml2::XMLAttribute::GetLineNum()']]], - ['gettext_35',['GetText',['../classtinyxml2_1_1_x_m_l_element.html#a6d5c8d115561ade4e4456b71d91b6f51',1,'tinyxml2::XMLElement']]], - ['getuserdata_36',['GetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a7f0687574afa03bc479dc44f29db0afe',1,'tinyxml2::XMLNode']]] + ['file_0',['Load an XML File',['../_example_1.html',1,'']]], + ['findattribute_1',['FindAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a157750dac8037a316fd1af1a973dfa2c',1,'tinyxml2::XMLElement']]], + ['firstattribute_2',['FirstAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a4a7c4392658833bb8138c474d15a805a',1,'tinyxml2::XMLElement']]], + ['firstchild_3',['FirstChild',['../classtinyxml2_1_1_x_m_l_node.html#abcc2e572dce329539689b426a0840661',1,'tinyxml2::XMLNode::FirstChild()'],['../classtinyxml2_1_1_x_m_l_handle.html#a536447dc7f54c0cd11e031dad94795ae',1,'tinyxml2::XMLHandle::FirstChild()']]], + ['firstchildelement_4',['FirstChildElement',['../classtinyxml2_1_1_x_m_l_node.html#a1bec132dcf085284e0a10755f2cf0d57',1,'tinyxml2::XMLNode::FirstChildElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a74b04dd0f15e0bf01860e282b840b6a3',1,'tinyxml2::XMLHandle::FirstChildElement()']]], + ['floatattribute_5',['FloatAttribute',['../classtinyxml2_1_1_x_m_l_element.html#ab1f4be2332e27dc640e9b6abd01d64dd',1,'tinyxml2::XMLElement']]], + ['floattext_6',['FloatText',['../classtinyxml2_1_1_x_m_l_element.html#a45444eb21f99ca46101545992dc2e927',1,'tinyxml2::XMLElement']]], + ['floatvalue_7',['FloatValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a27797b45d21c981257720db94f5f8801',1,'tinyxml2::XMLAttribute']]], + ['from_20char_20buffer_8',['Parse an XML from char buffer',['../_example_2.html',1,'']]] ]; diff --git a/docs/search/all_7.js b/docs/search/all_7.js index 118d61e..43a46e0 100644 --- a/docs/search/all_7.js +++ b/docs/search/all_7.js @@ -1,4 +1,8 @@ var searchData= [ - ['hasbom_37',['HasBOM',['../classtinyxml2_1_1_x_m_l_document.html#a33fc5d159db873a179fa26338adb05bd',1,'tinyxml2::XMLDocument']]] + ['get_20information_20out_20of_20xml_0',['Get information out of XML',['../_example_3.html',1,'']]], + ['getdocument_1',['GetDocument',['../classtinyxml2_1_1_x_m_l_node.html#a6ce3bbe80357f5a4dc5db31a66f2bb18',1,'tinyxml2::XMLNode::GetDocument() const'],['../classtinyxml2_1_1_x_m_l_node.html#a48d1695f7c834129e072548957a50501',1,'tinyxml2::XMLNode::GetDocument()']]], + ['getlinenum_2',['GetLineNum',['../classtinyxml2_1_1_x_m_l_node.html#a9b5fc636646fda761d342c72e91cb286',1,'tinyxml2::XMLNode::GetLineNum()'],['../classtinyxml2_1_1_x_m_l_attribute.html#a02d5ea924586e35f9c13857d1671b765',1,'tinyxml2::XMLAttribute::GetLineNum()']]], + ['gettext_3',['GetText',['../classtinyxml2_1_1_x_m_l_element.html#a0fa5bea0a4daf3ddd503dcabb823eba6',1,'tinyxml2::XMLElement']]], + ['getuserdata_4',['GetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a18cc02ebd0b06f6bf5db7ef87653e00e',1,'tinyxml2::XMLNode']]] ]; diff --git a/docs/search/all_8.js b/docs/search/all_8.js index 9256a19..ad18745 100644 --- a/docs/search/all_8.js +++ b/docs/search/all_8.js @@ -1,15 +1,4 @@ var searchData= [ - ['insertafterchild_38',['InsertAfterChild',['../classtinyxml2_1_1_x_m_l_node.html#a85adb8f0b7477eec30f9a41d420b09c2',1,'tinyxml2::XMLNode']]], - ['insertendchild_39',['InsertEndChild',['../classtinyxml2_1_1_x_m_l_node.html#aeb249ed60f4e8bfad3709151c3ee4286',1,'tinyxml2::XMLNode']]], - ['insertfirstchild_40',['InsertFirstChild',['../classtinyxml2_1_1_x_m_l_node.html#a8ff7dc071f3a1a6ae2ac25a37492865d',1,'tinyxml2::XMLNode']]], - ['insertnewchildelement_41',['InsertNewChildElement',['../classtinyxml2_1_1_x_m_l_element.html#abc9506eff9780f666f49dc3d5e5cae13',1,'tinyxml2::XMLElement']]], - ['insertnewcomment_42',['InsertNewComment',['../classtinyxml2_1_1_x_m_l_element.html#ae4f2c2e781b8dc030411d84cd20fa46d',1,'tinyxml2::XMLElement']]], - ['insertnewdeclaration_43',['InsertNewDeclaration',['../classtinyxml2_1_1_x_m_l_element.html#adec237e788b50c4ed73c918a166adde6',1,'tinyxml2::XMLElement']]], - ['insertnewtext_44',['InsertNewText',['../classtinyxml2_1_1_x_m_l_element.html#a189e155810fc9fdd4da1409cbadee187',1,'tinyxml2::XMLElement']]], - ['insertnewunknown_45',['InsertNewUnknown',['../classtinyxml2_1_1_x_m_l_element.html#acaa5fe3957760e68185006965e2c11c2',1,'tinyxml2::XMLElement']]], - ['int64attribute_46',['Int64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a66d96972adecd816194191f13cc4a0a0',1,'tinyxml2::XMLElement']]], - ['int64text_47',['Int64Text',['../classtinyxml2_1_1_x_m_l_element.html#aab6151f7e3b4c2c0a8234e262d7b6b8a',1,'tinyxml2::XMLElement']]], - ['intattribute_48',['IntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a95a89b13bb14a2d4655e2b5b406c00d4',1,'tinyxml2::XMLElement']]], - ['intvalue_49',['IntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#adfa2433f0fdafd5c3880936de9affa80',1,'tinyxml2::XMLAttribute']]] + ['hasbom_0',['HasBOM',['../classtinyxml2_1_1_x_m_l_document.html#a33fc5d159db873a179fa26338adb05bd',1,'tinyxml2::XMLDocument']]] ]; diff --git a/docs/search/all_9.js b/docs/search/all_9.js index f6023fe..d5de6eb 100644 --- a/docs/search/all_9.js +++ b/docs/search/all_9.js @@ -1,7 +1,17 @@ var searchData= [ - ['lastchild_50',['LastChild',['../classtinyxml2_1_1_x_m_l_node.html#a9b8583a277e8e26f4cbbb5492786778e',1,'tinyxml2::XMLNode::LastChild()'],['../classtinyxml2_1_1_x_m_l_handle.html#a9d09f04435f0f2f7d0816b0198d0517b',1,'tinyxml2::XMLHandle::LastChild()']]], - ['lastchildelement_51',['LastChildElement',['../classtinyxml2_1_1_x_m_l_node.html#a173e9d1341bc56992e2d320a35936551',1,'tinyxml2::XMLNode::LastChildElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a42cccd0ce8b1ce704f431025e9f19e0c',1,'tinyxml2::XMLHandle::LastChildElement()']]], - ['load_20an_20xml_20file_52',['Load an XML File',['../_example_1.html',1,'']]], - ['loadfile_53',['LoadFile',['../classtinyxml2_1_1_x_m_l_document.html#a2ebd4647a8af5fc6831b294ac26a150a',1,'tinyxml2::XMLDocument::LoadFile(const char *filename)'],['../classtinyxml2_1_1_x_m_l_document.html#a5f1d330fad44c52f3d265338dd2a6dc2',1,'tinyxml2::XMLDocument::LoadFile(FILE *)']]] + ['information_0',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['information_20out_20of_20xml_1',['Get information out of XML',['../_example_3.html',1,'']]], + ['insertafterchild_2',['InsertAfterChild',['../classtinyxml2_1_1_x_m_l_node.html#a9275138a1b8dd5d8e2c26789bdc23ac8',1,'tinyxml2::XMLNode']]], + ['insertendchild_3',['InsertEndChild',['../classtinyxml2_1_1_x_m_l_node.html#ae3b422e98914d6002ca99bb1d2837103',1,'tinyxml2::XMLNode']]], + ['insertfirstchild_4',['InsertFirstChild',['../classtinyxml2_1_1_x_m_l_node.html#ac609a8f3ea949027f439280c640bbaf2',1,'tinyxml2::XMLNode']]], + ['insertnewchildelement_5',['InsertNewChildElement',['../classtinyxml2_1_1_x_m_l_element.html#abf01fdeb702165fddbc97bcc8af8a1ad',1,'tinyxml2::XMLElement']]], + ['insertnewcomment_6',['InsertNewComment',['../classtinyxml2_1_1_x_m_l_element.html#aaed36d3a8082b083ec4f1de55ee68cc2',1,'tinyxml2::XMLElement']]], + ['insertnewdeclaration_7',['InsertNewDeclaration',['../classtinyxml2_1_1_x_m_l_element.html#a7f11671a928649add7e3e18de7adf84a',1,'tinyxml2::XMLElement']]], + ['insertnewtext_8',['InsertNewText',['../classtinyxml2_1_1_x_m_l_element.html#ac30367a5e25ff30e178b56e0e1456d23',1,'tinyxml2::XMLElement']]], + ['insertnewunknown_9',['InsertNewUnknown',['../classtinyxml2_1_1_x_m_l_element.html#afe6cfefb48f8fbcb29a790f2042b55a4',1,'tinyxml2::XMLElement']]], + ['int64attribute_10',['Int64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a66d96972adecd816194191f13cc4a0a0',1,'tinyxml2::XMLElement']]], + ['int64text_11',['Int64Text',['../classtinyxml2_1_1_x_m_l_element.html#aab6151f7e3b4c2c0a8234e262d7b6b8a',1,'tinyxml2::XMLElement']]], + ['intattribute_12',['IntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a95a89b13bb14a2d4655e2b5b406c00d4',1,'tinyxml2::XMLElement']]], + ['intvalue_13',['IntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#adfa2433f0fdafd5c3880936de9affa80',1,'tinyxml2::XMLAttribute']]] ]; diff --git a/docs/search/all_a.js b/docs/search/all_a.js index 5211f98..474fb71 100644 --- a/docs/search/all_a.js +++ b/docs/search/all_a.js @@ -1,13 +1,7 @@ var searchData= [ - ['name_54',['Name',['../classtinyxml2_1_1_x_m_l_attribute.html#ab886c486ec19f02ed826f8dc129e5ad8',1,'tinyxml2::XMLAttribute::Name()'],['../classtinyxml2_1_1_x_m_l_element.html#a63e057fb5baee1dd29f323cb85907b35',1,'tinyxml2::XMLElement::Name()']]], - ['newcomment_55',['NewComment',['../classtinyxml2_1_1_x_m_l_document.html#ade4874bcb439954972ef2b3723ff3259',1,'tinyxml2::XMLDocument']]], - ['newdeclaration_56',['NewDeclaration',['../classtinyxml2_1_1_x_m_l_document.html#aee2eb3435923f5494dcc70ac225b60a2',1,'tinyxml2::XMLDocument']]], - ['newelement_57',['NewElement',['../classtinyxml2_1_1_x_m_l_document.html#a8aa7817d4a1001364b06373763ab99d6',1,'tinyxml2::XMLDocument']]], - ['newtext_58',['NewText',['../classtinyxml2_1_1_x_m_l_document.html#ab7e8b29ae4099092a8bb947da6361296',1,'tinyxml2::XMLDocument']]], - ['newunknown_59',['NewUnknown',['../classtinyxml2_1_1_x_m_l_document.html#a5385c937734ff6db9226ab707d2c7147',1,'tinyxml2::XMLDocument']]], - ['next_60',['Next',['../classtinyxml2_1_1_x_m_l_attribute.html#aee53571b21e7ce5421eb929523a8bbe6',1,'tinyxml2::XMLAttribute']]], - ['nextsibling_61',['NextSibling',['../classtinyxml2_1_1_x_m_l_node.html#a79db9ef0fe014d27790f2218b87bcbb5',1,'tinyxml2::XMLNode::NextSibling()'],['../classtinyxml2_1_1_x_m_l_handle.html#aad2eccc7c7c7b18145877c978c3850b5',1,'tinyxml2::XMLHandle::NextSibling()']]], - ['nextsiblingelement_62',['NextSiblingElement',['../classtinyxml2_1_1_x_m_l_node.html#a1264c86233328f0cd36297552d982f80',1,'tinyxml2::XMLNode::NextSiblingElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#ae41d88ee061f3c49a081630ff753b2c5',1,'tinyxml2::XMLHandle::NextSiblingElement()']]], - ['nochildren_63',['NoChildren',['../classtinyxml2_1_1_x_m_l_node.html#ac3ab489e6e202a3cd1762d3b332e89d4',1,'tinyxml2::XMLNode']]] + ['lastchild_0',['LastChild',['../classtinyxml2_1_1_x_m_l_node.html#a69a29bb8263ff5e9815be180bf27e7af',1,'tinyxml2::XMLNode::LastChild()'],['../classtinyxml2_1_1_x_m_l_handle.html#a9d09f04435f0f2f7d0816b0198d0517b',1,'tinyxml2::XMLHandle::LastChild()']]], + ['lastchildelement_1',['LastChildElement',['../classtinyxml2_1_1_x_m_l_node.html#a609e02f02044f39b928d1a3e0de9f532',1,'tinyxml2::XMLNode::LastChildElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a42cccd0ce8b1ce704f431025e9f19e0c',1,'tinyxml2::XMLHandle::LastChildElement()']]], + ['load_20an_20xml_20file_2',['Load an XML File',['../_example_1.html',1,'']]], + ['loadfile_3',['LoadFile',['../classtinyxml2_1_1_x_m_l_document.html#a2ebd4647a8af5fc6831b294ac26a150a',1,'tinyxml2::XMLDocument::LoadFile(const char *filename)'],['../classtinyxml2_1_1_x_m_l_document.html#a5f1d330fad44c52f3d265338dd2a6dc2',1,'tinyxml2::XMLDocument::LoadFile(FILE *)']]] ]; diff --git a/docs/search/all_b.js b/docs/search/all_b.js index 38c0c2a..acaea4f 100644 --- a/docs/search/all_b.js +++ b/docs/search/all_b.js @@ -1,5 +1,13 @@ var searchData= [ - ['openelement_64',['OpenElement',['../classtinyxml2_1_1_x_m_l_printer.html#a20fb06c83bd13e5140d7dd13af06c010',1,'tinyxml2::XMLPrinter']]], - ['operator_3d_65',['operator=',['../classtinyxml2_1_1_x_m_l_handle.html#a75b908322bb4b83be3281b6845252b20',1,'tinyxml2::XMLHandle']]] + ['name_0',['Name',['../classtinyxml2_1_1_x_m_l_attribute.html#a5a5c135d24cce7abda6f17301c6274d8',1,'tinyxml2::XMLAttribute::Name()'],['../classtinyxml2_1_1_x_m_l_element.html#abd36e34e4428a8eeeffbe87eab0b124d',1,'tinyxml2::XMLElement::Name()']]], + ['newcomment_1',['NewComment',['../classtinyxml2_1_1_x_m_l_document.html#a386df0befd06aadb5e0cd21381aa955a',1,'tinyxml2::XMLDocument']]], + ['newdeclaration_2',['NewDeclaration',['../classtinyxml2_1_1_x_m_l_document.html#ae519030c0262fa2daff8993681990e16',1,'tinyxml2::XMLDocument']]], + ['newelement_3',['NewElement',['../classtinyxml2_1_1_x_m_l_document.html#a3c335a700a43d7c363a393142a23f234',1,'tinyxml2::XMLDocument']]], + ['newtext_4',['NewText',['../classtinyxml2_1_1_x_m_l_document.html#acece5de77a0819f2341b08c1e1ed9987',1,'tinyxml2::XMLDocument']]], + ['newunknown_5',['NewUnknown',['../classtinyxml2_1_1_x_m_l_document.html#a4954f502c5fd7f49de54c3c0c99bb73d',1,'tinyxml2::XMLDocument']]], + ['next_6',['Next',['../classtinyxml2_1_1_x_m_l_attribute.html#aa8c7cf4c94a636ae75046658e551614e',1,'tinyxml2::XMLAttribute']]], + ['nextsibling_7',['NextSibling',['../classtinyxml2_1_1_x_m_l_node.html#af986c568061b020cf6232bec091388c0',1,'tinyxml2::XMLNode::NextSibling()'],['../classtinyxml2_1_1_x_m_l_handle.html#aad2eccc7c7c7b18145877c978c3850b5',1,'tinyxml2::XMLHandle::NextSibling()']]], + ['nextsiblingelement_8',['NextSiblingElement',['../classtinyxml2_1_1_x_m_l_node.html#a14ea560df31110ff07a9f566171bf797',1,'tinyxml2::XMLNode::NextSiblingElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#ae41d88ee061f3c49a081630ff753b2c5',1,'tinyxml2::XMLHandle::NextSiblingElement()']]], + ['nochildren_9',['NoChildren',['../classtinyxml2_1_1_x_m_l_node.html#ac3ab489e6e202a3cd1762d3b332e89d4',1,'tinyxml2::XMLNode']]] ]; diff --git a/docs/search/all_c.js b/docs/search/all_c.js index 1ec4319..6f24aaf 100644 --- a/docs/search/all_c.js +++ b/docs/search/all_c.js @@ -1,15 +1,7 @@ var searchData= [ - ['parent_66',['Parent',['../classtinyxml2_1_1_x_m_l_node.html#ae0f62bc186c56c2e0483ebd52dbfbe34',1,'tinyxml2::XMLNode']]], - ['parse_67',['Parse',['../classtinyxml2_1_1_x_m_l_document.html#af2b616169e6517182f6725f2498e9a01',1,'tinyxml2::XMLDocument']]], - ['parse_20an_20xml_20from_20char_20buffer_68',['Parse an XML from char buffer',['../_example_2.html',1,'']]], - ['previoussibling_69',['PreviousSibling',['../classtinyxml2_1_1_x_m_l_node.html#aac667c513d445f8b783e1e15ef9d3551',1,'tinyxml2::XMLNode::PreviousSibling()'],['../classtinyxml2_1_1_x_m_l_handle.html#a428374e756f4db4cbc287fec64eae02c',1,'tinyxml2::XMLHandle::PreviousSibling()']]], - ['previoussiblingelement_70',['PreviousSiblingElement',['../classtinyxml2_1_1_x_m_l_node.html#a872936cae46fb473eb47fec99129fc70',1,'tinyxml2::XMLNode::PreviousSiblingElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a786957e498039554ed334cdc36612a7e',1,'tinyxml2::XMLHandle::PreviousSiblingElement()']]], - ['print_71',['Print',['../classtinyxml2_1_1_x_m_l_document.html#a867cf5fa3e3ff6ae4847a8b7ee8ec083',1,'tinyxml2::XMLDocument']]], - ['printerror_72',['PrintError',['../classtinyxml2_1_1_x_m_l_document.html#a1d033945b42e125d933d6231e4571552',1,'tinyxml2::XMLDocument']]], - ['printspace_73',['PrintSpace',['../classtinyxml2_1_1_x_m_l_printer.html#a01148e2ebe6776e38c5a3e41bc5feb74',1,'tinyxml2::XMLPrinter']]], - ['pushattribute_74',['PushAttribute',['../classtinyxml2_1_1_x_m_l_printer.html#a9a4e2c9348b42e147629d5a99f4af3f0',1,'tinyxml2::XMLPrinter']]], - ['pushcomment_75',['PushComment',['../classtinyxml2_1_1_x_m_l_printer.html#afc8416814219591c2fd5656e0c233140',1,'tinyxml2::XMLPrinter']]], - ['pushheader_76',['PushHeader',['../classtinyxml2_1_1_x_m_l_printer.html#a178c608ce8476043d5d6513819cde903',1,'tinyxml2::XMLPrinter']]], - ['pushtext_77',['PushText',['../classtinyxml2_1_1_x_m_l_printer.html#a1cc16a9362df4332012cb13cff6441b3',1,'tinyxml2::XMLPrinter::PushText(const char *text, bool cdata=false)'],['../classtinyxml2_1_1_x_m_l_printer.html#a3e0d4d78de25d4cf081009e1431cea7e',1,'tinyxml2::XMLPrinter::PushText(int value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a661fb50e7e0a4918d2d259cb0fae647e',1,'tinyxml2::XMLPrinter::PushText(unsigned value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a96b0a0bfe105154a0a6c37d725258f0a',1,'tinyxml2::XMLPrinter::PushText(int64_t value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a60b0a4cf57371ff8679c2c7556ccb708',1,'tinyxml2::XMLPrinter::PushText(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a4390e5fa1ed05189a8686647345ab29f',1,'tinyxml2::XMLPrinter::PushText(bool value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a1dbb1390e829d0673af66b9cd1928bd7',1,'tinyxml2::XMLPrinter::PushText(float value)'],['../classtinyxml2_1_1_x_m_l_printer.html#aa715302dfc09473c77c853cbd5431965',1,'tinyxml2::XMLPrinter::PushText(double value)']]] + ['of_20xml_0',['Get information out of XML',['../_example_3.html',1,'']]], + ['openelement_1',['OpenElement',['../classtinyxml2_1_1_x_m_l_printer.html#a20fb06c83bd13e5140d7dd13af06c010',1,'tinyxml2::XMLPrinter']]], + ['operator_3d_2',['operator=',['../classtinyxml2_1_1_x_m_l_handle.html#aa07c9a53f78d7b2dc1018668641521d8',1,'tinyxml2::XMLHandle']]], + ['out_20of_20xml_3',['Get information out of XML',['../_example_3.html',1,'']]] ]; diff --git a/docs/search/all_d.js b/docs/search/all_d.js index cab2932..32d019a 100644 --- a/docs/search/all_d.js +++ b/docs/search/all_d.js @@ -1,26 +1,15 @@ var searchData= [ - ['queryattribute_78',['QueryAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a5b7df3bed2b8954eabf227fa204522eb',1,'tinyxml2::XMLElement']]], - ['queryboolattribute_79',['QueryBoolAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872',1,'tinyxml2::XMLElement']]], - ['querybooltext_80',['QueryBoolText',['../classtinyxml2_1_1_x_m_l_element.html#a3fe5417d59eb8f5c4afe924b7d332736',1,'tinyxml2::XMLElement']]], - ['queryboolvalue_81',['QueryBoolValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a5f32e038954256f61c21ff20fd13a09c',1,'tinyxml2::XMLAttribute']]], - ['querydoubleattribute_82',['QueryDoubleAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a5f0964e2dbd8e2ee7fce9beab689443c',1,'tinyxml2::XMLElement']]], - ['querydoubletext_83',['QueryDoubleText',['../classtinyxml2_1_1_x_m_l_element.html#a684679c99bb036a25652744cec6c4d96',1,'tinyxml2::XMLElement']]], - ['querydoublevalue_84',['QueryDoubleValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a2aa6e55e8ea03af0609cf6690bff79b9',1,'tinyxml2::XMLAttribute']]], - ['queryfloatattribute_85',['QueryFloatAttribute',['../classtinyxml2_1_1_x_m_l_element.html#acd5eeddf6002ef90806af794b9d9a5a5',1,'tinyxml2::XMLElement']]], - ['queryfloattext_86',['QueryFloatText',['../classtinyxml2_1_1_x_m_l_element.html#afa332afedd93210daa6d44b88eb11e29',1,'tinyxml2::XMLElement']]], - ['queryfloatvalue_87',['QueryFloatValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a049dea6449a6259b6cfed44a9427b607',1,'tinyxml2::XMLAttribute']]], - ['queryint64attribute_88',['QueryInt64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a7c0955d80b6f8d196744eacb0f6e90a8',1,'tinyxml2::XMLElement']]], - ['queryint64text_89',['QueryInt64Text',['../classtinyxml2_1_1_x_m_l_element.html#a120c538c8eead169e635dbc70fb226d8',1,'tinyxml2::XMLElement']]], - ['queryint64value_90',['QueryInt64Value',['../classtinyxml2_1_1_x_m_l_attribute.html#a4e25344d6e4159026be34dbddf1dcac2',1,'tinyxml2::XMLAttribute']]], - ['queryintattribute_91',['QueryIntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1',1,'tinyxml2::XMLElement']]], - ['queryinttext_92',['QueryIntText',['../classtinyxml2_1_1_x_m_l_element.html#a926357996bef633cb736e1a558419632',1,'tinyxml2::XMLElement']]], - ['queryintvalue_93',['QueryIntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a6d5176260db00ea301c01af8457cd993',1,'tinyxml2::XMLAttribute']]], - ['querystringattribute_94',['QueryStringAttribute',['../classtinyxml2_1_1_x_m_l_element.html#adb8ae765f98d0c5037faec48deea78bc',1,'tinyxml2::XMLElement']]], - ['queryunsigned64attribute_95',['QueryUnsigned64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a13dd590b5d3958ce2ed79844aacd9405',1,'tinyxml2::XMLElement']]], - ['queryunsigned64text_96',['QueryUnsigned64Text',['../classtinyxml2_1_1_x_m_l_element.html#ac2239b3bd172ad8f5b78d04d4236144b',1,'tinyxml2::XMLElement']]], - ['queryunsigned64value_97',['QueryUnsigned64Value',['../classtinyxml2_1_1_x_m_l_attribute.html#af793c695e7ee65cf20b8010d38b1d157',1,'tinyxml2::XMLAttribute']]], - ['queryunsignedattribute_98',['QueryUnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f',1,'tinyxml2::XMLElement']]], - ['queryunsignedtext_99',['QueryUnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a14d38aa4b5e18a46274a27425188a6a1',1,'tinyxml2::XMLElement']]], - ['queryunsignedvalue_100',['QueryUnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a48a7f3496f1415832e451bd8d09c9cb9',1,'tinyxml2::XMLAttribute']]] + ['parent_0',['Parent',['../classtinyxml2_1_1_x_m_l_node.html#a4d76b30d1bf4b166d3e4fa3419d51595',1,'tinyxml2::XMLNode']]], + ['parse_1',['Parse',['../classtinyxml2_1_1_x_m_l_document.html#af2b616169e6517182f6725f2498e9a01',1,'tinyxml2::XMLDocument']]], + ['parse_20an_20xml_20from_20char_20buffer_2',['Parse an XML from char buffer',['../_example_2.html',1,'']]], + ['previoussibling_3',['PreviousSibling',['../classtinyxml2_1_1_x_m_l_node.html#a92ee96b0d8628bc609f1d34e56d69dfa',1,'tinyxml2::XMLNode::PreviousSibling()'],['../classtinyxml2_1_1_x_m_l_handle.html#a428374e756f4db4cbc287fec64eae02c',1,'tinyxml2::XMLHandle::PreviousSibling()']]], + ['previoussiblingelement_4',['PreviousSiblingElement',['../classtinyxml2_1_1_x_m_l_node.html#a9453cda5e970375a7b1b2099f8a7c40a',1,'tinyxml2::XMLNode::PreviousSiblingElement()'],['../classtinyxml2_1_1_x_m_l_handle.html#a786957e498039554ed334cdc36612a7e',1,'tinyxml2::XMLHandle::PreviousSiblingElement()']]], + ['print_5',['Print',['../classtinyxml2_1_1_x_m_l_document.html#a867cf5fa3e3ff6ae4847a8b7ee8ec083',1,'tinyxml2::XMLDocument']]], + ['printerror_6',['PrintError',['../classtinyxml2_1_1_x_m_l_document.html#a1d033945b42e125d933d6231e4571552',1,'tinyxml2::XMLDocument']]], + ['printspace_7',['PrintSpace',['../classtinyxml2_1_1_x_m_l_printer.html#a01148e2ebe6776e38c5a3e41bc5feb74',1,'tinyxml2::XMLPrinter']]], + ['pushattribute_8',['PushAttribute',['../classtinyxml2_1_1_x_m_l_printer.html#a9a4e2c9348b42e147629d5a99f4af3f0',1,'tinyxml2::XMLPrinter']]], + ['pushcomment_9',['PushComment',['../classtinyxml2_1_1_x_m_l_printer.html#afc8416814219591c2fd5656e0c233140',1,'tinyxml2::XMLPrinter']]], + ['pushheader_10',['PushHeader',['../classtinyxml2_1_1_x_m_l_printer.html#a178c608ce8476043d5d6513819cde903',1,'tinyxml2::XMLPrinter']]], + ['pushtext_11',['PushText',['../classtinyxml2_1_1_x_m_l_printer.html#a1cc16a9362df4332012cb13cff6441b3',1,'tinyxml2::XMLPrinter::PushText(const char *text, bool cdata=false)'],['../classtinyxml2_1_1_x_m_l_printer.html#a3e0d4d78de25d4cf081009e1431cea7e',1,'tinyxml2::XMLPrinter::PushText(int value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a661fb50e7e0a4918d2d259cb0fae647e',1,'tinyxml2::XMLPrinter::PushText(unsigned value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a96b0a0bfe105154a0a6c37d725258f0a',1,'tinyxml2::XMLPrinter::PushText(int64_t value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a60b0a4cf57371ff8679c2c7556ccb708',1,'tinyxml2::XMLPrinter::PushText(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a4390e5fa1ed05189a8686647345ab29f',1,'tinyxml2::XMLPrinter::PushText(bool value)'],['../classtinyxml2_1_1_x_m_l_printer.html#a1dbb1390e829d0673af66b9cd1928bd7',1,'tinyxml2::XMLPrinter::PushText(float value)'],['../classtinyxml2_1_1_x_m_l_printer.html#aa715302dfc09473c77c853cbd5431965',1,'tinyxml2::XMLPrinter::PushText(double value)']]] ]; diff --git a/docs/search/all_e.js b/docs/search/all_e.js index 0ccf8e1..c090f7a 100644 --- a/docs/search/all_e.js +++ b/docs/search/all_e.js @@ -1,5 +1,26 @@ var searchData= [ - ['read_20attributes_20and_20text_20information_2e_101',['Read attributes and text information.',['../_example_4.html',1,'']]], - ['rootelement_102',['RootElement',['../classtinyxml2_1_1_x_m_l_document.html#ad2b70320d3c2a071c2f36928edff3e1c',1,'tinyxml2::XMLDocument']]] + ['queryattribute_0',['QueryAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a5b7df3bed2b8954eabf227fa204522eb',1,'tinyxml2::XMLElement']]], + ['queryboolattribute_1',['QueryBoolAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872',1,'tinyxml2::XMLElement']]], + ['querybooltext_2',['QueryBoolText',['../classtinyxml2_1_1_x_m_l_element.html#a3fe5417d59eb8f5c4afe924b7d332736',1,'tinyxml2::XMLElement']]], + ['queryboolvalue_3',['QueryBoolValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a5f32e038954256f61c21ff20fd13a09c',1,'tinyxml2::XMLAttribute']]], + ['querydoubleattribute_4',['QueryDoubleAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a5f0964e2dbd8e2ee7fce9beab689443c',1,'tinyxml2::XMLElement']]], + ['querydoubletext_5',['QueryDoubleText',['../classtinyxml2_1_1_x_m_l_element.html#a684679c99bb036a25652744cec6c4d96',1,'tinyxml2::XMLElement']]], + ['querydoublevalue_6',['QueryDoubleValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a2aa6e55e8ea03af0609cf6690bff79b9',1,'tinyxml2::XMLAttribute']]], + ['queryfloatattribute_7',['QueryFloatAttribute',['../classtinyxml2_1_1_x_m_l_element.html#acd5eeddf6002ef90806af794b9d9a5a5',1,'tinyxml2::XMLElement']]], + ['queryfloattext_8',['QueryFloatText',['../classtinyxml2_1_1_x_m_l_element.html#afa332afedd93210daa6d44b88eb11e29',1,'tinyxml2::XMLElement']]], + ['queryfloatvalue_9',['QueryFloatValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a049dea6449a6259b6cfed44a9427b607',1,'tinyxml2::XMLAttribute']]], + ['queryint64attribute_10',['QueryInt64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a7c0955d80b6f8d196744eacb0f6e90a8',1,'tinyxml2::XMLElement']]], + ['queryint64text_11',['QueryInt64Text',['../classtinyxml2_1_1_x_m_l_element.html#a120c538c8eead169e635dbc70fb226d8',1,'tinyxml2::XMLElement']]], + ['queryint64value_12',['QueryInt64Value',['../classtinyxml2_1_1_x_m_l_attribute.html#a4e25344d6e4159026be34dbddf1dcac2',1,'tinyxml2::XMLAttribute']]], + ['queryintattribute_13',['QueryIntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1',1,'tinyxml2::XMLElement']]], + ['queryinttext_14',['QueryIntText',['../classtinyxml2_1_1_x_m_l_element.html#a926357996bef633cb736e1a558419632',1,'tinyxml2::XMLElement']]], + ['queryintvalue_15',['QueryIntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a6d5176260db00ea301c01af8457cd993',1,'tinyxml2::XMLAttribute']]], + ['querystringattribute_16',['QueryStringAttribute',['../classtinyxml2_1_1_x_m_l_element.html#adb8ae765f98d0c5037faec48deea78bc',1,'tinyxml2::XMLElement']]], + ['queryunsigned64attribute_17',['QueryUnsigned64Attribute',['../classtinyxml2_1_1_x_m_l_element.html#a13dd590b5d3958ce2ed79844aacd9405',1,'tinyxml2::XMLElement']]], + ['queryunsigned64text_18',['QueryUnsigned64Text',['../classtinyxml2_1_1_x_m_l_element.html#ac2239b3bd172ad8f5b78d04d4236144b',1,'tinyxml2::XMLElement']]], + ['queryunsigned64value_19',['QueryUnsigned64Value',['../classtinyxml2_1_1_x_m_l_attribute.html#af793c695e7ee65cf20b8010d38b1d157',1,'tinyxml2::XMLAttribute']]], + ['queryunsignedattribute_20',['QueryUnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f',1,'tinyxml2::XMLElement']]], + ['queryunsignedtext_21',['QueryUnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a14d38aa4b5e18a46274a27425188a6a1',1,'tinyxml2::XMLElement']]], + ['queryunsignedvalue_22',['QueryUnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a48a7f3496f1415832e451bd8d09c9cb9',1,'tinyxml2::XMLAttribute']]] ]; diff --git a/docs/search/all_f.js b/docs/search/all_f.js index 54bdc74..404f651 100644 --- a/docs/search/all_f.js +++ b/docs/search/all_f.js @@ -1,13 +1,5 @@ var searchData= [ - ['savefile_103',['SaveFile',['../classtinyxml2_1_1_x_m_l_document.html#a73ac416b4a2aa0952e841220eb3da18f',1,'tinyxml2::XMLDocument::SaveFile(const char *filename, bool compact=false)'],['../classtinyxml2_1_1_x_m_l_document.html#a8b95779479a0035acc67b3a61dfe1b74',1,'tinyxml2::XMLDocument::SaveFile(FILE *fp, bool compact=false)']]], - ['setattribute_104',['SetAttribute',['../classtinyxml2_1_1_x_m_l_attribute.html#a406d2c4a13c7af99a65edb59dd9f7581',1,'tinyxml2::XMLAttribute::SetAttribute(const char *value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ad86d7d7058d76761c3a80662566a57e5',1,'tinyxml2::XMLAttribute::SetAttribute(int value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ae70468c0f6df2748ba3529c716999fae',1,'tinyxml2::XMLAttribute::SetAttribute(unsigned value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a7c1240f479722b9aa29b6c030aa116c2',1,'tinyxml2::XMLAttribute::SetAttribute(int64_t value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a10964060a5c0d92486ecf8705bdf37da',1,'tinyxml2::XMLAttribute::SetAttribute(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ab3516def4fe058fe328f2b89fc2d77da',1,'tinyxml2::XMLAttribute::SetAttribute(bool value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#a9a65ab3147abe8ccbbd373ce8791e818',1,'tinyxml2::XMLAttribute::SetAttribute(double value)'],['../classtinyxml2_1_1_x_m_l_attribute.html#ae95e843313aaf5d56c32530b6456df02',1,'tinyxml2::XMLAttribute::SetAttribute(float value)'],['../classtinyxml2_1_1_x_m_l_element.html#a11943abf2d0831548c3790dd5d9f119c',1,'tinyxml2::XMLElement::SetAttribute(const char *name, const char *value)'],['../classtinyxml2_1_1_x_m_l_element.html#aae6568c64c7f1cc88be8461ba41a79cf',1,'tinyxml2::XMLElement::SetAttribute(const char *name, int value)'],['../classtinyxml2_1_1_x_m_l_element.html#ae143997e90064ba82326b29a9930ea8f',1,'tinyxml2::XMLElement::SetAttribute(const char *name, unsigned value)'],['../classtinyxml2_1_1_x_m_l_element.html#aaeefdf9171fec91b13a776b42299b0dd',1,'tinyxml2::XMLElement::SetAttribute(const char *name, int64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#ad598868c0599ddc4695dab18552c308d',1,'tinyxml2::XMLElement::SetAttribute(const char *name, uint64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#aa848b696e6a75e4e545c6da9893b11e1',1,'tinyxml2::XMLElement::SetAttribute(const char *name, bool value)'],['../classtinyxml2_1_1_x_m_l_element.html#a233397ee81e70eb5d4b814c5f8698533',1,'tinyxml2::XMLElement::SetAttribute(const char *name, double value)'],['../classtinyxml2_1_1_x_m_l_element.html#a554b70d882e65b28fc084b23df9b9759',1,'tinyxml2::XMLElement::SetAttribute(const char *name, float value)']]], - ['setbom_105',['SetBOM',['../classtinyxml2_1_1_x_m_l_document.html#a14419b698f7c4b140df4e80f3f0c93b0',1,'tinyxml2::XMLDocument']]], - ['setcdata_106',['SetCData',['../classtinyxml2_1_1_x_m_l_text.html#ad080357d76ab7cc59d7651249949329d',1,'tinyxml2::XMLText']]], - ['setname_107',['SetName',['../classtinyxml2_1_1_x_m_l_element.html#a97712009a530d8cb8a63bf705f02b4f1',1,'tinyxml2::XMLElement']]], - ['settext_108',['SetText',['../classtinyxml2_1_1_x_m_l_element.html#a1f9c2cd61b72af5ae708d37b7ad283ce',1,'tinyxml2::XMLElement::SetText(const char *inText)'],['../classtinyxml2_1_1_x_m_l_element.html#aeae8917b5ea6060b3c08d4e3d8d632d7',1,'tinyxml2::XMLElement::SetText(int value)'],['../classtinyxml2_1_1_x_m_l_element.html#a7bbfcc11d516598bc924a8fba4d08597',1,'tinyxml2::XMLElement::SetText(unsigned value)'],['../classtinyxml2_1_1_x_m_l_element.html#a7b62cd33acdfeff7ea2b1b330d4368e4',1,'tinyxml2::XMLElement::SetText(int64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#a6e615bc745afd1ca8ded56d7aac02657',1,'tinyxml2::XMLElement::SetText(uint64_t value)'],['../classtinyxml2_1_1_x_m_l_element.html#ae4b543d6770de76fb6ab68e541c192a4',1,'tinyxml2::XMLElement::SetText(bool value)'],['../classtinyxml2_1_1_x_m_l_element.html#a67bd77ac9aaeff58ff20b4275a65ba4e',1,'tinyxml2::XMLElement::SetText(double value)'],['../classtinyxml2_1_1_x_m_l_element.html#a51d560da5ae3ad6b75e0ab9ffb2ae42a',1,'tinyxml2::XMLElement::SetText(float value)']]], - ['setuserdata_109',['SetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a002978fc889cc011d143185f2377eca2',1,'tinyxml2::XMLNode']]], - ['setvalue_110',['SetValue',['../classtinyxml2_1_1_x_m_l_node.html#a09dd68cf9eae137579f6e50f36487513',1,'tinyxml2::XMLNode']]], - ['shallowclone_111',['ShallowClone',['../classtinyxml2_1_1_x_m_l_node.html#a8402cbd3129d20e9e6024bbcc0531283',1,'tinyxml2::XMLNode::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_text.html#af3a81ed4dd49d5151c477b3f265a3011',1,'tinyxml2::XMLText::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_comment.html#a08991cc63fadf7e95078ac4f9ea1b073',1,'tinyxml2::XMLComment::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_declaration.html#a118d47518dd9e522644e42efa259aed7',1,'tinyxml2::XMLDeclaration::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a0125f41c89763dea06619b5fd5246b4c',1,'tinyxml2::XMLUnknown::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_element.html#ac035742d68b0c50c3f676374e59fe750',1,'tinyxml2::XMLElement::ShallowClone()'],['../classtinyxml2_1_1_x_m_l_document.html#aa37cc1709d7e1e988bc17dcfb24a69b8',1,'tinyxml2::XMLDocument::ShallowClone()']]], - ['shallowequal_112',['ShallowEqual',['../classtinyxml2_1_1_x_m_l_node.html#a7ce18b751c3ea09eac292dca264f9226',1,'tinyxml2::XMLNode::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_text.html#ae0fff8a24e2de7eb073fd192e9db0331',1,'tinyxml2::XMLText::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_comment.html#a6f7d227b25afa8cc3c763b7cc8833739',1,'tinyxml2::XMLComment::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_declaration.html#aa26b70011694e9b9e9480b929e9b78d6',1,'tinyxml2::XMLDeclaration::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_unknown.html#a0715ab2c05d7f74845c188122213b116',1,'tinyxml2::XMLUnknown::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_element.html#ad9ea913a460b48979bd83cf9871c99f6',1,'tinyxml2::XMLElement::ShallowEqual()'],['../classtinyxml2_1_1_x_m_l_document.html#a6fe5ef18699091844fcf64b56ffa5bf9',1,'tinyxml2::XMLDocument::ShallowEqual()']]] + ['read_20attributes_20and_20text_20information_0',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['rootelement_1',['RootElement',['../classtinyxml2_1_1_x_m_l_document.html#a0e6855771cbe87d839fb301d3646f5b8',1,'tinyxml2::XMLDocument']]] ]; diff --git a/docs/search/classes_0.js b/docs/search/classes_0.js index a9be121..a377ed4 100644 --- a/docs/search/classes_0.js +++ b/docs/search/classes_0.js @@ -1,15 +1,15 @@ var searchData= [ - ['xmlattribute_142',['XMLAttribute',['../classtinyxml2_1_1_x_m_l_attribute.html',1,'tinyxml2']]], - ['xmlcomment_143',['XMLComment',['../classtinyxml2_1_1_x_m_l_comment.html',1,'tinyxml2']]], - ['xmlconsthandle_144',['XMLConstHandle',['../classtinyxml2_1_1_x_m_l_const_handle.html',1,'tinyxml2']]], - ['xmldeclaration_145',['XMLDeclaration',['../classtinyxml2_1_1_x_m_l_declaration.html',1,'tinyxml2']]], - ['xmldocument_146',['XMLDocument',['../classtinyxml2_1_1_x_m_l_document.html',1,'tinyxml2']]], - ['xmlelement_147',['XMLElement',['../classtinyxml2_1_1_x_m_l_element.html',1,'tinyxml2']]], - ['xmlhandle_148',['XMLHandle',['../classtinyxml2_1_1_x_m_l_handle.html',1,'tinyxml2']]], - ['xmlnode_149',['XMLNode',['../classtinyxml2_1_1_x_m_l_node.html',1,'tinyxml2']]], - ['xmlprinter_150',['XMLPrinter',['../classtinyxml2_1_1_x_m_l_printer.html',1,'tinyxml2']]], - ['xmltext_151',['XMLText',['../classtinyxml2_1_1_x_m_l_text.html',1,'tinyxml2']]], - ['xmlunknown_152',['XMLUnknown',['../classtinyxml2_1_1_x_m_l_unknown.html',1,'tinyxml2']]], - ['xmlvisitor_153',['XMLVisitor',['../classtinyxml2_1_1_x_m_l_visitor.html',1,'tinyxml2']]] + ['xmlattribute_0',['XMLAttribute',['../classtinyxml2_1_1_x_m_l_attribute.html',1,'tinyxml2']]], + ['xmlcomment_1',['XMLComment',['../classtinyxml2_1_1_x_m_l_comment.html',1,'tinyxml2']]], + ['xmlconsthandle_2',['XMLConstHandle',['../classtinyxml2_1_1_x_m_l_const_handle.html',1,'tinyxml2']]], + ['xmldeclaration_3',['XMLDeclaration',['../classtinyxml2_1_1_x_m_l_declaration.html',1,'tinyxml2']]], + ['xmldocument_4',['XMLDocument',['../classtinyxml2_1_1_x_m_l_document.html',1,'tinyxml2']]], + ['xmlelement_5',['XMLElement',['../classtinyxml2_1_1_x_m_l_element.html',1,'tinyxml2']]], + ['xmlhandle_6',['XMLHandle',['../classtinyxml2_1_1_x_m_l_handle.html',1,'tinyxml2']]], + ['xmlnode_7',['XMLNode',['../classtinyxml2_1_1_x_m_l_node.html',1,'tinyxml2']]], + ['xmlprinter_8',['XMLPrinter',['../classtinyxml2_1_1_x_m_l_printer.html',1,'tinyxml2']]], + ['xmltext_9',['XMLText',['../classtinyxml2_1_1_x_m_l_text.html',1,'tinyxml2']]], + ['xmlunknown_10',['XMLUnknown',['../classtinyxml2_1_1_x_m_l_unknown.html',1,'tinyxml2']]], + ['xmlvisitor_11',['XMLVisitor',['../classtinyxml2_1_1_x_m_l_visitor.html',1,'tinyxml2']]] ]; diff --git a/docs/search/close.svg b/docs/search/close.svg index a933eea..337d6cc 100644 --- a/docs/search/close.svg +++ b/docs/search/close.svg @@ -1,27 +1,14 @@ + - - - - image/svg+xml - - - - - + + + + + + diff --git a/docs/search/mag_d.svg b/docs/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/docs/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/search/mag_sel.svg b/docs/search/mag_sel.svg index 03626f6..553dba8 100644 --- a/docs/search/mag_sel.svg +++ b/docs/search/mag_sel.svg @@ -1,59 +1,17 @@ - + - - - - image/svg+xml - - - - - + > - + /> + /> diff --git a/docs/search/mag_seld.svg b/docs/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/docs/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/search/pages_0.js b/docs/search/pages_0.js index d992ed0..5da8a55 100644 --- a/docs/search/pages_0.js +++ b/docs/search/pages_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['get_20information_20out_20of_20xml_282',['Get information out of XML',['../_example_3.html',1,'']]] + ['2_0',['TinyXML-2',['../index.html',1,'']]] ]; diff --git a/docs/search/pages_1.js b/docs/search/pages_1.js index 2d10aa6..f9619a2 100644 --- a/docs/search/pages_1.js +++ b/docs/search/pages_1.js @@ -1,4 +1,7 @@ var searchData= [ - ['load_20an_20xml_20file_283',['Load an XML File',['../_example_1.html',1,'']]] + ['an_20xml_20file_0',['Load an XML File',['../_example_1.html',1,'']]], + ['an_20xml_20from_20char_20buffer_1',['Parse an XML from char buffer',['../_example_2.html',1,'']]], + ['and_20text_20information_2',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['attributes_20and_20text_20information_3',['Read attributes and text information.',['../_example_4.html',1,'']]] ]; diff --git a/docs/search/pages_2.js b/docs/search/pages_2.js index e7cdf36..d3e9de9 100644 --- a/docs/search/pages_2.js +++ b/docs/search/pages_2.js @@ -1,4 +1,4 @@ var searchData= [ - ['parse_20an_20xml_20from_20char_20buffer_284',['Parse an XML from char buffer',['../_example_2.html',1,'']]] + ['buffer_0',['Parse an XML from char buffer',['../_example_2.html',1,'']]] ]; diff --git a/docs/search/pages_3.js b/docs/search/pages_3.js index 8f6a8fc..9a095ad 100644 --- a/docs/search/pages_3.js +++ b/docs/search/pages_3.js @@ -1,4 +1,4 @@ var searchData= [ - ['read_20attributes_20and_20text_20information_2e_285',['Read attributes and text information.',['../_example_4.html',1,'']]] + ['char_20buffer_0',['Parse an XML from char buffer',['../_example_2.html',1,'']]] ]; diff --git a/docs/search/pages_4.js b/docs/search/pages_4.js index e97fabf..568316d 100644 --- a/docs/search/pages_4.js +++ b/docs/search/pages_4.js @@ -1,4 +1,5 @@ var searchData= [ - ['tinyxml_2d2_286',['TinyXML-2',['../index.html',1,'']]] + ['file_0',['Load an XML File',['../_example_1.html',1,'']]], + ['from_20char_20buffer_1',['Parse an XML from char buffer',['../_example_2.html',1,'']]] ]; diff --git a/docs/search/pages_5.js b/docs/search/pages_5.js new file mode 100644 index 0000000..098aa65 --- /dev/null +++ b/docs/search/pages_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['get_20information_20out_20of_20xml_0',['Get information out of XML',['../_example_3.html',1,'']]] +]; diff --git a/docs/search/pages_6.js b/docs/search/pages_6.js new file mode 100644 index 0000000..ad78bd8 --- /dev/null +++ b/docs/search/pages_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['information_0',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['information_20out_20of_20xml_1',['Get information out of XML',['../_example_3.html',1,'']]] +]; diff --git a/docs/search/pages_7.js b/docs/search/pages_7.js new file mode 100644 index 0000000..8bd34d1 --- /dev/null +++ b/docs/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['load_20an_20xml_20file_0',['Load an XML File',['../_example_1.html',1,'']]] +]; diff --git a/docs/search/pages_8.js b/docs/search/pages_8.js new file mode 100644 index 0000000..9271697 --- /dev/null +++ b/docs/search/pages_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['of_20xml_0',['Get information out of XML',['../_example_3.html',1,'']]], + ['out_20of_20xml_1',['Get information out of XML',['../_example_3.html',1,'']]] +]; diff --git a/docs/search/pages_9.js b/docs/search/pages_9.js new file mode 100644 index 0000000..e74d27f --- /dev/null +++ b/docs/search/pages_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['parse_20an_20xml_20from_20char_20buffer_0',['Parse an XML from char buffer',['../_example_2.html',1,'']]] +]; diff --git a/docs/search/pages_a.js b/docs/search/pages_a.js new file mode 100644 index 0000000..a659678 --- /dev/null +++ b/docs/search/pages_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['read_20attributes_20and_20text_20information_0',['Read attributes and text information.',['../_example_4.html',1,'']]] +]; diff --git a/docs/search/pages_b.js b/docs/search/pages_b.js new file mode 100644 index 0000000..e7e3775 --- /dev/null +++ b/docs/search/pages_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['text_20information_0',['Read attributes and text information.',['../_example_4.html',1,'']]], + ['tinyxml_202_1',['TinyXML-2',['../index.html',1,'']]] +]; diff --git a/docs/search/pages_c.js b/docs/search/pages_c.js new file mode 100644 index 0000000..e0ed4f3 --- /dev/null +++ b/docs/search/pages_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['xml_0',['Get information out of XML',['../_example_3.html',1,'']]], + ['xml_20file_1',['Load an XML File',['../_example_1.html',1,'']]], + ['xml_20from_20char_20buffer_2',['Parse an XML from char buffer',['../_example_2.html',1,'']]] +]; diff --git a/docs/search/search.css b/docs/search/search.css index 9074198..19f76f9 100644 --- a/docs/search/search.css +++ b/docs/search/search.css @@ -1,10 +1,33 @@ -/*---------------- Search Box */ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} #MSearchBox { + display: inline-block; white-space : nowrap; - background: white; + background: var(--search-background-color); border-radius: 0.65em; - box-shadow: inset 0.5px 0.5px 3px 0px #555; + box-shadow: var(--search-box-shadow); z-index: 102; } @@ -17,28 +40,47 @@ #MSearchSelect { display: inline-block; vertical-align: middle; - height: 1.4em; - padding: 0 0 0 0.3em; - margin: 0; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; } + #MSearchField { display: inline-block; vertical-align: middle; width: 7.5em; - height: 1.1em; + height: 19px; margin: 0 0.15em; padding: 0; line-height: 1em; border:none; - color: #909090; + color: var(--search-foreground-color); outline: none; - font-family: Arial, Verdana, sans-serif; + font-family: var(--font-family-search); -webkit-border-radius: 0px; border-radius: 0px; background: none; } +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} #MSearchBox .right { display: inline-block; @@ -59,23 +101,15 @@ } #MSearchCloseImg { - height: 1.4em; padding: 0.3em; margin: 0; } .MSearchBoxActive #MSearchField { - color: #000000; + color: var(--search-active-color); } -#main-menu > li:last-child { - /* This
  • object is the parent of the search bar */ - display: flex; - justify-content: center; - align-items: center; - height: 36px; - margin-right: 1em; -} + /*---------------- Search filter selection */ @@ -83,8 +117,8 @@ display: none; position: absolute; left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); z-index: 10001; padding-top: 4px; padding-bottom: 4px; @@ -97,7 +131,7 @@ } .SelectItem { - font: 8pt Arial, Verdana, sans-serif; + font: 8pt var(--font-family-search); padding-left: 2px; padding-right: 12px; border: 0px; @@ -105,7 +139,7 @@ span.SelectionMark { margin-right: 4px; - font-family: monospace; + font-family: var(--font-family-monospace); outline-style: none; text-decoration: none; } @@ -113,7 +147,7 @@ span.SelectionMark { a.SelectItem { display: block; outline-style: none; - color: #000000; + color: var(--search-filter-foreground-color); text-decoration: none; padding-left: 6px; padding-right: 12px; @@ -121,14 +155,14 @@ a.SelectItem { a.SelectItem:focus, a.SelectItem:active { - color: #000000; + color: var(--search-filter-foreground-color); outline-style: none; text-decoration: none; } a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); outline-style: none; text-decoration: none; cursor: pointer; @@ -138,7 +172,7 @@ a.SelectItem:hover { /*---------------- Search results window */ iframe#MSearchResults { - width: 60ex; + /*width: 60ex;*/ height: 15em; } @@ -146,9 +180,12 @@ iframe#MSearchResults { display: none; position: absolute; left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); z-index:10000; + width: 300px; + height: 400px; + overflow: auto; } /* ----------------------------------- */ @@ -156,7 +193,6 @@ iframe#MSearchResults { #SRIndex { clear:both; - padding-bottom: 15px; } .SREntry { @@ -169,8 +205,9 @@ iframe#MSearchResults { padding: 1px 5px; } -body.SRPage { +div.SRPage { margin: 5px 2px; + background-color: var(--search-results-background-color); } .SRChildren { @@ -182,17 +219,18 @@ body.SRPage { } .SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); text-decoration: none; outline: none; } a.SRScope { display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; text-decoration: none; outline: none; } @@ -204,14 +242,14 @@ a.SRScope:focus, a.SRScope:active { span.SRScope { padding-left: 4px; - font-family: Arial, Verdana, sans-serif; + font-family: var(--font-family-search); } .SRPage .SRStatus { padding: 2px 5px; font-size: 8pt; font-style: italic; - font-family: Arial, Verdana, sans-serif; + font-family: var(--font-family-search); } .SRResult { @@ -225,14 +263,10 @@ div.searchresults { /*---------------- External search page results */ -.searchresult { - background-color: #F0F3F8; -} - .pages b { color: white; padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); + background-image: var(--nav-gradient-active-image-parent); background-repeat: repeat-x; text-shadow: 0 1px 1px #000000; } diff --git a/docs/search/search.js b/docs/search/search.js index fb226f7..666af01 100644 --- a/docs/search/search.js +++ b/docs/search/search.js @@ -22,56 +22,9 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function convertToId(search) -{ - var result = ''; - for (i=0;i document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); // ------------ Event Handlers // Called when focus is added or removed from the search field. - this.OnSearchFieldFocus = function(isActive) - { + this.OnSearchFieldFocus = function(isActive) { this.Activate(isActive); } - this.OnSearchSelectShow = function() - { - var searchSelectWindow = this.DOMSearchSelectWindow(); - var searchField = this.DOMSearchSelect(); - - if (this.insideFrame) - { - var left = getXPos(searchField); - var top = getYPos(searchField); - left += searchField.offsetWidth + 6; - top += searchField.offsetHeight; - - // show search selection popup - searchSelectWindow.style.display='block'; - left -= searchSelectWindow.offsetWidth; - searchSelectWindow.style.left = left + 'px'; - searchSelectWindow.style.top = top + 'px'; - } - else - { - var left = getXPos(searchField); - var top = getYPos(searchField); - top += searchField.offsetHeight; - - // show search selection popup - searchSelectWindow.style.display='block'; - searchSelectWindow.style.left = left + 'px'; - searchSelectWindow.style.top = top + 'px'; - } + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; // stop selection hide timer - if (this.hideTimeout) - { + if (this.hideTimeout) { clearTimeout(this.hideTimeout); this.hideTimeout=0; } return false; // to avoid "image drag" default event } - this.OnSearchSelectHide = function() - { - this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()", + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), this.closeSelectionTimeout); } // Called when the content of the search field is changed. - this.OnSearchFieldChange = function(evt) - { - if (this.keyTimeout) // kill running timer - { + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer clearTimeout(this.keyTimeout); this.keyTimeout = 0; } - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 || e.keyCode==13) - { - if (e.shiftKey==1) - { + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { this.OnSearchSelectShow(); - var win=this.DOMSearchSelectWindow(); - for (i=0;i do a search - { + const searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + if (searchValue!="" && this.searchActive) { // something was found -> do a search this.Search(); } } - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { + } else if (e.keyCode==38 && this.searchIndex>0) { // Up this.searchIndex--; this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); this.OnSelectItem(this.searchIndex); this.CloseSelectionWindow(); this.DOMSearchField().focus(); @@ -314,111 +239,108 @@ function SearchBox(name, resultsPath, inFrame, label, extension) // --------- Actions // Closes the results window. - this.CloseResultsWindow = function() - { + this.CloseResultsWindow = function() { this.DOMPopupSearchResultsWindow().style.display = 'none'; this.DOMSearchClose().style.display = 'none'; this.Activate(false); } - this.CloseSelectionWindow = function() - { + this.CloseSelectionWindow = function() { this.DOMSearchSelectWindow().style.display = 'none'; } // Performs a search. - this.Search = function() - { + this.Search = function() { this.keyTimeout = 0; // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair idxChar = searchValue.substr(0, 2); } - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches' + this.extension; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } } - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline-block'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); } this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; } // -------- Activation Functions // Activates or deactivates the search panel, resetting things to // their default values if necessary. - this.Activate = function(isActive) - { + this.Activate = function(isActive) { if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { + this.searchActive = true; + } else if (!isActive) { // directly remove the panel this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; this.searchActive = false; this.lastSearchValue = '' this.lastResultsPage = ''; + this.DOMSearchField().value = ''; } } } @@ -426,391 +348,347 @@ function SearchBox(name, resultsPath, inFrame, label, extension) // ----------------------------------------------------------------------- // The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') - { - return element; - } +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; } - } - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; } - else - { - element.style.display = 'block'; + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; } } } + } - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; } + } + } - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; + i++; } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; } - return focusItem; + focusItem=null; + index++; } + return focusItem; + } - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; } - return focusItem; + focusItem=null; + index--; } + return focusItem; + } - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; } + return this.lastKey!=0; + } - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; } + n++; } } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; } + return false; + } - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); } - else if (this.lastKey==13) // Enter - { - return true; + if (elem) { + elem.focus(); } - return false; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; } + return false; + } } -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} +function createResults(resultsPath) { -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e { + const id = elem[0]; + const srResult = document.createElement('div'); srResult.setAttribute('id','SR_'+id); setClassAttr(srResult,'SRResult'); - var srEntry = document.createElement('div'); + const srEntry = document.createElement('div'); setClassAttr(srEntry,'SREntry'); - var srLink = document.createElement('a'); - srLink.setAttribute('id','Item'+e); - setKeyActions(srLink,'return searchResults.Nav(event,'+e+')'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); setClassAttr(srLink,'SRSymbol'); - srLink.innerHTML = searchData[e][1][0]; + srLink.innerHTML = elem[1][0]; srEntry.appendChild(srLink); - if (searchData[e][1].length==2) // single result - { - srLink.setAttribute('href',searchData[e][1][1][0]); - if (searchData[e][1][1][1]) - { + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); } - var srScope = document.createElement('span'); + const srScope = document.createElement('span'); setClassAttr(srScope,'SRScope'); - srScope.innerHTML = searchData[e][1][1][2]; + srScope.innerHTML = elem[1][1][2]; srEntry.appendChild(srScope); - } - else // multiple results - { + } else { // multiple results srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); - var srChildren = document.createElement('div'); + const srChildren = document.createElement('div'); setClassAttr(srChildren,'SRChildren'); - for (var c=0; c-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/docs/tab_ad.png b/docs/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/docs/tab_sd.png b/docs/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/docs/tabs.css b/docs/tabs.css index 85a0cd5..fe4854a 100644 --- a/docs/tabs.css +++ b/docs/tabs.css @@ -1 +1 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/docs/tinyxml2_8h_source.html b/docs/tinyxml2_8h_source.html index dc1d92a..553613e 100644 --- a/docs/tinyxml2_8h_source.html +++ b/docs/tinyxml2_8h_source.html @@ -1,14 +1,16 @@ - + - - + + TinyXML-2: tinyxml2.h Source File + + @@ -19,10 +21,9 @@
    - - + @@ -30,22 +31,28 @@
    -
    TinyXML-2 -  9.0.0 +
    +
    TinyXML-2 10.0.0
    - + +/* @license-end */ + +
    - +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    -
    -
    tinyxml2.h
    +
    tinyxml2.h
    -
    1 /*
    -
    2 Original code by Lee Thomason (www.grinninglizard.com)
    -
    3 
    -
    4 This software is provided 'as-is', without any express or implied
    -
    5 warranty. In no event will the authors be held liable for any
    -
    6 damages arising from the use of this software.
    -
    7 
    -
    8 Permission is granted to anyone to use this software for any
    -
    9 purpose, including commercial applications, and to alter it and
    -
    10 redistribute it freely, subject to the following restrictions:
    -
    11 
    -
    12 1. The origin of this software must not be misrepresented; you must
    -
    13 not claim that you wrote the original software. If you use this
    -
    14 software in a product, an acknowledgment in the product documentation
    -
    15 would be appreciated but is not required.
    -
    16 
    -
    17 2. Altered source versions must be plainly marked as such, and
    -
    18 must not be misrepresented as being the original software.
    -
    19 
    -
    20 3. This notice may not be removed or altered from any source
    -
    21 distribution.
    -
    22 */
    -
    23 
    -
    24 #ifndef TINYXML2_INCLUDED
    -
    25 #define TINYXML2_INCLUDED
    -
    26 
    -
    27 #if defined(ANDROID_NDK) || defined(__BORLANDC__) || defined(__QNXNTO__)
    -
    28 # include <ctype.h>
    -
    29 # include <limits.h>
    -
    30 # include <stdio.h>
    -
    31 # include <stdlib.h>
    -
    32 # include <string.h>
    -
    33 # if defined(__PS3__)
    -
    34 # include <stddef.h>
    -
    35 # endif
    -
    36 #else
    -
    37 # include <cctype>
    -
    38 # include <climits>
    -
    39 # include <cstdio>
    -
    40 # include <cstdlib>
    -
    41 # include <cstring>
    -
    42 #endif
    -
    43 #include <stdint.h>
    -
    44 
    -
    45 /*
    -
    46  TODO: intern strings instead of allocation.
    -
    47 */
    -
    48 /*
    -
    49  gcc:
    -
    50  g++ -Wall -DTINYXML2_DEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe
    -
    51 
    -
    52  Formatting, Artistic Style:
    -
    53  AStyle.exe --style=1tbs --indent-switches --break-closing-brackets --indent-preprocessor tinyxml2.cpp tinyxml2.h
    -
    54 */
    -
    55 
    -
    56 #if defined( _DEBUG ) || defined (__DEBUG__)
    -
    57 # ifndef TINYXML2_DEBUG
    -
    58 # define TINYXML2_DEBUG
    -
    59 # endif
    -
    60 #endif
    -
    61 
    -
    62 #ifdef _MSC_VER
    -
    63 # pragma warning(push)
    -
    64 # pragma warning(disable: 4251)
    -
    65 #endif
    -
    66 
    -
    67 #ifdef _WIN32
    -
    68 # ifdef TINYXML2_EXPORT
    -
    69 # define TINYXML2_LIB __declspec(dllexport)
    -
    70 # elif defined(TINYXML2_IMPORT)
    -
    71 # define TINYXML2_LIB __declspec(dllimport)
    -
    72 # else
    -
    73 # define TINYXML2_LIB
    -
    74 # endif
    -
    75 #elif __GNUC__ >= 4
    -
    76 # define TINYXML2_LIB __attribute__((visibility("default")))
    -
    77 #else
    -
    78 # define TINYXML2_LIB
    -
    79 #endif
    -
    80 
    -
    81 
    -
    82 #if !defined(TIXMLASSERT)
    -
    83 #if defined(TINYXML2_DEBUG)
    -
    84 # if defined(_MSC_VER)
    -
    85 # // "(void)0," is for suppressing C4127 warning in "assert(false)", "assert(true)" and the like
    -
    86 # define TIXMLASSERT( x ) if ( !((void)0,(x))) { __debugbreak(); }
    -
    87 # elif defined (ANDROID_NDK)
    -
    88 # include <android/log.h>
    -
    89 # define TIXMLASSERT( x ) if ( !(x)) { __android_log_assert( "assert", "grinliz", "ASSERT in '%s' at %d.", __FILE__, __LINE__ ); }
    -
    90 # else
    -
    91 # include <assert.h>
    -
    92 # define TIXMLASSERT assert
    -
    93 # endif
    -
    94 #else
    -
    95 # define TIXMLASSERT( x ) {}
    -
    96 #endif
    -
    97 #endif
    -
    98 
    -
    99 /* Versioning, past 1.0.14:
    -
    100  http://semver.org/
    -
    101 */
    -
    102 static const int TIXML2_MAJOR_VERSION = 9;
    -
    103 static const int TIXML2_MINOR_VERSION = 0;
    -
    104 static const int TIXML2_PATCH_VERSION = 0;
    -
    105 
    -
    106 #define TINYXML2_MAJOR_VERSION 9
    -
    107 #define TINYXML2_MINOR_VERSION 0
    -
    108 #define TINYXML2_PATCH_VERSION 0
    -
    109 
    -
    110 // A fixed element depth limit is problematic. There needs to be a
    -
    111 // limit to avoid a stack overflow. However, that limit varies per
    -
    112 // system, and the capacity of the stack. On the other hand, it's a trivial
    -
    113 // attack that can result from ill, malicious, or even correctly formed XML,
    -
    114 // so there needs to be a limit in place.
    -
    115 static const int TINYXML2_MAX_ELEMENT_DEPTH = 100;
    -
    116 
    -
    117 namespace tinyxml2
    -
    118 {
    -
    119 class XMLDocument;
    -
    120 class XMLElement;
    -
    121 class XMLAttribute;
    -
    122 class XMLComment;
    -
    123 class XMLText;
    -
    124 class XMLDeclaration;
    -
    125 class XMLUnknown;
    -
    126 class XMLPrinter;
    -
    127 
    -
    128 /*
    -
    129  A class that wraps strings. Normally stores the start and end
    -
    130  pointers into the XML file itself, and will apply normalization
    -
    131  and entity translation if actually read. Can also store (and memory
    -
    132  manage) a traditional char[]
    -
    133 
    -
    134  Isn't clear why TINYXML2_LIB is needed; but seems to fix #719
    -
    135 */
    -
    136 class TINYXML2_LIB StrPair
    -
    137 {
    -
    138 public:
    -
    139  enum Mode {
    -
    140  NEEDS_ENTITY_PROCESSING = 0x01,
    -
    141  NEEDS_NEWLINE_NORMALIZATION = 0x02,
    -
    142  NEEDS_WHITESPACE_COLLAPSING = 0x04,
    -
    143 
    -
    144  TEXT_ELEMENT = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
    -
    145  TEXT_ELEMENT_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION,
    -
    146  ATTRIBUTE_NAME = 0,
    -
    147  ATTRIBUTE_VALUE = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
    -
    148  ATTRIBUTE_VALUE_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION,
    -
    149  COMMENT = NEEDS_NEWLINE_NORMALIZATION
    -
    150  };
    -
    151 
    -
    152  StrPair() : _flags( 0 ), _start( 0 ), _end( 0 ) {}
    -
    153  ~StrPair();
    -
    154 
    -
    155  void Set( char* start, char* end, int flags ) {
    -
    156  TIXMLASSERT( start );
    -
    157  TIXMLASSERT( end );
    -
    158  Reset();
    -
    159  _start = start;
    -
    160  _end = end;
    -
    161  _flags = flags | NEEDS_FLUSH;
    -
    162  }
    -
    163 
    -
    164  const char* GetStr();
    -
    165 
    -
    166  bool Empty() const {
    -
    167  return _start == _end;
    -
    168  }
    -
    169 
    -
    170  void SetInternedStr( const char* str ) {
    -
    171  Reset();
    -
    172  _start = const_cast<char*>(str);
    -
    173  }
    -
    174 
    -
    175  void SetStr( const char* str, int flags=0 );
    -
    176 
    -
    177  char* ParseText( char* in, const char* endTag, int strFlags, int* curLineNumPtr );
    -
    178  char* ParseName( char* in );
    -
    179 
    -
    180  void TransferTo( StrPair* other );
    -
    181  void Reset();
    -
    182 
    -
    183 private:
    -
    184  void CollapseWhitespace();
    -
    185 
    -
    186  enum {
    -
    187  NEEDS_FLUSH = 0x100,
    -
    188  NEEDS_DELETE = 0x200
    -
    189  };
    -
    190 
    -
    191  int _flags;
    -
    192  char* _start;
    -
    193  char* _end;
    -
    194 
    -
    195  StrPair( const StrPair& other ); // not supported
    -
    196  void operator=( const StrPair& other ); // not supported, use TransferTo()
    -
    197 };
    -
    198 
    -
    199 
    -
    200 /*
    -
    201  A dynamic array of Plain Old Data. Doesn't support constructors, etc.
    -
    202  Has a small initial memory pool, so that low or no usage will not
    -
    203  cause a call to new/delete
    -
    204 */
    -
    205 template <class T, int INITIAL_SIZE>
    -
    206 class DynArray
    -
    207 {
    -
    208 public:
    -
    209  DynArray() :
    -
    210  _mem( _pool ),
    -
    211  _allocated( INITIAL_SIZE ),
    -
    212  _size( 0 )
    -
    213  {
    -
    214  }
    -
    215 
    -
    216  ~DynArray() {
    -
    217  if ( _mem != _pool ) {
    -
    218  delete [] _mem;
    -
    219  }
    -
    220  }
    -
    221 
    -
    222  void Clear() {
    -
    223  _size = 0;
    -
    224  }
    -
    225 
    -
    226  void Push( T t ) {
    -
    227  TIXMLASSERT( _size < INT_MAX );
    -
    228  EnsureCapacity( _size+1 );
    -
    229  _mem[_size] = t;
    -
    230  ++_size;
    -
    231  }
    -
    232 
    -
    233  T* PushArr( int count ) {
    -
    234  TIXMLASSERT( count >= 0 );
    -
    235  TIXMLASSERT( _size <= INT_MAX - count );
    -
    236  EnsureCapacity( _size+count );
    -
    237  T* ret = &_mem[_size];
    -
    238  _size += count;
    -
    239  return ret;
    -
    240  }
    -
    241 
    -
    242  T Pop() {
    -
    243  TIXMLASSERT( _size > 0 );
    -
    244  --_size;
    -
    245  return _mem[_size];
    -
    246  }
    -
    247 
    -
    248  void PopArr( int count ) {
    -
    249  TIXMLASSERT( _size >= count );
    -
    250  _size -= count;
    -
    251  }
    -
    252 
    -
    253  bool Empty() const {
    -
    254  return _size == 0;
    -
    255  }
    -
    256 
    -
    257  T& operator[](int i) {
    -
    258  TIXMLASSERT( i>= 0 && i < _size );
    -
    259  return _mem[i];
    -
    260  }
    -
    261 
    -
    262  const T& operator[](int i) const {
    -
    263  TIXMLASSERT( i>= 0 && i < _size );
    -
    264  return _mem[i];
    -
    265  }
    -
    266 
    -
    267  const T& PeekTop() const {
    -
    268  TIXMLASSERT( _size > 0 );
    -
    269  return _mem[ _size - 1];
    -
    270  }
    -
    271 
    -
    272  int Size() const {
    -
    273  TIXMLASSERT( _size >= 0 );
    -
    274  return _size;
    -
    275  }
    -
    276 
    -
    277  int Capacity() const {
    -
    278  TIXMLASSERT( _allocated >= INITIAL_SIZE );
    -
    279  return _allocated;
    -
    280  }
    -
    281 
    -
    282  void SwapRemove(int i) {
    -
    283  TIXMLASSERT(i >= 0 && i < _size);
    -
    284  TIXMLASSERT(_size > 0);
    -
    285  _mem[i] = _mem[_size - 1];
    -
    286  --_size;
    -
    287  }
    -
    288 
    -
    289  const T* Mem() const {
    -
    290  TIXMLASSERT( _mem );
    -
    291  return _mem;
    -
    292  }
    -
    293 
    -
    294  T* Mem() {
    -
    295  TIXMLASSERT( _mem );
    -
    296  return _mem;
    -
    297  }
    -
    298 
    -
    299 private:
    -
    300  DynArray( const DynArray& ); // not supported
    -
    301  void operator=( const DynArray& ); // not supported
    -
    302 
    -
    303  void EnsureCapacity( int cap ) {
    -
    304  TIXMLASSERT( cap > 0 );
    -
    305  if ( cap > _allocated ) {
    -
    306  TIXMLASSERT( cap <= INT_MAX / 2 );
    -
    307  const int newAllocated = cap * 2;
    -
    308  T* newMem = new T[newAllocated];
    -
    309  TIXMLASSERT( newAllocated >= _size );
    -
    310  memcpy( newMem, _mem, sizeof(T)*_size ); // warning: not using constructors, only works for PODs
    -
    311  if ( _mem != _pool ) {
    -
    312  delete [] _mem;
    -
    313  }
    -
    314  _mem = newMem;
    -
    315  _allocated = newAllocated;
    -
    316  }
    -
    317  }
    -
    318 
    -
    319  T* _mem;
    -
    320  T _pool[INITIAL_SIZE];
    -
    321  int _allocated; // objects allocated
    -
    322  int _size; // number objects in use
    -
    323 };
    -
    324 
    -
    325 
    -
    326 /*
    -
    327  Parent virtual class of a pool for fast allocation
    -
    328  and deallocation of objects.
    -
    329 */
    -
    330 class MemPool
    -
    331 {
    -
    332 public:
    -
    333  MemPool() {}
    -
    334  virtual ~MemPool() {}
    -
    335 
    -
    336  virtual int ItemSize() const = 0;
    -
    337  virtual void* Alloc() = 0;
    -
    338  virtual void Free( void* ) = 0;
    -
    339  virtual void SetTracked() = 0;
    -
    340 };
    -
    341 
    -
    342 
    -
    343 /*
    -
    344  Template child class to create pools of the correct type.
    -
    345 */
    -
    346 template< int ITEM_SIZE >
    -
    347 class MemPoolT : public MemPool
    -
    348 {
    -
    349 public:
    -
    350  MemPoolT() : _blockPtrs(), _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0) {}
    -
    351  ~MemPoolT() {
    -
    352  MemPoolT< ITEM_SIZE >::Clear();
    -
    353  }
    -
    354 
    -
    355  void Clear() {
    -
    356  // Delete the blocks.
    -
    357  while( !_blockPtrs.Empty()) {
    -
    358  Block* lastBlock = _blockPtrs.Pop();
    -
    359  delete lastBlock;
    -
    360  }
    -
    361  _root = 0;
    -
    362  _currentAllocs = 0;
    -
    363  _nAllocs = 0;
    -
    364  _maxAllocs = 0;
    -
    365  _nUntracked = 0;
    -
    366  }
    -
    367 
    -
    368  virtual int ItemSize() const {
    -
    369  return ITEM_SIZE;
    -
    370  }
    -
    371  int CurrentAllocs() const {
    -
    372  return _currentAllocs;
    -
    373  }
    -
    374 
    -
    375  virtual void* Alloc() {
    -
    376  if ( !_root ) {
    -
    377  // Need a new block.
    -
    378  Block* block = new Block();
    -
    379  _blockPtrs.Push( block );
    -
    380 
    -
    381  Item* blockItems = block->items;
    -
    382  for( int i = 0; i < ITEMS_PER_BLOCK - 1; ++i ) {
    -
    383  blockItems[i].next = &(blockItems[i + 1]);
    -
    384  }
    -
    385  blockItems[ITEMS_PER_BLOCK - 1].next = 0;
    -
    386  _root = blockItems;
    -
    387  }
    -
    388  Item* const result = _root;
    -
    389  TIXMLASSERT( result != 0 );
    -
    390  _root = _root->next;
    -
    391 
    -
    392  ++_currentAllocs;
    -
    393  if ( _currentAllocs > _maxAllocs ) {
    -
    394  _maxAllocs = _currentAllocs;
    -
    395  }
    -
    396  ++_nAllocs;
    -
    397  ++_nUntracked;
    -
    398  return result;
    -
    399  }
    -
    400 
    -
    401  virtual void Free( void* mem ) {
    -
    402  if ( !mem ) {
    -
    403  return;
    -
    404  }
    -
    405  --_currentAllocs;
    -
    406  Item* item = static_cast<Item*>( mem );
    -
    407 #ifdef TINYXML2_DEBUG
    -
    408  memset( item, 0xfe, sizeof( *item ) );
    -
    409 #endif
    -
    410  item->next = _root;
    -
    411  _root = item;
    -
    412  }
    -
    413  void Trace( const char* name ) {
    -
    414  printf( "Mempool %s watermark=%d [%dk] current=%d size=%d nAlloc=%d blocks=%d\n",
    -
    415  name, _maxAllocs, _maxAllocs * ITEM_SIZE / 1024, _currentAllocs,
    -
    416  ITEM_SIZE, _nAllocs, _blockPtrs.Size() );
    -
    417  }
    -
    418 
    -
    419  void SetTracked() {
    -
    420  --_nUntracked;
    -
    421  }
    -
    422 
    -
    423  int Untracked() const {
    -
    424  return _nUntracked;
    -
    425  }
    -
    426 
    -
    427  // This number is perf sensitive. 4k seems like a good tradeoff on my machine.
    -
    428  // The test file is large, 170k.
    -
    429  // Release: VS2010 gcc(no opt)
    -
    430  // 1k: 4000
    -
    431  // 2k: 4000
    -
    432  // 4k: 3900 21000
    -
    433  // 16k: 5200
    -
    434  // 32k: 4300
    -
    435  // 64k: 4000 21000
    -
    436  // Declared public because some compilers do not accept to use ITEMS_PER_BLOCK
    -
    437  // in private part if ITEMS_PER_BLOCK is private
    -
    438  enum { ITEMS_PER_BLOCK = (4 * 1024) / ITEM_SIZE };
    -
    439 
    -
    440 private:
    -
    441  MemPoolT( const MemPoolT& ); // not supported
    -
    442  void operator=( const MemPoolT& ); // not supported
    -
    443 
    -
    444  union Item {
    -
    445  Item* next;
    -
    446  char itemData[ITEM_SIZE];
    -
    447  };
    -
    448  struct Block {
    -
    449  Item items[ITEMS_PER_BLOCK];
    -
    450  };
    -
    451  DynArray< Block*, 10 > _blockPtrs;
    -
    452  Item* _root;
    -
    453 
    -
    454  int _currentAllocs;
    -
    455  int _nAllocs;
    -
    456  int _maxAllocs;
    -
    457  int _nUntracked;
    -
    458 };
    -
    459 
    -
    460 
    -
    461 
    -
    481 class TINYXML2_LIB XMLVisitor
    -
    482 {
    -
    483 public:
    -
    484  virtual ~XMLVisitor() {}
    -
    485 
    -
    487  virtual bool VisitEnter( const XMLDocument& /*doc*/ ) {
    -
    488  return true;
    -
    489  }
    -
    491  virtual bool VisitExit( const XMLDocument& /*doc*/ ) {
    -
    492  return true;
    -
    493  }
    -
    494 
    -
    496  virtual bool VisitEnter( const XMLElement& /*element*/, const XMLAttribute* /*firstAttribute*/ ) {
    -
    497  return true;
    -
    498  }
    -
    500  virtual bool VisitExit( const XMLElement& /*element*/ ) {
    -
    501  return true;
    -
    502  }
    -
    503 
    -
    505  virtual bool Visit( const XMLDeclaration& /*declaration*/ ) {
    -
    506  return true;
    -
    507  }
    -
    509  virtual bool Visit( const XMLText& /*text*/ ) {
    -
    510  return true;
    -
    511  }
    -
    513  virtual bool Visit( const XMLComment& /*comment*/ ) {
    -
    514  return true;
    -
    515  }
    -
    517  virtual bool Visit( const XMLUnknown& /*unknown*/ ) {
    -
    518  return true;
    -
    519  }
    -
    520 };
    -
    521 
    -
    522 // WARNING: must match XMLDocument::_errorNames[]
    -
    523 enum XMLError {
    -
    524  XML_SUCCESS = 0,
    -
    525  XML_NO_ATTRIBUTE,
    -
    526  XML_WRONG_ATTRIBUTE_TYPE,
    -
    527  XML_ERROR_FILE_NOT_FOUND,
    -
    528  XML_ERROR_FILE_COULD_NOT_BE_OPENED,
    -
    529  XML_ERROR_FILE_READ_ERROR,
    -
    530  XML_ERROR_PARSING_ELEMENT,
    -
    531  XML_ERROR_PARSING_ATTRIBUTE,
    -
    532  XML_ERROR_PARSING_TEXT,
    -
    533  XML_ERROR_PARSING_CDATA,
    -
    534  XML_ERROR_PARSING_COMMENT,
    -
    535  XML_ERROR_PARSING_DECLARATION,
    -
    536  XML_ERROR_PARSING_UNKNOWN,
    -
    537  XML_ERROR_EMPTY_DOCUMENT,
    -
    538  XML_ERROR_MISMATCHED_ELEMENT,
    -
    539  XML_ERROR_PARSING,
    -
    540  XML_CAN_NOT_CONVERT_TEXT,
    -
    541  XML_NO_TEXT_NODE,
    -
    542  XML_ELEMENT_DEPTH_EXCEEDED,
    -
    543 
    -
    544  XML_ERROR_COUNT
    -
    545 };
    -
    546 
    -
    547 
    -
    548 /*
    -
    549  Utility functionality.
    -
    550 */
    -
    551 class TINYXML2_LIB XMLUtil
    -
    552 {
    -
    553 public:
    -
    554  static const char* SkipWhiteSpace( const char* p, int* curLineNumPtr ) {
    -
    555  TIXMLASSERT( p );
    -
    556 
    -
    557  while( IsWhiteSpace(*p) ) {
    -
    558  if (curLineNumPtr && *p == '\n') {
    -
    559  ++(*curLineNumPtr);
    -
    560  }
    -
    561  ++p;
    -
    562  }
    -
    563  TIXMLASSERT( p );
    -
    564  return p;
    -
    565  }
    -
    566  static char* SkipWhiteSpace( char* const p, int* curLineNumPtr ) {
    -
    567  return const_cast<char*>( SkipWhiteSpace( const_cast<const char*>(p), curLineNumPtr ) );
    -
    568  }
    -
    569 
    -
    570  // Anything in the high order range of UTF-8 is assumed to not be whitespace. This isn't
    -
    571  // correct, but simple, and usually works.
    -
    572  static bool IsWhiteSpace( char p ) {
    -
    573  return !IsUTF8Continuation(p) && isspace( static_cast<unsigned char>(p) );
    -
    574  }
    -
    575 
    -
    576  inline static bool IsNameStartChar( unsigned char ch ) {
    -
    577  if ( ch >= 128 ) {
    -
    578  // This is a heuristic guess in attempt to not implement Unicode-aware isalpha()
    -
    579  return true;
    -
    580  }
    -
    581  if ( isalpha( ch ) ) {
    -
    582  return true;
    -
    583  }
    -
    584  return ch == ':' || ch == '_';
    -
    585  }
    -
    586 
    -
    587  inline static bool IsNameChar( unsigned char ch ) {
    -
    588  return IsNameStartChar( ch )
    -
    589  || isdigit( ch )
    -
    590  || ch == '.'
    -
    591  || ch == '-';
    -
    592  }
    -
    593 
    -
    594  inline static bool IsPrefixHex( const char* p) {
    -
    595  p = SkipWhiteSpace(p, 0);
    -
    596  return p && *p == '0' && ( *(p + 1) == 'x' || *(p + 1) == 'X');
    -
    597  }
    -
    598 
    -
    599  inline static bool StringEqual( const char* p, const char* q, int nChar=INT_MAX ) {
    -
    600  if ( p == q ) {
    -
    601  return true;
    -
    602  }
    -
    603  TIXMLASSERT( p );
    -
    604  TIXMLASSERT( q );
    -
    605  TIXMLASSERT( nChar >= 0 );
    -
    606  return strncmp( p, q, nChar ) == 0;
    -
    607  }
    -
    608 
    -
    609  inline static bool IsUTF8Continuation( const char p ) {
    -
    610  return ( p & 0x80 ) != 0;
    -
    611  }
    -
    612 
    -
    613  static const char* ReadBOM( const char* p, bool* hasBOM );
    -
    614  // p is the starting location,
    -
    615  // the UTF-8 value of the entity will be placed in value, and length filled in.
    -
    616  static const char* GetCharacterRef( const char* p, char* value, int* length );
    -
    617  static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length );
    -
    618 
    -
    619  // converts primitive types to strings
    -
    620  static void ToStr( int v, char* buffer, int bufferSize );
    -
    621  static void ToStr( unsigned v, char* buffer, int bufferSize );
    -
    622  static void ToStr( bool v, char* buffer, int bufferSize );
    -
    623  static void ToStr( float v, char* buffer, int bufferSize );
    -
    624  static void ToStr( double v, char* buffer, int bufferSize );
    -
    625  static void ToStr(int64_t v, char* buffer, int bufferSize);
    -
    626  static void ToStr(uint64_t v, char* buffer, int bufferSize);
    -
    627 
    -
    628  // converts strings to primitive types
    -
    629  static bool ToInt( const char* str, int* value );
    -
    630  static bool ToUnsigned( const char* str, unsigned* value );
    -
    631  static bool ToBool( const char* str, bool* value );
    -
    632  static bool ToFloat( const char* str, float* value );
    -
    633  static bool ToDouble( const char* str, double* value );
    -
    634  static bool ToInt64(const char* str, int64_t* value);
    -
    635  static bool ToUnsigned64(const char* str, uint64_t* value);
    -
    636  // Changes what is serialized for a boolean value.
    -
    637  // Default to "true" and "false". Shouldn't be changed
    -
    638  // unless you have a special testing or compatibility need.
    -
    639  // Be careful: static, global, & not thread safe.
    -
    640  // Be sure to set static const memory as parameters.
    -
    641  static void SetBoolSerialization(const char* writeTrue, const char* writeFalse);
    -
    642 
    -
    643 private:
    -
    644  static const char* writeBoolTrue;
    -
    645  static const char* writeBoolFalse;
    -
    646 };
    -
    647 
    -
    648 
    -
    674 class TINYXML2_LIB XMLNode
    -
    675 {
    -
    676  friend class XMLDocument;
    -
    677  friend class XMLElement;
    -
    678 public:
    -
    679 
    -
    681  const XMLDocument* GetDocument() const {
    -
    682  TIXMLASSERT( _document );
    -
    683  return _document;
    -
    684  }
    - -
    687  TIXMLASSERT( _document );
    -
    688  return _document;
    -
    689  }
    -
    690 
    -
    692  virtual XMLElement* ToElement() {
    -
    693  return 0;
    -
    694  }
    -
    696  virtual XMLText* ToText() {
    -
    697  return 0;
    -
    698  }
    -
    700  virtual XMLComment* ToComment() {
    -
    701  return 0;
    -
    702  }
    -
    704  virtual XMLDocument* ToDocument() {
    -
    705  return 0;
    -
    706  }
    - -
    709  return 0;
    -
    710  }
    -
    712  virtual XMLUnknown* ToUnknown() {
    -
    713  return 0;
    -
    714  }
    -
    715 
    -
    716  virtual const XMLElement* ToElement() const {
    -
    717  return 0;
    -
    718  }
    -
    719  virtual const XMLText* ToText() const {
    -
    720  return 0;
    -
    721  }
    -
    722  virtual const XMLComment* ToComment() const {
    -
    723  return 0;
    -
    724  }
    -
    725  virtual const XMLDocument* ToDocument() const {
    -
    726  return 0;
    -
    727  }
    -
    728  virtual const XMLDeclaration* ToDeclaration() const {
    -
    729  return 0;
    -
    730  }
    -
    731  virtual const XMLUnknown* ToUnknown() const {
    -
    732  return 0;
    -
    733  }
    -
    734 
    -
    744  const char* Value() const;
    -
    745 
    -
    749  void SetValue( const char* val, bool staticMem=false );
    -
    750 
    -
    752  int GetLineNum() const { return _parseLineNum; }
    -
    753 
    -
    755  const XMLNode* Parent() const {
    -
    756  return _parent;
    -
    757  }
    -
    758 
    -
    759  XMLNode* Parent() {
    -
    760  return _parent;
    -
    761  }
    -
    762 
    -
    764  bool NoChildren() const {
    -
    765  return !_firstChild;
    -
    766  }
    -
    767 
    -
    769  const XMLNode* FirstChild() const {
    -
    770  return _firstChild;
    -
    771  }
    -
    772 
    -
    773  XMLNode* FirstChild() {
    -
    774  return _firstChild;
    -
    775  }
    -
    776 
    -
    780  const XMLElement* FirstChildElement( const char* name = 0 ) const;
    -
    781 
    -
    782  XMLElement* FirstChildElement( const char* name = 0 ) {
    -
    783  return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->FirstChildElement( name ));
    -
    784  }
    -
    785 
    -
    787  const XMLNode* LastChild() const {
    -
    788  return _lastChild;
    -
    789  }
    -
    790 
    -
    791  XMLNode* LastChild() {
    -
    792  return _lastChild;
    -
    793  }
    -
    794 
    -
    798  const XMLElement* LastChildElement( const char* name = 0 ) const;
    -
    799 
    -
    800  XMLElement* LastChildElement( const char* name = 0 ) {
    -
    801  return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->LastChildElement(name) );
    -
    802  }
    -
    803 
    -
    805  const XMLNode* PreviousSibling() const {
    -
    806  return _prev;
    -
    807  }
    -
    808 
    -
    809  XMLNode* PreviousSibling() {
    -
    810  return _prev;
    -
    811  }
    -
    812 
    -
    814  const XMLElement* PreviousSiblingElement( const char* name = 0 ) const ;
    -
    815 
    -
    816  XMLElement* PreviousSiblingElement( const char* name = 0 ) {
    -
    817  return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->PreviousSiblingElement( name ) );
    -
    818  }
    -
    819 
    -
    821  const XMLNode* NextSibling() const {
    -
    822  return _next;
    -
    823  }
    -
    824 
    -
    825  XMLNode* NextSibling() {
    -
    826  return _next;
    -
    827  }
    -
    828 
    -
    830  const XMLElement* NextSiblingElement( const char* name = 0 ) const;
    -
    831 
    -
    832  XMLElement* NextSiblingElement( const char* name = 0 ) {
    -
    833  return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->NextSiblingElement( name ) );
    -
    834  }
    -
    835 
    - -
    844 
    -
    845  XMLNode* LinkEndChild( XMLNode* addThis ) {
    -
    846  return InsertEndChild( addThis );
    -
    847  }
    - -
    864  XMLNode* InsertAfterChild( XMLNode* afterThis, XMLNode* addThis );
    -
    865 
    - -
    870 
    -
    874  void DeleteChild( XMLNode* node );
    -
    875 
    -
    885  virtual XMLNode* ShallowClone( XMLDocument* document ) const = 0;
    -
    886 
    -
    900  XMLNode* DeepClone( XMLDocument* target ) const;
    -
    901 
    -
    908  virtual bool ShallowEqual( const XMLNode* compare ) const = 0;
    -
    909 
    -
    932  virtual bool Accept( XMLVisitor* visitor ) const = 0;
    -
    933 
    -
    939  void SetUserData(void* userData) { _userData = userData; }
    -
    940 
    -
    946  void* GetUserData() const { return _userData; }
    -
    947 
    -
    948 protected:
    -
    949  explicit XMLNode( XMLDocument* );
    -
    950  virtual ~XMLNode();
    -
    951 
    -
    952  virtual char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr);
    -
    953 
    -
    954  XMLDocument* _document;
    -
    955  XMLNode* _parent;
    -
    956  mutable StrPair _value;
    -
    957  int _parseLineNum;
    -
    958 
    -
    959  XMLNode* _firstChild;
    -
    960  XMLNode* _lastChild;
    -
    961 
    -
    962  XMLNode* _prev;
    -
    963  XMLNode* _next;
    -
    964 
    -
    965  void* _userData;
    -
    966 
    -
    967 private:
    -
    968  MemPool* _memPool;
    -
    969  void Unlink( XMLNode* child );
    -
    970  static void DeleteNode( XMLNode* node );
    -
    971  void InsertChildPreamble( XMLNode* insertThis ) const;
    -
    972  const XMLElement* ToElementWithName( const char* name ) const;
    -
    973 
    -
    974  XMLNode( const XMLNode& ); // not supported
    -
    975  XMLNode& operator=( const XMLNode& ); // not supported
    -
    976 };
    -
    977 
    -
    978 
    -
    991 class TINYXML2_LIB XMLText : public XMLNode
    -
    992 {
    -
    993  friend class XMLDocument;
    -
    994 public:
    -
    995  virtual bool Accept( XMLVisitor* visitor ) const;
    -
    996 
    -
    997  virtual XMLText* ToText() {
    -
    998  return this;
    -
    999  }
    -
    1000  virtual const XMLText* ToText() const {
    -
    1001  return this;
    -
    1002  }
    -
    1003 
    -
    1005  void SetCData( bool isCData ) {
    -
    1006  _isCData = isCData;
    -
    1007  }
    -
    1009  bool CData() const {
    -
    1010  return _isCData;
    -
    1011  }
    -
    1012 
    -
    1013  virtual XMLNode* ShallowClone( XMLDocument* document ) const;
    -
    1014  virtual bool ShallowEqual( const XMLNode* compare ) const;
    -
    1015 
    -
    1016 protected:
    -
    1017  explicit XMLText( XMLDocument* doc ) : XMLNode( doc ), _isCData( false ) {}
    -
    1018  virtual ~XMLText() {}
    -
    1019 
    -
    1020  char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
    -
    1021 
    -
    1022 private:
    -
    1023  bool _isCData;
    -
    1024 
    -
    1025  XMLText( const XMLText& ); // not supported
    -
    1026  XMLText& operator=( const XMLText& ); // not supported
    -
    1027 };
    -
    1028 
    -
    1029 
    -
    1031 class TINYXML2_LIB XMLComment : public XMLNode
    -
    1032 {
    -
    1033  friend class XMLDocument;
    -
    1034 public:
    -
    1035  virtual XMLComment* ToComment() {
    -
    1036  return this;
    -
    1037  }
    -
    1038  virtual const XMLComment* ToComment() const {
    -
    1039  return this;
    -
    1040  }
    -
    1041 
    -
    1042  virtual bool Accept( XMLVisitor* visitor ) const;
    -
    1043 
    -
    1044  virtual XMLNode* ShallowClone( XMLDocument* document ) const;
    -
    1045  virtual bool ShallowEqual( const XMLNode* compare ) const;
    -
    1046 
    -
    1047 protected:
    -
    1048  explicit XMLComment( XMLDocument* doc );
    -
    1049  virtual ~XMLComment();
    -
    1050 
    -
    1051  char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr);
    -
    1052 
    -
    1053 private:
    -
    1054  XMLComment( const XMLComment& ); // not supported
    -
    1055  XMLComment& operator=( const XMLComment& ); // not supported
    -
    1056 };
    -
    1057 
    -
    1058 
    -
    1070 class TINYXML2_LIB XMLDeclaration : public XMLNode
    -
    1071 {
    -
    1072  friend class XMLDocument;
    -
    1073 public:
    - -
    1075  return this;
    -
    1076  }
    -
    1077  virtual const XMLDeclaration* ToDeclaration() const {
    -
    1078  return this;
    -
    1079  }
    -
    1080 
    -
    1081  virtual bool Accept( XMLVisitor* visitor ) const;
    -
    1082 
    -
    1083  virtual XMLNode* ShallowClone( XMLDocument* document ) const;
    -
    1084  virtual bool ShallowEqual( const XMLNode* compare ) const;
    -
    1085 
    -
    1086 protected:
    -
    1087  explicit XMLDeclaration( XMLDocument* doc );
    -
    1088  virtual ~XMLDeclaration();
    -
    1089 
    -
    1090  char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
    -
    1091 
    -
    1092 private:
    -
    1093  XMLDeclaration( const XMLDeclaration& ); // not supported
    -
    1094  XMLDeclaration& operator=( const XMLDeclaration& ); // not supported
    -
    1095 };
    -
    1096 
    -
    1097 
    -
    1105 class TINYXML2_LIB XMLUnknown : public XMLNode
    -
    1106 {
    -
    1107  friend class XMLDocument;
    -
    1108 public:
    -
    1109  virtual XMLUnknown* ToUnknown() {
    -
    1110  return this;
    -
    1111  }
    -
    1112  virtual const XMLUnknown* ToUnknown() const {
    -
    1113  return this;
    -
    1114  }
    -
    1115 
    -
    1116  virtual bool Accept( XMLVisitor* visitor ) const;
    -
    1117 
    -
    1118  virtual XMLNode* ShallowClone( XMLDocument* document ) const;
    -
    1119  virtual bool ShallowEqual( const XMLNode* compare ) const;
    -
    1120 
    -
    1121 protected:
    -
    1122  explicit XMLUnknown( XMLDocument* doc );
    -
    1123  virtual ~XMLUnknown();
    -
    1124 
    -
    1125  char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
    -
    1126 
    -
    1127 private:
    -
    1128  XMLUnknown( const XMLUnknown& ); // not supported
    -
    1129  XMLUnknown& operator=( const XMLUnknown& ); // not supported
    -
    1130 };
    -
    1131 
    -
    1132 
    -
    1133 
    -
    1140 class TINYXML2_LIB XMLAttribute
    -
    1141 {
    -
    1142  friend class XMLElement;
    -
    1143 public:
    -
    1145  const char* Name() const;
    -
    1146 
    -
    1148  const char* Value() const;
    -
    1149 
    -
    1151  int GetLineNum() const { return _parseLineNum; }
    -
    1152 
    -
    1154  const XMLAttribute* Next() const {
    -
    1155  return _next;
    -
    1156  }
    -
    1157 
    -
    1162  int IntValue() const {
    -
    1163  int i = 0;
    -
    1164  QueryIntValue(&i);
    -
    1165  return i;
    -
    1166  }
    -
    1167 
    -
    1168  int64_t Int64Value() const {
    -
    1169  int64_t i = 0;
    -
    1170  QueryInt64Value(&i);
    -
    1171  return i;
    -
    1172  }
    -
    1173 
    -
    1174  uint64_t Unsigned64Value() const {
    -
    1175  uint64_t i = 0;
    -
    1176  QueryUnsigned64Value(&i);
    -
    1177  return i;
    -
    1178  }
    -
    1179 
    -
    1181  unsigned UnsignedValue() const {
    -
    1182  unsigned i=0;
    -
    1183  QueryUnsignedValue( &i );
    -
    1184  return i;
    -
    1185  }
    -
    1187  bool BoolValue() const {
    -
    1188  bool b=false;
    -
    1189  QueryBoolValue( &b );
    -
    1190  return b;
    -
    1191  }
    -
    1193  double DoubleValue() const {
    -
    1194  double d=0;
    -
    1195  QueryDoubleValue( &d );
    -
    1196  return d;
    -
    1197  }
    -
    1199  float FloatValue() const {
    -
    1200  float f=0;
    -
    1201  QueryFloatValue( &f );
    -
    1202  return f;
    -
    1203  }
    -
    1204 
    -
    1209  XMLError QueryIntValue( int* value ) const;
    -
    1211  XMLError QueryUnsignedValue( unsigned int* value ) const;
    -
    1213  XMLError QueryInt64Value(int64_t* value) const;
    -
    1215  XMLError QueryUnsigned64Value(uint64_t* value) const;
    -
    1217  XMLError QueryBoolValue( bool* value ) const;
    -
    1219  XMLError QueryDoubleValue( double* value ) const;
    -
    1221  XMLError QueryFloatValue( float* value ) const;
    -
    1222 
    -
    1224  void SetAttribute( const char* value );
    -
    1226  void SetAttribute( int value );
    -
    1228  void SetAttribute( unsigned value );
    -
    1230  void SetAttribute(int64_t value);
    -
    1232  void SetAttribute(uint64_t value);
    -
    1234  void SetAttribute( bool value );
    -
    1236  void SetAttribute( double value );
    -
    1238  void SetAttribute( float value );
    -
    1239 
    -
    1240 private:
    -
    1241  enum { BUF_SIZE = 200 };
    -
    1242 
    -
    1243  XMLAttribute() : _name(), _value(),_parseLineNum( 0 ), _next( 0 ), _memPool( 0 ) {}
    -
    1244  virtual ~XMLAttribute() {}
    -
    1245 
    -
    1246  XMLAttribute( const XMLAttribute& ); // not supported
    -
    1247  void operator=( const XMLAttribute& ); // not supported
    -
    1248  void SetName( const char* name );
    -
    1249 
    -
    1250  char* ParseDeep( char* p, bool processEntities, int* curLineNumPtr );
    -
    1251 
    -
    1252  mutable StrPair _name;
    -
    1253  mutable StrPair _value;
    -
    1254  int _parseLineNum;
    -
    1255  XMLAttribute* _next;
    -
    1256  MemPool* _memPool;
    -
    1257 };
    -
    1258 
    -
    1259 
    -
    1264 class TINYXML2_LIB XMLElement : public XMLNode
    -
    1265 {
    -
    1266  friend class XMLDocument;
    -
    1267 public:
    -
    1269  const char* Name() const {
    -
    1270  return Value();
    -
    1271  }
    -
    1273  void SetName( const char* str, bool staticMem=false ) {
    -
    1274  SetValue( str, staticMem );
    -
    1275  }
    -
    1276 
    -
    1277  virtual XMLElement* ToElement() {
    -
    1278  return this;
    -
    1279  }
    -
    1280  virtual const XMLElement* ToElement() const {
    -
    1281  return this;
    -
    1282  }
    -
    1283  virtual bool Accept( XMLVisitor* visitor ) const;
    -
    1284 
    -
    1308  const char* Attribute( const char* name, const char* value=0 ) const;
    -
    1309 
    -
    1316  int IntAttribute(const char* name, int defaultValue = 0) const;
    -
    1318  unsigned UnsignedAttribute(const char* name, unsigned defaultValue = 0) const;
    -
    1320  int64_t Int64Attribute(const char* name, int64_t defaultValue = 0) const;
    -
    1322  uint64_t Unsigned64Attribute(const char* name, uint64_t defaultValue = 0) const;
    -
    1324  bool BoolAttribute(const char* name, bool defaultValue = false) const;
    -
    1326  double DoubleAttribute(const char* name, double defaultValue = 0) const;
    -
    1328  float FloatAttribute(const char* name, float defaultValue = 0) const;
    -
    1329 
    -
    1343  XMLError QueryIntAttribute( const char* name, int* value ) const {
    -
    1344  const XMLAttribute* a = FindAttribute( name );
    -
    1345  if ( !a ) {
    -
    1346  return XML_NO_ATTRIBUTE;
    -
    1347  }
    -
    1348  return a->QueryIntValue( value );
    -
    1349  }
    -
    1350 
    -
    1352  XMLError QueryUnsignedAttribute( const char* name, unsigned int* value ) const {
    -
    1353  const XMLAttribute* a = FindAttribute( name );
    -
    1354  if ( !a ) {
    -
    1355  return XML_NO_ATTRIBUTE;
    -
    1356  }
    -
    1357  return a->QueryUnsignedValue( value );
    -
    1358  }
    -
    1359 
    -
    1361  XMLError QueryInt64Attribute(const char* name, int64_t* value) const {
    -
    1362  const XMLAttribute* a = FindAttribute(name);
    -
    1363  if (!a) {
    -
    1364  return XML_NO_ATTRIBUTE;
    -
    1365  }
    -
    1366  return a->QueryInt64Value(value);
    -
    1367  }
    -
    1368 
    -
    1370  XMLError QueryUnsigned64Attribute(const char* name, uint64_t* value) const {
    -
    1371  const XMLAttribute* a = FindAttribute(name);
    -
    1372  if(!a) {
    -
    1373  return XML_NO_ATTRIBUTE;
    -
    1374  }
    -
    1375  return a->QueryUnsigned64Value(value);
    -
    1376  }
    -
    1377 
    -
    1379  XMLError QueryBoolAttribute( const char* name, bool* value ) const {
    -
    1380  const XMLAttribute* a = FindAttribute( name );
    -
    1381  if ( !a ) {
    -
    1382  return XML_NO_ATTRIBUTE;
    -
    1383  }
    -
    1384  return a->QueryBoolValue( value );
    -
    1385  }
    -
    1387  XMLError QueryDoubleAttribute( const char* name, double* value ) const {
    -
    1388  const XMLAttribute* a = FindAttribute( name );
    -
    1389  if ( !a ) {
    -
    1390  return XML_NO_ATTRIBUTE;
    -
    1391  }
    -
    1392  return a->QueryDoubleValue( value );
    -
    1393  }
    -
    1395  XMLError QueryFloatAttribute( const char* name, float* value ) const {
    -
    1396  const XMLAttribute* a = FindAttribute( name );
    -
    1397  if ( !a ) {
    -
    1398  return XML_NO_ATTRIBUTE;
    -
    1399  }
    -
    1400  return a->QueryFloatValue( value );
    -
    1401  }
    -
    1402 
    -
    1404  XMLError QueryStringAttribute(const char* name, const char** value) const {
    -
    1405  const XMLAttribute* a = FindAttribute(name);
    -
    1406  if (!a) {
    -
    1407  return XML_NO_ATTRIBUTE;
    -
    1408  }
    -
    1409  *value = a->Value();
    -
    1410  return XML_SUCCESS;
    -
    1411  }
    -
    1412 
    -
    1413 
    -
    1414 
    -
    1432  XMLError QueryAttribute( const char* name, int* value ) const {
    -
    1433  return QueryIntAttribute( name, value );
    -
    1434  }
    -
    1435 
    -
    1436  XMLError QueryAttribute( const char* name, unsigned int* value ) const {
    -
    1437  return QueryUnsignedAttribute( name, value );
    -
    1438  }
    -
    1439 
    -
    1440  XMLError QueryAttribute(const char* name, int64_t* value) const {
    -
    1441  return QueryInt64Attribute(name, value);
    -
    1442  }
    -
    1443 
    -
    1444  XMLError QueryAttribute(const char* name, uint64_t* value) const {
    -
    1445  return QueryUnsigned64Attribute(name, value);
    -
    1446  }
    -
    1447 
    -
    1448  XMLError QueryAttribute( const char* name, bool* value ) const {
    -
    1449  return QueryBoolAttribute( name, value );
    -
    1450  }
    -
    1451 
    -
    1452  XMLError QueryAttribute( const char* name, double* value ) const {
    -
    1453  return QueryDoubleAttribute( name, value );
    -
    1454  }
    -
    1455 
    -
    1456  XMLError QueryAttribute( const char* name, float* value ) const {
    -
    1457  return QueryFloatAttribute( name, value );
    -
    1458  }
    -
    1459 
    -
    1460  XMLError QueryAttribute(const char* name, const char** value) const {
    -
    1461  return QueryStringAttribute(name, value);
    -
    1462  }
    -
    1463 
    -
    1465  void SetAttribute( const char* name, const char* value ) {
    -
    1466  XMLAttribute* a = FindOrCreateAttribute( name );
    -
    1467  a->SetAttribute( value );
    -
    1468  }
    -
    1470  void SetAttribute( const char* name, int value ) {
    -
    1471  XMLAttribute* a = FindOrCreateAttribute( name );
    -
    1472  a->SetAttribute( value );
    -
    1473  }
    -
    1475  void SetAttribute( const char* name, unsigned value ) {
    -
    1476  XMLAttribute* a = FindOrCreateAttribute( name );
    -
    1477  a->SetAttribute( value );
    -
    1478  }
    -
    1479 
    -
    1481  void SetAttribute(const char* name, int64_t value) {
    -
    1482  XMLAttribute* a = FindOrCreateAttribute(name);
    -
    1483  a->SetAttribute(value);
    -
    1484  }
    -
    1485 
    -
    1487  void SetAttribute(const char* name, uint64_t value) {
    -
    1488  XMLAttribute* a = FindOrCreateAttribute(name);
    -
    1489  a->SetAttribute(value);
    -
    1490  }
    -
    1491 
    -
    1493  void SetAttribute( const char* name, bool value ) {
    -
    1494  XMLAttribute* a = FindOrCreateAttribute( name );
    -
    1495  a->SetAttribute( value );
    -
    1496  }
    -
    1498  void SetAttribute( const char* name, double value ) {
    -
    1499  XMLAttribute* a = FindOrCreateAttribute( name );
    -
    1500  a->SetAttribute( value );
    -
    1501  }
    -
    1503  void SetAttribute( const char* name, float value ) {
    -
    1504  XMLAttribute* a = FindOrCreateAttribute( name );
    -
    1505  a->SetAttribute( value );
    -
    1506  }
    -
    1507 
    -
    1511  void DeleteAttribute( const char* name );
    -
    1512 
    -
    1514  const XMLAttribute* FirstAttribute() const {
    -
    1515  return _rootAttribute;
    -
    1516  }
    -
    1518  const XMLAttribute* FindAttribute( const char* name ) const;
    -
    1519 
    -
    1548  const char* GetText() const;
    -
    1549 
    -
    1584  void SetText( const char* inText );
    -
    1586  void SetText( int value );
    -
    1588  void SetText( unsigned value );
    -
    1590  void SetText(int64_t value);
    -
    1592  void SetText(uint64_t value);
    -
    1594  void SetText( bool value );
    -
    1596  void SetText( double value );
    -
    1598  void SetText( float value );
    -
    1599 
    -
    1626  XMLError QueryIntText( int* ival ) const;
    -
    1628  XMLError QueryUnsignedText( unsigned* uval ) const;
    -
    1630  XMLError QueryInt64Text(int64_t* uval) const;
    -
    1632  XMLError QueryUnsigned64Text(uint64_t* uval) const;
    -
    1634  XMLError QueryBoolText( bool* bval ) const;
    -
    1636  XMLError QueryDoubleText( double* dval ) const;
    -
    1638  XMLError QueryFloatText( float* fval ) const;
    -
    1639 
    -
    1640  int IntText(int defaultValue = 0) const;
    -
    1641 
    -
    1643  unsigned UnsignedText(unsigned defaultValue = 0) const;
    -
    1645  int64_t Int64Text(int64_t defaultValue = 0) const;
    -
    1647  uint64_t Unsigned64Text(uint64_t defaultValue = 0) const;
    -
    1649  bool BoolText(bool defaultValue = false) const;
    -
    1651  double DoubleText(double defaultValue = 0) const;
    -
    1653  float FloatText(float defaultValue = 0) const;
    -
    1654 
    -
    1659  XMLElement* InsertNewChildElement(const char* name);
    -
    1661  XMLComment* InsertNewComment(const char* comment);
    -
    1663  XMLText* InsertNewText(const char* text);
    - -
    1667  XMLUnknown* InsertNewUnknown(const char* text);
    -
    1668 
    -
    1669 
    -
    1670  // internal:
    -
    1671  enum ElementClosingType {
    -
    1672  OPEN, // <foo>
    -
    1673  CLOSED, // <foo/>
    -
    1674  CLOSING // </foo>
    -
    1675  };
    -
    1676  ElementClosingType ClosingType() const {
    -
    1677  return _closingType;
    -
    1678  }
    -
    1679  virtual XMLNode* ShallowClone( XMLDocument* document ) const;
    -
    1680  virtual bool ShallowEqual( const XMLNode* compare ) const;
    -
    1681 
    -
    1682 protected:
    -
    1683  char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
    -
    1684 
    -
    1685 private:
    -
    1686  XMLElement( XMLDocument* doc );
    -
    1687  virtual ~XMLElement();
    -
    1688  XMLElement( const XMLElement& ); // not supported
    -
    1689  void operator=( const XMLElement& ); // not supported
    -
    1690 
    -
    1691  XMLAttribute* FindOrCreateAttribute( const char* name );
    -
    1692  char* ParseAttributes( char* p, int* curLineNumPtr );
    -
    1693  static void DeleteAttribute( XMLAttribute* attribute );
    -
    1694  XMLAttribute* CreateAttribute();
    -
    1695 
    -
    1696  enum { BUF_SIZE = 200 };
    -
    1697  ElementClosingType _closingType;
    -
    1698  // The attribute list is ordered; there is no 'lastAttribute'
    -
    1699  // because the list needs to be scanned for dupes before adding
    -
    1700  // a new attribute.
    -
    1701  XMLAttribute* _rootAttribute;
    -
    1702 };
    -
    1703 
    -
    1704 
    -
    1705 enum Whitespace {
    -
    1706  PRESERVE_WHITESPACE,
    -
    1707  COLLAPSE_WHITESPACE
    -
    1708 };
    -
    1709 
    -
    1710 
    -
    1716 class TINYXML2_LIB XMLDocument : public XMLNode
    -
    1717 {
    -
    1718  friend class XMLElement;
    -
    1719  // Gives access to SetError and Push/PopDepth, but over-access for everything else.
    -
    1720  // Wishing C++ had "internal" scope.
    -
    1721  friend class XMLNode;
    -
    1722  friend class XMLText;
    -
    1723  friend class XMLComment;
    -
    1724  friend class XMLDeclaration;
    -
    1725  friend class XMLUnknown;
    -
    1726 public:
    -
    1728  XMLDocument( bool processEntities = true, Whitespace whitespaceMode = PRESERVE_WHITESPACE );
    -
    1729  ~XMLDocument();
    -
    1730 
    - -
    1732  TIXMLASSERT( this == _document );
    -
    1733  return this;
    -
    1734  }
    -
    1735  virtual const XMLDocument* ToDocument() const {
    -
    1736  TIXMLASSERT( this == _document );
    -
    1737  return this;
    -
    1738  }
    -
    1739 
    -
    1750  XMLError Parse( const char* xml, size_t nBytes=static_cast<size_t>(-1) );
    -
    1751 
    -
    1757  XMLError LoadFile( const char* filename );
    -
    1758 
    -
    1770  XMLError LoadFile( FILE* );
    -
    1771 
    -
    1777  XMLError SaveFile( const char* filename, bool compact = false );
    -
    1778 
    -
    1786  XMLError SaveFile( FILE* fp, bool compact = false );
    -
    1787 
    -
    1788  bool ProcessEntities() const {
    -
    1789  return _processEntities;
    -
    1790  }
    -
    1791  Whitespace WhitespaceMode() const {
    -
    1792  return _whitespaceMode;
    -
    1793  }
    -
    1794 
    -
    1798  bool HasBOM() const {
    -
    1799  return _writeBOM;
    -
    1800  }
    -
    1803  void SetBOM( bool useBOM ) {
    -
    1804  _writeBOM = useBOM;
    -
    1805  }
    -
    1806 
    - -
    1811  return FirstChildElement();
    -
    1812  }
    -
    1813  const XMLElement* RootElement() const {
    -
    1814  return FirstChildElement();
    -
    1815  }
    -
    1816 
    -
    1831  void Print( XMLPrinter* streamer=0 ) const;
    -
    1832  virtual bool Accept( XMLVisitor* visitor ) const;
    -
    1833 
    -
    1839  XMLElement* NewElement( const char* name );
    -
    1845  XMLComment* NewComment( const char* comment );
    -
    1851  XMLText* NewText( const char* text );
    -
    1863  XMLDeclaration* NewDeclaration( const char* text=0 );
    -
    1869  XMLUnknown* NewUnknown( const char* text );
    -
    1870 
    -
    1875  void DeleteNode( XMLNode* node );
    -
    1876 
    -
    1878  void ClearError();
    -
    1879 
    -
    1881  bool Error() const {
    -
    1882  return _errorID != XML_SUCCESS;
    -
    1883  }
    -
    1885  XMLError ErrorID() const {
    -
    1886  return _errorID;
    -
    1887  }
    -
    1888  const char* ErrorName() const;
    -
    1889  static const char* ErrorIDToName(XMLError errorID);
    -
    1890 
    -
    1894  const char* ErrorStr() const;
    -
    1895 
    -
    1897  void PrintError() const;
    -
    1898 
    -
    1900  int ErrorLineNum() const
    -
    1901  {
    -
    1902  return _errorLineNum;
    -
    1903  }
    -
    1904 
    -
    1906  void Clear();
    -
    1907 
    -
    1915  void DeepCopy(XMLDocument* target) const;
    -
    1916 
    -
    1917  // internal
    -
    1918  char* Identify( char* p, XMLNode** node );
    -
    1919 
    -
    1920  // internal
    -
    1921  void MarkInUse(const XMLNode* const);
    -
    1922 
    -
    1923  virtual XMLNode* ShallowClone( XMLDocument* /*document*/ ) const {
    -
    1924  return 0;
    -
    1925  }
    -
    1926  virtual bool ShallowEqual( const XMLNode* /*compare*/ ) const {
    -
    1927  return false;
    -
    1928  }
    -
    1929 
    -
    1930 private:
    -
    1931  XMLDocument( const XMLDocument& ); // not supported
    -
    1932  void operator=( const XMLDocument& ); // not supported
    -
    1933 
    -
    1934  bool _writeBOM;
    -
    1935  bool _processEntities;
    -
    1936  XMLError _errorID;
    -
    1937  Whitespace _whitespaceMode;
    -
    1938  mutable StrPair _errorStr;
    -
    1939  int _errorLineNum;
    -
    1940  char* _charBuffer;
    -
    1941  int _parseCurLineNum;
    -
    1942  int _parsingDepth;
    -
    1943  // Memory tracking does add some overhead.
    -
    1944  // However, the code assumes that you don't
    -
    1945  // have a bunch of unlinked nodes around.
    -
    1946  // Therefore it takes less memory to track
    -
    1947  // in the document vs. a linked list in the XMLNode,
    -
    1948  // and the performance is the same.
    -
    1949  DynArray<XMLNode*, 10> _unlinked;
    -
    1950 
    -
    1951  MemPoolT< sizeof(XMLElement) > _elementPool;
    -
    1952  MemPoolT< sizeof(XMLAttribute) > _attributePool;
    -
    1953  MemPoolT< sizeof(XMLText) > _textPool;
    -
    1954  MemPoolT< sizeof(XMLComment) > _commentPool;
    -
    1955 
    -
    1956  static const char* _errorNames[XML_ERROR_COUNT];
    -
    1957 
    -
    1958  void Parse();
    -
    1959 
    -
    1960  void SetError( XMLError error, int lineNum, const char* format, ... );
    -
    1961 
    -
    1962  // Something of an obvious security hole, once it was discovered.
    -
    1963  // Either an ill-formed XML or an excessively deep one can overflow
    -
    1964  // the stack. Track stack depth, and error out if needed.
    -
    1965  class DepthTracker {
    -
    1966  public:
    -
    1967  explicit DepthTracker(XMLDocument * document) {
    -
    1968  this->_document = document;
    -
    1969  document->PushDepth();
    -
    1970  }
    -
    1971  ~DepthTracker() {
    -
    1972  _document->PopDepth();
    -
    1973  }
    -
    1974  private:
    -
    1975  XMLDocument * _document;
    -
    1976  };
    -
    1977  void PushDepth();
    -
    1978  void PopDepth();
    -
    1979 
    -
    1980  template<class NodeType, int PoolElementSize>
    -
    1981  NodeType* CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool );
    -
    1982 };
    -
    1983 
    -
    1984 template<class NodeType, int PoolElementSize>
    -
    1985 inline NodeType* XMLDocument::CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool )
    -
    1986 {
    -
    1987  TIXMLASSERT( sizeof( NodeType ) == PoolElementSize );
    -
    1988  TIXMLASSERT( sizeof( NodeType ) == pool.ItemSize() );
    -
    1989  NodeType* returnNode = new (pool.Alloc()) NodeType( this );
    -
    1990  TIXMLASSERT( returnNode );
    -
    1991  returnNode->_memPool = &pool;
    -
    1992 
    -
    1993  _unlinked.Push(returnNode);
    -
    1994  return returnNode;
    -
    1995 }
    -
    1996 
    -
    2052 class TINYXML2_LIB XMLHandle
    -
    2053 {
    -
    2054 public:
    -
    2056  explicit XMLHandle( XMLNode* node ) : _node( node ) {
    -
    2057  }
    -
    2059  explicit XMLHandle( XMLNode& node ) : _node( &node ) {
    -
    2060  }
    -
    2062  XMLHandle( const XMLHandle& ref ) : _node( ref._node ) {
    -
    2063  }
    -
    2065  XMLHandle& operator=( const XMLHandle& ref ) {
    -
    2066  _node = ref._node;
    -
    2067  return *this;
    -
    2068  }
    -
    2069 
    - -
    2072  return XMLHandle( _node ? _node->FirstChild() : 0 );
    -
    2073  }
    -
    2075  XMLHandle FirstChildElement( const char* name = 0 ) {
    -
    2076  return XMLHandle( _node ? _node->FirstChildElement( name ) : 0 );
    -
    2077  }
    - -
    2080  return XMLHandle( _node ? _node->LastChild() : 0 );
    -
    2081  }
    -
    2083  XMLHandle LastChildElement( const char* name = 0 ) {
    -
    2084  return XMLHandle( _node ? _node->LastChildElement( name ) : 0 );
    -
    2085  }
    - -
    2088  return XMLHandle( _node ? _node->PreviousSibling() : 0 );
    -
    2089  }
    -
    2091  XMLHandle PreviousSiblingElement( const char* name = 0 ) {
    -
    2092  return XMLHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );
    -
    2093  }
    - -
    2096  return XMLHandle( _node ? _node->NextSibling() : 0 );
    -
    2097  }
    -
    2099  XMLHandle NextSiblingElement( const char* name = 0 ) {
    -
    2100  return XMLHandle( _node ? _node->NextSiblingElement( name ) : 0 );
    -
    2101  }
    -
    2102 
    - -
    2105  return _node;
    -
    2106  }
    - -
    2109  return ( _node ? _node->ToElement() : 0 );
    -
    2110  }
    - -
    2113  return ( _node ? _node->ToText() : 0 );
    -
    2114  }
    - -
    2117  return ( _node ? _node->ToUnknown() : 0 );
    -
    2118  }
    - -
    2121  return ( _node ? _node->ToDeclaration() : 0 );
    -
    2122  }
    -
    2123 
    -
    2124 private:
    -
    2125  XMLNode* _node;
    -
    2126 };
    -
    2127 
    -
    2128 
    -
    2133 class TINYXML2_LIB XMLConstHandle
    -
    2134 {
    -
    2135 public:
    -
    2136  explicit XMLConstHandle( const XMLNode* node ) : _node( node ) {
    -
    2137  }
    -
    2138  explicit XMLConstHandle( const XMLNode& node ) : _node( &node ) {
    -
    2139  }
    -
    2140  XMLConstHandle( const XMLConstHandle& ref ) : _node( ref._node ) {
    -
    2141  }
    -
    2142 
    -
    2143  XMLConstHandle& operator=( const XMLConstHandle& ref ) {
    -
    2144  _node = ref._node;
    -
    2145  return *this;
    -
    2146  }
    -
    2147 
    -
    2148  const XMLConstHandle FirstChild() const {
    -
    2149  return XMLConstHandle( _node ? _node->FirstChild() : 0 );
    -
    2150  }
    -
    2151  const XMLConstHandle FirstChildElement( const char* name = 0 ) const {
    -
    2152  return XMLConstHandle( _node ? _node->FirstChildElement( name ) : 0 );
    -
    2153  }
    -
    2154  const XMLConstHandle LastChild() const {
    -
    2155  return XMLConstHandle( _node ? _node->LastChild() : 0 );
    -
    2156  }
    -
    2157  const XMLConstHandle LastChildElement( const char* name = 0 ) const {
    -
    2158  return XMLConstHandle( _node ? _node->LastChildElement( name ) : 0 );
    -
    2159  }
    -
    2160  const XMLConstHandle PreviousSibling() const {
    -
    2161  return XMLConstHandle( _node ? _node->PreviousSibling() : 0 );
    -
    2162  }
    -
    2163  const XMLConstHandle PreviousSiblingElement( const char* name = 0 ) const {
    -
    2164  return XMLConstHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );
    -
    2165  }
    -
    2166  const XMLConstHandle NextSibling() const {
    -
    2167  return XMLConstHandle( _node ? _node->NextSibling() : 0 );
    -
    2168  }
    -
    2169  const XMLConstHandle NextSiblingElement( const char* name = 0 ) const {
    -
    2170  return XMLConstHandle( _node ? _node->NextSiblingElement( name ) : 0 );
    -
    2171  }
    -
    2172 
    -
    2173 
    -
    2174  const XMLNode* ToNode() const {
    -
    2175  return _node;
    -
    2176  }
    -
    2177  const XMLElement* ToElement() const {
    -
    2178  return ( _node ? _node->ToElement() : 0 );
    -
    2179  }
    -
    2180  const XMLText* ToText() const {
    -
    2181  return ( _node ? _node->ToText() : 0 );
    -
    2182  }
    -
    2183  const XMLUnknown* ToUnknown() const {
    -
    2184  return ( _node ? _node->ToUnknown() : 0 );
    -
    2185  }
    -
    2186  const XMLDeclaration* ToDeclaration() const {
    -
    2187  return ( _node ? _node->ToDeclaration() : 0 );
    -
    2188  }
    -
    2189 
    -
    2190 private:
    -
    2191  const XMLNode* _node;
    -
    2192 };
    -
    2193 
    -
    2194 
    -
    2237 class TINYXML2_LIB XMLPrinter : public XMLVisitor
    -
    2238 {
    -
    2239 public:
    -
    2246  XMLPrinter( FILE* file=0, bool compact = false, int depth = 0 );
    -
    2247  virtual ~XMLPrinter() {}
    -
    2248 
    -
    2250  void PushHeader( bool writeBOM, bool writeDeclaration );
    -
    2254  void OpenElement( const char* name, bool compactMode=false );
    -
    2256  void PushAttribute( const char* name, const char* value );
    -
    2257  void PushAttribute( const char* name, int value );
    -
    2258  void PushAttribute( const char* name, unsigned value );
    -
    2259  void PushAttribute( const char* name, int64_t value );
    -
    2260  void PushAttribute( const char* name, uint64_t value );
    -
    2261  void PushAttribute( const char* name, bool value );
    -
    2262  void PushAttribute( const char* name, double value );
    -
    2264  virtual void CloseElement( bool compactMode=false );
    -
    2265 
    -
    2267  void PushText( const char* text, bool cdata=false );
    -
    2269  void PushText( int value );
    -
    2271  void PushText( unsigned value );
    -
    2273  void PushText( int64_t value );
    -
    2275  void PushText( uint64_t value );
    -
    2277  void PushText( bool value );
    -
    2279  void PushText( float value );
    -
    2281  void PushText( double value );
    -
    2282 
    -
    2284  void PushComment( const char* comment );
    -
    2285 
    -
    2286  void PushDeclaration( const char* value );
    -
    2287  void PushUnknown( const char* value );
    -
    2288 
    -
    2289  virtual bool VisitEnter( const XMLDocument& /*doc*/ );
    -
    2290  virtual bool VisitExit( const XMLDocument& /*doc*/ ) {
    -
    2291  return true;
    -
    2292  }
    -
    2293 
    -
    2294  virtual bool VisitEnter( const XMLElement& element, const XMLAttribute* attribute );
    -
    2295  virtual bool VisitExit( const XMLElement& element );
    -
    2296 
    -
    2297  virtual bool Visit( const XMLText& text );
    -
    2298  virtual bool Visit( const XMLComment& comment );
    -
    2299  virtual bool Visit( const XMLDeclaration& declaration );
    -
    2300  virtual bool Visit( const XMLUnknown& unknown );
    -
    2301 
    -
    2306  const char* CStr() const {
    -
    2307  return _buffer.Mem();
    -
    2308  }
    -
    2314  int CStrSize() const {
    -
    2315  return _buffer.Size();
    -
    2316  }
    -
    2321  void ClearBuffer( bool resetToFirstElement = true ) {
    -
    2322  _buffer.Clear();
    -
    2323  _buffer.Push(0);
    -
    2324  _firstElement = resetToFirstElement;
    -
    2325  }
    -
    2326 
    -
    2327 protected:
    -
    2328  virtual bool CompactMode( const XMLElement& ) { return _compactMode; }
    -
    2329 
    -
    2333  virtual void PrintSpace( int depth );
    -
    2334  virtual void Print( const char* format, ... );
    -
    2335  virtual void Write( const char* data, size_t size );
    -
    2336  virtual void Putc( char ch );
    -
    2337 
    -
    2338  inline void Write(const char* data) { Write(data, strlen(data)); }
    -
    2339 
    -
    2340  void SealElementIfJustOpened();
    -
    2341  bool _elementJustOpened;
    -
    2342  DynArray< const char*, 10 > _stack;
    -
    2343 
    -
    2344 private:
    -
    2349  void PrepareForNewNode( bool compactMode );
    -
    2350  void PrintString( const char*, bool restrictedEntitySet ); // prints out, after detecting entities.
    -
    2351 
    -
    2352  bool _firstElement;
    -
    2353  FILE* _fp;
    -
    2354  int _depth;
    -
    2355  int _textDepth;
    -
    2356  bool _processEntities;
    -
    2357  bool _compactMode;
    -
    2358 
    -
    2359  enum {
    -
    2360  ENTITY_RANGE = 64,
    -
    2361  BUF_SIZE = 200
    -
    2362  };
    -
    2363  bool _entityFlag[ENTITY_RANGE];
    -
    2364  bool _restrictedEntityFlag[ENTITY_RANGE];
    -
    2365 
    -
    2366  DynArray< char, 20 > _buffer;
    -
    2367 
    -
    2368  // Prohibit cloning, intentionally not implemented
    -
    2369  XMLPrinter( const XMLPrinter& );
    -
    2370  XMLPrinter& operator=( const XMLPrinter& );
    -
    2371 };
    -
    2372 
    -
    2373 
    -
    2374 } // tinyxml2
    -
    2375 
    -
    2376 #if defined(_MSC_VER)
    -
    2377 # pragma warning(pop)
    -
    2378 #endif
    -
    2379 
    -
    2380 #endif // TINYXML2_INCLUDED
    -
    Definition: tinyxml2.h:1141
    -
    int GetLineNum() const
    Gets the line number the attribute is in, if the document was parsed from a file.
    Definition: tinyxml2.h:1151
    +
    1/*
    +
    2Original code by Lee Thomason (www.grinninglizard.com)
    +
    3
    +
    4This software is provided 'as-is', without any express or implied
    +
    5warranty. In no event will the authors be held liable for any
    +
    6damages arising from the use of this software.
    +
    7
    +
    8Permission is granted to anyone to use this software for any
    +
    9purpose, including commercial applications, and to alter it and
    +
    10redistribute it freely, subject to the following restrictions:
    +
    11
    +
    121. The origin of this software must not be misrepresented; you must
    +
    13not claim that you wrote the original software. If you use this
    +
    14software in a product, an acknowledgment in the product documentation
    +
    15would be appreciated but is not required.
    +
    16
    +
    172. Altered source versions must be plainly marked as such, and
    +
    18must not be misrepresented as being the original software.
    +
    19
    +
    203. This notice may not be removed or altered from any source
    +
    21distribution.
    +
    22*/
    +
    23
    +
    24#ifndef TINYXML2_INCLUDED
    +
    25#define TINYXML2_INCLUDED
    +
    26
    +
    27#if defined(ANDROID_NDK) || defined(__BORLANDC__) || defined(__QNXNTO__)
    +
    28# include <ctype.h>
    +
    29# include <limits.h>
    +
    30# include <stdio.h>
    +
    31# include <stdlib.h>
    +
    32# include <string.h>
    +
    33# if defined(__PS3__)
    +
    34# include <stddef.h>
    +
    35# endif
    +
    36#else
    +
    37# include <cctype>
    +
    38# include <climits>
    +
    39# include <cstdio>
    +
    40# include <cstdlib>
    +
    41# include <cstring>
    +
    42#endif
    +
    43#include <stdint.h>
    +
    44
    +
    45/*
    +
    46 gcc:
    +
    47 g++ -Wall -DTINYXML2_DEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe
    +
    48
    +
    49 Formatting, Artistic Style:
    +
    50 AStyle.exe --style=1tbs --indent-switches --break-closing-brackets --indent-preprocessor tinyxml2.cpp tinyxml2.h
    +
    51*/
    +
    52
    +
    53#if defined( _DEBUG ) || defined (__DEBUG__)
    +
    54# ifndef TINYXML2_DEBUG
    +
    55# define TINYXML2_DEBUG
    +
    56# endif
    +
    57#endif
    +
    58
    +
    59#ifdef _MSC_VER
    +
    60# pragma warning(push)
    +
    61# pragma warning(disable: 4251)
    +
    62#endif
    +
    63
    +
    64#ifdef _MSC_VER
    +
    65# ifdef TINYXML2_EXPORT
    +
    66# define TINYXML2_LIB __declspec(dllexport)
    +
    67# elif defined(TINYXML2_IMPORT)
    +
    68# define TINYXML2_LIB __declspec(dllimport)
    +
    69# else
    +
    70# define TINYXML2_LIB
    +
    71# endif
    +
    72#elif __GNUC__ >= 4
    +
    73# define TINYXML2_LIB __attribute__((visibility("default")))
    +
    74#else
    +
    75# define TINYXML2_LIB
    +
    76#endif
    +
    77
    +
    78
    +
    79#if !defined(TIXMLASSERT)
    +
    80#if defined(TINYXML2_DEBUG)
    +
    81# if defined(_MSC_VER)
    +
    82# // "(void)0," is for suppressing C4127 warning in "assert(false)", "assert(true)" and the like
    +
    83# define TIXMLASSERT( x ) do { if ( !((void)0,(x))) { __debugbreak(); } } while(false)
    +
    84# elif defined (ANDROID_NDK)
    +
    85# include <android/log.h>
    +
    86# define TIXMLASSERT( x ) do { if ( !(x)) { __android_log_assert( "assert", "grinliz", "ASSERT in '%s' at %d.", __FILE__, __LINE__ ); } } while(false)
    +
    87# else
    +
    88# include <assert.h>
    +
    89# define TIXMLASSERT assert
    +
    90# endif
    +
    91#else
    +
    92# define TIXMLASSERT( x ) do {} while(false)
    +
    93#endif
    +
    94#endif
    +
    95
    +
    96/* Versioning, past 1.0.14:
    +
    97 http://semver.org/
    +
    98*/
    +
    99static const int TIXML2_MAJOR_VERSION = 10;
    +
    100static const int TIXML2_MINOR_VERSION = 0;
    +
    101static const int TIXML2_PATCH_VERSION = 0;
    +
    102
    +
    103#define TINYXML2_MAJOR_VERSION 10
    +
    104#define TINYXML2_MINOR_VERSION 0
    +
    105#define TINYXML2_PATCH_VERSION 0
    +
    106
    +
    107// A fixed element depth limit is problematic. There needs to be a
    +
    108// limit to avoid a stack overflow. However, that limit varies per
    +
    109// system, and the capacity of the stack. On the other hand, it's a trivial
    +
    110// attack that can result from ill, malicious, or even correctly formed XML,
    +
    111// so there needs to be a limit in place.
    +
    112static const int TINYXML2_MAX_ELEMENT_DEPTH = 500;
    +
    113
    +
    114namespace tinyxml2
    +
    115{
    +
    116class XMLDocument;
    +
    117class XMLElement;
    +
    118class XMLAttribute;
    +
    119class XMLComment;
    +
    120class XMLText;
    +
    121class XMLDeclaration;
    +
    122class XMLUnknown;
    +
    123class XMLPrinter;
    +
    124
    +
    125/*
    +
    126 A class that wraps strings. Normally stores the start and end
    +
    127 pointers into the XML file itself, and will apply normalization
    +
    128 and entity translation if actually read. Can also store (and memory
    +
    129 manage) a traditional char[]
    +
    130
    +
    131 Isn't clear why TINYXML2_LIB is needed; but seems to fix #719
    +
    132*/
    +
    133class TINYXML2_LIB StrPair
    +
    134{
    +
    135public:
    +
    136 enum Mode {
    +
    137 NEEDS_ENTITY_PROCESSING = 0x01,
    +
    138 NEEDS_NEWLINE_NORMALIZATION = 0x02,
    +
    139 NEEDS_WHITESPACE_COLLAPSING = 0x04,
    +
    140
    +
    141 TEXT_ELEMENT = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
    +
    142 TEXT_ELEMENT_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION,
    +
    143 ATTRIBUTE_NAME = 0,
    +
    144 ATTRIBUTE_VALUE = NEEDS_ENTITY_PROCESSING | NEEDS_NEWLINE_NORMALIZATION,
    +
    145 ATTRIBUTE_VALUE_LEAVE_ENTITIES = NEEDS_NEWLINE_NORMALIZATION,
    +
    146 COMMENT = NEEDS_NEWLINE_NORMALIZATION
    +
    147 };
    +
    148
    +
    149 StrPair() : _flags( 0 ), _start( 0 ), _end( 0 ) {}
    +
    150 ~StrPair();
    +
    151
    +
    152 void Set( char* start, char* end, int flags ) {
    +
    153 TIXMLASSERT( start );
    +
    154 TIXMLASSERT( end );
    +
    155 Reset();
    +
    156 _start = start;
    +
    157 _end = end;
    +
    158 _flags = flags | NEEDS_FLUSH;
    +
    159 }
    +
    160
    +
    161 const char* GetStr();
    +
    162
    +
    163 bool Empty() const {
    +
    164 return _start == _end;
    +
    165 }
    +
    166
    +
    167 void SetInternedStr( const char* str ) {
    +
    168 Reset();
    +
    169 _start = const_cast<char*>(str);
    +
    170 }
    +
    171
    +
    172 void SetStr( const char* str, int flags=0 );
    +
    173
    +
    174 char* ParseText( char* in, const char* endTag, int strFlags, int* curLineNumPtr );
    +
    175 char* ParseName( char* in );
    +
    176
    +
    177 void TransferTo( StrPair* other );
    +
    178 void Reset();
    +
    179
    +
    180private:
    +
    181 void CollapseWhitespace();
    +
    182
    +
    183 enum {
    +
    184 NEEDS_FLUSH = 0x100,
    +
    185 NEEDS_DELETE = 0x200
    +
    186 };
    +
    187
    +
    188 int _flags;
    +
    189 char* _start;
    +
    190 char* _end;
    +
    191
    +
    192 StrPair( const StrPair& other ); // not supported
    +
    193 void operator=( const StrPair& other ); // not supported, use TransferTo()
    +
    194};
    +
    195
    +
    196
    +
    197/*
    +
    198 A dynamic array of Plain Old Data. Doesn't support constructors, etc.
    +
    199 Has a small initial memory pool, so that low or no usage will not
    +
    200 cause a call to new/delete
    +
    201*/
    +
    202template <class T, int INITIAL_SIZE>
    +
    203class DynArray
    +
    204{
    +
    205public:
    +
    206 DynArray() :
    +
    207 _mem( _pool ),
    +
    208 _allocated( INITIAL_SIZE ),
    +
    209 _size( 0 )
    +
    210 {
    +
    211 }
    +
    212
    +
    213 ~DynArray() {
    +
    214 if ( _mem != _pool ) {
    +
    215 delete [] _mem;
    +
    216 }
    +
    217 }
    +
    218
    +
    219 void Clear() {
    +
    220 _size = 0;
    +
    221 }
    +
    222
    +
    223 void Push( T t ) {
    +
    224 TIXMLASSERT( _size < INT_MAX );
    +
    225 EnsureCapacity( _size+1 );
    +
    226 _mem[_size] = t;
    +
    227 ++_size;
    +
    228 }
    +
    229
    +
    230 T* PushArr( int count ) {
    +
    231 TIXMLASSERT( count >= 0 );
    +
    232 TIXMLASSERT( _size <= INT_MAX - count );
    +
    233 EnsureCapacity( _size+count );
    +
    234 T* ret = &_mem[_size];
    +
    235 _size += count;
    +
    236 return ret;
    +
    237 }
    +
    238
    +
    239 T Pop() {
    +
    240 TIXMLASSERT( _size > 0 );
    +
    241 --_size;
    +
    242 return _mem[_size];
    +
    243 }
    +
    244
    +
    245 void PopArr( int count ) {
    +
    246 TIXMLASSERT( _size >= count );
    +
    247 _size -= count;
    +
    248 }
    +
    249
    +
    250 bool Empty() const {
    +
    251 return _size == 0;
    +
    252 }
    +
    253
    +
    254 T& operator[](int i) {
    +
    255 TIXMLASSERT( i>= 0 && i < _size );
    +
    256 return _mem[i];
    +
    257 }
    +
    258
    +
    259 const T& operator[](int i) const {
    +
    260 TIXMLASSERT( i>= 0 && i < _size );
    +
    261 return _mem[i];
    +
    262 }
    +
    263
    +
    264 const T& PeekTop() const {
    +
    265 TIXMLASSERT( _size > 0 );
    +
    266 return _mem[ _size - 1];
    +
    267 }
    +
    268
    +
    269 int Size() const {
    +
    270 TIXMLASSERT( _size >= 0 );
    +
    271 return _size;
    +
    272 }
    +
    273
    +
    274 int Capacity() const {
    +
    275 TIXMLASSERT( _allocated >= INITIAL_SIZE );
    +
    276 return _allocated;
    +
    277 }
    +
    278
    +
    279 void SwapRemove(int i) {
    +
    280 TIXMLASSERT(i >= 0 && i < _size);
    +
    281 TIXMLASSERT(_size > 0);
    +
    282 _mem[i] = _mem[_size - 1];
    +
    283 --_size;
    +
    284 }
    +
    285
    +
    286 const T* Mem() const {
    +
    287 TIXMLASSERT( _mem );
    +
    288 return _mem;
    +
    289 }
    +
    290
    +
    291 T* Mem() {
    +
    292 TIXMLASSERT( _mem );
    +
    293 return _mem;
    +
    294 }
    +
    295
    +
    296private:
    +
    297 DynArray( const DynArray& ); // not supported
    +
    298 void operator=( const DynArray& ); // not supported
    +
    299
    +
    300 void EnsureCapacity( int cap ) {
    +
    301 TIXMLASSERT( cap > 0 );
    +
    302 if ( cap > _allocated ) {
    +
    303 TIXMLASSERT( cap <= INT_MAX / 2 );
    +
    304 const int newAllocated = cap * 2;
    +
    305 T* newMem = new T[static_cast<unsigned int>(newAllocated)];
    +
    306 TIXMLASSERT( newAllocated >= _size );
    +
    307 memcpy( newMem, _mem, sizeof(T)*static_cast<size_t>(_size) ); // warning: not using constructors, only works for PODs
    +
    308 if ( _mem != _pool ) {
    +
    309 delete [] _mem;
    +
    310 }
    +
    311 _mem = newMem;
    +
    312 _allocated = newAllocated;
    +
    313 }
    +
    314 }
    +
    315
    +
    316 T* _mem;
    +
    317 T _pool[static_cast<size_t>(INITIAL_SIZE)];
    +
    318 int _allocated; // objects allocated
    +
    319 int _size; // number objects in use
    +
    320};
    +
    321
    +
    322
    +
    323/*
    +
    324 Parent virtual class of a pool for fast allocation
    +
    325 and deallocation of objects.
    +
    326*/
    +
    327class MemPool
    +
    328{
    +
    329public:
    +
    330 MemPool() {}
    +
    331 virtual ~MemPool() {}
    +
    332
    +
    333 virtual int ItemSize() const = 0;
    +
    334 virtual void* Alloc() = 0;
    +
    335 virtual void Free( void* ) = 0;
    +
    336 virtual void SetTracked() = 0;
    +
    337};
    +
    338
    +
    339
    +
    340/*
    +
    341 Template child class to create pools of the correct type.
    +
    342*/
    +
    343template< int ITEM_SIZE >
    +
    344class MemPoolT : public MemPool
    +
    345{
    +
    346public:
    +
    347 MemPoolT() : _blockPtrs(), _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0) {}
    +
    348 ~MemPoolT() {
    +
    349 MemPoolT< ITEM_SIZE >::Clear();
    +
    350 }
    +
    351
    +
    352 void Clear() {
    +
    353 // Delete the blocks.
    +
    354 while( !_blockPtrs.Empty()) {
    +
    355 Block* lastBlock = _blockPtrs.Pop();
    +
    356 delete lastBlock;
    +
    357 }
    +
    358 _root = 0;
    +
    359 _currentAllocs = 0;
    +
    360 _nAllocs = 0;
    +
    361 _maxAllocs = 0;
    +
    362 _nUntracked = 0;
    +
    363 }
    +
    364
    +
    365 virtual int ItemSize() const override{
    +
    366 return ITEM_SIZE;
    +
    367 }
    +
    368 int CurrentAllocs() const {
    +
    369 return _currentAllocs;
    +
    370 }
    +
    371
    +
    372 virtual void* Alloc() override{
    +
    373 if ( !_root ) {
    +
    374 // Need a new block.
    +
    375 Block* block = new Block;
    +
    376 _blockPtrs.Push( block );
    +
    377
    +
    378 Item* blockItems = block->items;
    +
    379 for( int i = 0; i < ITEMS_PER_BLOCK - 1; ++i ) {
    +
    380 blockItems[i].next = &(blockItems[i + 1]);
    +
    381 }
    +
    382 blockItems[ITEMS_PER_BLOCK - 1].next = 0;
    +
    383 _root = blockItems;
    +
    384 }
    +
    385 Item* const result = _root;
    +
    386 TIXMLASSERT( result != 0 );
    +
    387 _root = _root->next;
    +
    388
    +
    389 ++_currentAllocs;
    +
    390 if ( _currentAllocs > _maxAllocs ) {
    +
    391 _maxAllocs = _currentAllocs;
    +
    392 }
    +
    393 ++_nAllocs;
    +
    394 ++_nUntracked;
    +
    395 return result;
    +
    396 }
    +
    397
    +
    398 virtual void Free( void* mem ) override {
    +
    399 if ( !mem ) {
    +
    400 return;
    +
    401 }
    +
    402 --_currentAllocs;
    +
    403 Item* item = static_cast<Item*>( mem );
    +
    404#ifdef TINYXML2_DEBUG
    +
    405 memset( item, 0xfe, sizeof( *item ) );
    +
    406#endif
    +
    407 item->next = _root;
    +
    408 _root = item;
    +
    409 }
    +
    410 void Trace( const char* name ) {
    +
    411 printf( "Mempool %s watermark=%d [%dk] current=%d size=%d nAlloc=%d blocks=%d\n",
    +
    412 name, _maxAllocs, _maxAllocs * ITEM_SIZE / 1024, _currentAllocs,
    +
    413 ITEM_SIZE, _nAllocs, _blockPtrs.Size() );
    +
    414 }
    +
    415
    +
    416 void SetTracked() override {
    +
    417 --_nUntracked;
    +
    418 }
    +
    419
    +
    420 int Untracked() const {
    +
    421 return _nUntracked;
    +
    422 }
    +
    423
    +
    424 // This number is perf sensitive. 4k seems like a good tradeoff on my machine.
    +
    425 // The test file is large, 170k.
    +
    426 // Release: VS2010 gcc(no opt)
    +
    427 // 1k: 4000
    +
    428 // 2k: 4000
    +
    429 // 4k: 3900 21000
    +
    430 // 16k: 5200
    +
    431 // 32k: 4300
    +
    432 // 64k: 4000 21000
    +
    433 // Declared public because some compilers do not accept to use ITEMS_PER_BLOCK
    +
    434 // in private part if ITEMS_PER_BLOCK is private
    +
    435 enum { ITEMS_PER_BLOCK = (4 * 1024) / ITEM_SIZE };
    +
    436
    +
    437private:
    +
    438 MemPoolT( const MemPoolT& ); // not supported
    +
    439 void operator=( const MemPoolT& ); // not supported
    +
    440
    +
    441 union Item {
    +
    442 Item* next;
    +
    443 char itemData[static_cast<size_t>(ITEM_SIZE)];
    +
    444 };
    +
    445 struct Block {
    +
    446 Item items[ITEMS_PER_BLOCK];
    +
    447 };
    +
    448 DynArray< Block*, 10 > _blockPtrs;
    +
    449 Item* _root;
    +
    450
    +
    451 int _currentAllocs;
    +
    452 int _nAllocs;
    +
    453 int _maxAllocs;
    +
    454 int _nUntracked;
    +
    455};
    +
    456
    +
    457
    +
    458
    +
    +
    478class TINYXML2_LIB XMLVisitor
    +
    479{
    +
    480public:
    +
    481 virtual ~XMLVisitor() {}
    +
    482
    +
    +
    484 virtual bool VisitEnter( const XMLDocument& /*doc*/ ) {
    +
    485 return true;
    +
    486 }
    +
    +
    +
    488 virtual bool VisitExit( const XMLDocument& /*doc*/ ) {
    +
    489 return true;
    +
    490 }
    +
    +
    491
    +
    +
    493 virtual bool VisitEnter( const XMLElement& /*element*/, const XMLAttribute* /*firstAttribute*/ ) {
    +
    494 return true;
    +
    495 }
    +
    +
    +
    497 virtual bool VisitExit( const XMLElement& /*element*/ ) {
    +
    498 return true;
    +
    499 }
    +
    +
    500
    +
    +
    502 virtual bool Visit( const XMLDeclaration& /*declaration*/ ) {
    +
    503 return true;
    +
    504 }
    +
    +
    +
    506 virtual bool Visit( const XMLText& /*text*/ ) {
    +
    507 return true;
    +
    508 }
    +
    +
    +
    510 virtual bool Visit( const XMLComment& /*comment*/ ) {
    +
    511 return true;
    +
    512 }
    +
    +
    +
    514 virtual bool Visit( const XMLUnknown& /*unknown*/ ) {
    +
    515 return true;
    +
    516 }
    +
    +
    517};
    +
    +
    518
    +
    519// WARNING: must match XMLDocument::_errorNames[]
    +
    520enum XMLError {
    +
    521 XML_SUCCESS = 0,
    +
    522 XML_NO_ATTRIBUTE,
    +
    523 XML_WRONG_ATTRIBUTE_TYPE,
    +
    524 XML_ERROR_FILE_NOT_FOUND,
    +
    525 XML_ERROR_FILE_COULD_NOT_BE_OPENED,
    +
    526 XML_ERROR_FILE_READ_ERROR,
    +
    527 XML_ERROR_PARSING_ELEMENT,
    +
    528 XML_ERROR_PARSING_ATTRIBUTE,
    +
    529 XML_ERROR_PARSING_TEXT,
    +
    530 XML_ERROR_PARSING_CDATA,
    +
    531 XML_ERROR_PARSING_COMMENT,
    +
    532 XML_ERROR_PARSING_DECLARATION,
    +
    533 XML_ERROR_PARSING_UNKNOWN,
    +
    534 XML_ERROR_EMPTY_DOCUMENT,
    +
    535 XML_ERROR_MISMATCHED_ELEMENT,
    +
    536 XML_ERROR_PARSING,
    +
    537 XML_CAN_NOT_CONVERT_TEXT,
    +
    538 XML_NO_TEXT_NODE,
    +
    539 XML_ELEMENT_DEPTH_EXCEEDED,
    +
    540
    +
    541 XML_ERROR_COUNT
    +
    542};
    +
    543
    +
    544
    +
    545/*
    +
    546 Utility functionality.
    +
    547*/
    +
    548class TINYXML2_LIB XMLUtil
    +
    549{
    +
    550public:
    +
    551 static const char* SkipWhiteSpace( const char* p, int* curLineNumPtr ) {
    +
    552 TIXMLASSERT( p );
    +
    553
    +
    554 while( IsWhiteSpace(*p) ) {
    +
    555 if (curLineNumPtr && *p == '\n') {
    +
    556 ++(*curLineNumPtr);
    +
    557 }
    +
    558 ++p;
    +
    559 }
    +
    560 TIXMLASSERT( p );
    +
    561 return p;
    +
    562 }
    +
    563 static char* SkipWhiteSpace( char* const p, int* curLineNumPtr ) {
    +
    564 return const_cast<char*>( SkipWhiteSpace( const_cast<const char*>(p), curLineNumPtr ) );
    +
    565 }
    +
    566
    +
    567 // Anything in the high order range of UTF-8 is assumed to not be whitespace. This isn't
    +
    568 // correct, but simple, and usually works.
    +
    569 static bool IsWhiteSpace( char p ) {
    +
    570 return !IsUTF8Continuation(p) && isspace( static_cast<unsigned char>(p) );
    +
    571 }
    +
    572
    +
    573 inline static bool IsNameStartChar( unsigned char ch ) {
    +
    574 if ( ch >= 128 ) {
    +
    575 // This is a heuristic guess in attempt to not implement Unicode-aware isalpha()
    +
    576 return true;
    +
    577 }
    +
    578 if ( isalpha( ch ) ) {
    +
    579 return true;
    +
    580 }
    +
    581 return ch == ':' || ch == '_';
    +
    582 }
    +
    583
    +
    584 inline static bool IsNameChar( unsigned char ch ) {
    +
    585 return IsNameStartChar( ch )
    +
    586 || isdigit( ch )
    +
    587 || ch == '.'
    +
    588 || ch == '-';
    +
    589 }
    +
    590
    +
    591 inline static bool IsPrefixHex( const char* p) {
    +
    592 p = SkipWhiteSpace(p, 0);
    +
    593 return p && *p == '0' && ( *(p + 1) == 'x' || *(p + 1) == 'X');
    +
    594 }
    +
    595
    +
    596 inline static bool StringEqual( const char* p, const char* q, int nChar=INT_MAX ) {
    +
    597 if ( p == q ) {
    +
    598 return true;
    +
    599 }
    +
    600 TIXMLASSERT( p );
    +
    601 TIXMLASSERT( q );
    +
    602 TIXMLASSERT( nChar >= 0 );
    +
    603 return strncmp( p, q, static_cast<size_t>(nChar) ) == 0;
    +
    604 }
    +
    605
    +
    606 inline static bool IsUTF8Continuation( const char p ) {
    +
    607 return ( p & 0x80 ) != 0;
    +
    608 }
    +
    609
    +
    610 static const char* ReadBOM( const char* p, bool* hasBOM );
    +
    611 // p is the starting location,
    +
    612 // the UTF-8 value of the entity will be placed in value, and length filled in.
    +
    613 static const char* GetCharacterRef( const char* p, char* value, int* length );
    +
    614 static void ConvertUTF32ToUTF8( unsigned long input, char* output, int* length );
    +
    615
    +
    616 // converts primitive types to strings
    +
    617 static void ToStr( int v, char* buffer, int bufferSize );
    +
    618 static void ToStr( unsigned v, char* buffer, int bufferSize );
    +
    619 static void ToStr( bool v, char* buffer, int bufferSize );
    +
    620 static void ToStr( float v, char* buffer, int bufferSize );
    +
    621 static void ToStr( double v, char* buffer, int bufferSize );
    +
    622 static void ToStr(int64_t v, char* buffer, int bufferSize);
    +
    623 static void ToStr(uint64_t v, char* buffer, int bufferSize);
    +
    624
    +
    625 // converts strings to primitive types
    +
    626 static bool ToInt( const char* str, int* value );
    +
    627 static bool ToUnsigned( const char* str, unsigned* value );
    +
    628 static bool ToBool( const char* str, bool* value );
    +
    629 static bool ToFloat( const char* str, float* value );
    +
    630 static bool ToDouble( const char* str, double* value );
    +
    631 static bool ToInt64(const char* str, int64_t* value);
    +
    632 static bool ToUnsigned64(const char* str, uint64_t* value);
    +
    633 // Changes what is serialized for a boolean value.
    +
    634 // Default to "true" and "false". Shouldn't be changed
    +
    635 // unless you have a special testing or compatibility need.
    +
    636 // Be careful: static, global, & not thread safe.
    +
    637 // Be sure to set static const memory as parameters.
    +
    638 static void SetBoolSerialization(const char* writeTrue, const char* writeFalse);
    +
    639
    +
    640private:
    +
    641 static const char* writeBoolTrue;
    +
    642 static const char* writeBoolFalse;
    +
    643};
    +
    644
    +
    645
    +
    +
    671class TINYXML2_LIB XMLNode
    +
    672{
    +
    673 friend class XMLDocument;
    +
    674 friend class XMLElement;
    +
    675public:
    +
    676
    +
    +
    678 const XMLDocument* GetDocument() const {
    +
    679 TIXMLASSERT( _document );
    +
    680 return _document;
    +
    681 }
    +
    +
    + +
    684 TIXMLASSERT( _document );
    +
    685 return _document;
    +
    686 }
    +
    +
    687
    +
    + +
    690 return 0;
    +
    691 }
    +
    +
    +
    693 virtual XMLText* ToText() {
    +
    694 return 0;
    +
    695 }
    +
    +
    + +
    698 return 0;
    +
    699 }
    +
    +
    + +
    702 return 0;
    +
    703 }
    +
    +
    + +
    706 return 0;
    +
    707 }
    +
    +
    + +
    710 return 0;
    +
    711 }
    +
    +
    712
    +
    713 virtual const XMLElement* ToElement() const {
    +
    714 return 0;
    +
    715 }
    +
    716 virtual const XMLText* ToText() const {
    +
    717 return 0;
    +
    718 }
    +
    719 virtual const XMLComment* ToComment() const {
    +
    720 return 0;
    +
    721 }
    +
    722 virtual const XMLDocument* ToDocument() const {
    +
    723 return 0;
    +
    724 }
    +
    725 virtual const XMLDeclaration* ToDeclaration() const {
    +
    726 return 0;
    +
    727 }
    +
    728 virtual const XMLUnknown* ToUnknown() const {
    +
    729 return 0;
    +
    730 }
    +
    731
    +
    732 // ChildElementCount was originally suggested by msteiger on the sourceforge page for TinyXML and modified by KB1SPH for TinyXML-2.
    +
    733
    +
    734 int ChildElementCount(const char *value) const;
    +
    735
    +
    736 int ChildElementCount() const;
    +
    737
    +
    747 const char* Value() const;
    +
    748
    +
    752 void SetValue( const char* val, bool staticMem=false );
    +
    753
    +
    755 int GetLineNum() const { return _parseLineNum; }
    +
    756
    +
    +
    758 const XMLNode* Parent() const {
    +
    759 return _parent;
    +
    760 }
    +
    +
    761
    +
    762 XMLNode* Parent() {
    +
    763 return _parent;
    +
    764 }
    +
    765
    +
    +
    767 bool NoChildren() const {
    +
    768 return !_firstChild;
    +
    769 }
    +
    +
    770
    +
    +
    772 const XMLNode* FirstChild() const {
    +
    773 return _firstChild;
    +
    774 }
    +
    +
    775
    +
    776 XMLNode* FirstChild() {
    +
    777 return _firstChild;
    +
    778 }
    +
    779
    +
    783 const XMLElement* FirstChildElement( const char* name = 0 ) const;
    +
    784
    +
    785 XMLElement* FirstChildElement( const char* name = 0 ) {
    +
    786 return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->FirstChildElement( name ));
    +
    787 }
    +
    788
    +
    +
    790 const XMLNode* LastChild() const {
    +
    791 return _lastChild;
    +
    792 }
    +
    +
    793
    +
    794 XMLNode* LastChild() {
    +
    795 return _lastChild;
    +
    796 }
    +
    797
    +
    801 const XMLElement* LastChildElement( const char* name = 0 ) const;
    +
    802
    +
    803 XMLElement* LastChildElement( const char* name = 0 ) {
    +
    804 return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->LastChildElement(name) );
    +
    805 }
    +
    806
    +
    +
    808 const XMLNode* PreviousSibling() const {
    +
    809 return _prev;
    +
    810 }
    +
    +
    811
    +
    812 XMLNode* PreviousSibling() {
    +
    813 return _prev;
    +
    814 }
    +
    815
    +
    817 const XMLElement* PreviousSiblingElement( const char* name = 0 ) const ;
    +
    818
    +
    819 XMLElement* PreviousSiblingElement( const char* name = 0 ) {
    +
    820 return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->PreviousSiblingElement( name ) );
    +
    821 }
    +
    822
    +
    +
    824 const XMLNode* NextSibling() const {
    +
    825 return _next;
    +
    826 }
    +
    +
    827
    +
    828 XMLNode* NextSibling() {
    +
    829 return _next;
    +
    830 }
    +
    831
    +
    833 const XMLElement* NextSiblingElement( const char* name = 0 ) const;
    +
    834
    +
    835 XMLElement* NextSiblingElement( const char* name = 0 ) {
    +
    836 return const_cast<XMLElement*>(const_cast<const XMLNode*>(this)->NextSiblingElement( name ) );
    +
    837 }
    +
    838
    + +
    847
    +
    848 XMLNode* LinkEndChild( XMLNode* addThis ) {
    +
    849 return InsertEndChild( addThis );
    +
    850 }
    + +
    867 XMLNode* InsertAfterChild( XMLNode* afterThis, XMLNode* addThis );
    +
    868
    + +
    873
    +
    877 void DeleteChild( XMLNode* node );
    +
    878
    +
    888 virtual XMLNode* ShallowClone( XMLDocument* document ) const = 0;
    +
    889
    +
    903 XMLNode* DeepClone( XMLDocument* target ) const;
    +
    904
    +
    911 virtual bool ShallowEqual( const XMLNode* compare ) const = 0;
    +
    912
    +
    935 virtual bool Accept( XMLVisitor* visitor ) const = 0;
    +
    936
    +
    942 void SetUserData(void* userData) { _userData = userData; }
    +
    943
    +
    949 void* GetUserData() const { return _userData; }
    +
    950
    +
    951protected:
    +
    952 explicit XMLNode( XMLDocument* );
    +
    953 virtual ~XMLNode();
    +
    954
    +
    955 virtual char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr);
    +
    956
    +
    957 XMLDocument* _document;
    +
    958 XMLNode* _parent;
    +
    959 mutable StrPair _value;
    +
    960 int _parseLineNum;
    +
    961
    +
    962 XMLNode* _firstChild;
    +
    963 XMLNode* _lastChild;
    +
    964
    +
    965 XMLNode* _prev;
    +
    966 XMLNode* _next;
    +
    967
    +
    968 void* _userData;
    +
    969
    +
    970private:
    +
    971 MemPool* _memPool;
    +
    972 void Unlink( XMLNode* child );
    +
    973 static void DeleteNode( XMLNode* node );
    +
    974 void InsertChildPreamble( XMLNode* insertThis ) const;
    +
    975 const XMLElement* ToElementWithName( const char* name ) const;
    +
    976
    +
    977 XMLNode( const XMLNode& ); // not supported
    +
    978 XMLNode& operator=( const XMLNode& ); // not supported
    +
    979};
    +
    +
    980
    +
    981
    +
    +
    994class TINYXML2_LIB XMLText : public XMLNode
    +
    995{
    +
    996 friend class XMLDocument;
    +
    997public:
    +
    998 virtual bool Accept( XMLVisitor* visitor ) const override;
    +
    999
    +
    +
    1000 virtual XMLText* ToText() override {
    +
    1001 return this;
    +
    1002 }
    +
    +
    1003 virtual const XMLText* ToText() const override {
    +
    1004 return this;
    +
    1005 }
    +
    1006
    +
    +
    1008 void SetCData( bool isCData ) {
    +
    1009 _isCData = isCData;
    +
    1010 }
    +
    +
    +
    1012 bool CData() const {
    +
    1013 return _isCData;
    +
    1014 }
    +
    +
    1015
    +
    1016 virtual XMLNode* ShallowClone( XMLDocument* document ) const override;
    +
    1017 virtual bool ShallowEqual( const XMLNode* compare ) const override;
    +
    1018
    +
    1019protected:
    +
    1020 explicit XMLText( XMLDocument* doc ) : XMLNode( doc ), _isCData( false ) {}
    +
    1021 virtual ~XMLText() {}
    +
    1022
    +
    1023 char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override;
    +
    1024
    +
    1025private:
    +
    1026 bool _isCData;
    +
    1027
    +
    1028 XMLText( const XMLText& ); // not supported
    +
    1029 XMLText& operator=( const XMLText& ); // not supported
    +
    1030};
    +
    +
    1031
    +
    1032
    +
    +
    1034class TINYXML2_LIB XMLComment : public XMLNode
    +
    1035{
    +
    1036 friend class XMLDocument;
    +
    1037public:
    +
    +
    1038 virtual XMLComment* ToComment() override {
    +
    1039 return this;
    +
    1040 }
    +
    +
    1041 virtual const XMLComment* ToComment() const override {
    +
    1042 return this;
    +
    1043 }
    +
    1044
    +
    1045 virtual bool Accept( XMLVisitor* visitor ) const override;
    +
    1046
    +
    1047 virtual XMLNode* ShallowClone( XMLDocument* document ) const override;
    +
    1048 virtual bool ShallowEqual( const XMLNode* compare ) const override;
    +
    1049
    +
    1050protected:
    +
    1051 explicit XMLComment( XMLDocument* doc );
    +
    1052 virtual ~XMLComment();
    +
    1053
    +
    1054 char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr) override;
    +
    1055
    +
    1056private:
    +
    1057 XMLComment( const XMLComment& ); // not supported
    +
    1058 XMLComment& operator=( const XMLComment& ); // not supported
    +
    1059};
    +
    +
    1060
    +
    1061
    +
    +
    1073class TINYXML2_LIB XMLDeclaration : public XMLNode
    +
    1074{
    +
    1075 friend class XMLDocument;
    +
    1076public:
    +
    +
    1077 virtual XMLDeclaration* ToDeclaration() override {
    +
    1078 return this;
    +
    1079 }
    +
    +
    1080 virtual const XMLDeclaration* ToDeclaration() const override {
    +
    1081 return this;
    +
    1082 }
    +
    1083
    +
    1084 virtual bool Accept( XMLVisitor* visitor ) const override;
    +
    1085
    +
    1086 virtual XMLNode* ShallowClone( XMLDocument* document ) const override;
    +
    1087 virtual bool ShallowEqual( const XMLNode* compare ) const override;
    +
    1088
    +
    1089protected:
    +
    1090 explicit XMLDeclaration( XMLDocument* doc );
    +
    1091 virtual ~XMLDeclaration();
    +
    1092
    +
    1093 char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override;
    +
    1094
    +
    1095private:
    +
    1096 XMLDeclaration( const XMLDeclaration& ); // not supported
    +
    1097 XMLDeclaration& operator=( const XMLDeclaration& ); // not supported
    +
    1098};
    +
    +
    1099
    +
    1100
    +
    +
    1108class TINYXML2_LIB XMLUnknown : public XMLNode
    +
    1109{
    +
    1110 friend class XMLDocument;
    +
    1111public:
    +
    +
    1112 virtual XMLUnknown* ToUnknown() override {
    +
    1113 return this;
    +
    1114 }
    +
    +
    1115 virtual const XMLUnknown* ToUnknown() const override {
    +
    1116 return this;
    +
    1117 }
    +
    1118
    +
    1119 virtual bool Accept( XMLVisitor* visitor ) const override;
    +
    1120
    +
    1121 virtual XMLNode* ShallowClone( XMLDocument* document ) const override;
    +
    1122 virtual bool ShallowEqual( const XMLNode* compare ) const override;
    +
    1123
    +
    1124protected:
    +
    1125 explicit XMLUnknown( XMLDocument* doc );
    +
    1126 virtual ~XMLUnknown();
    +
    1127
    +
    1128 char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override;
    +
    1129
    +
    1130private:
    +
    1131 XMLUnknown( const XMLUnknown& ); // not supported
    +
    1132 XMLUnknown& operator=( const XMLUnknown& ); // not supported
    +
    1133};
    +
    +
    1134
    +
    1135
    +
    1136
    +
    +
    1143class TINYXML2_LIB XMLAttribute
    +
    1144{
    +
    1145 friend class XMLElement;
    +
    1146public:
    +
    1148 const char* Name() const;
    +
    1149
    +
    1151 const char* Value() const;
    +
    1152
    +
    1154 int GetLineNum() const { return _parseLineNum; }
    +
    1155
    +
    +
    1157 const XMLAttribute* Next() const {
    +
    1158 return _next;
    +
    1159 }
    +
    +
    1160
    +
    +
    1165 int IntValue() const {
    +
    1166 int i = 0;
    +
    1167 QueryIntValue(&i);
    +
    1168 return i;
    +
    1169 }
    +
    +
    1170
    +
    1171 int64_t Int64Value() const {
    +
    1172 int64_t i = 0;
    +
    1173 QueryInt64Value(&i);
    +
    1174 return i;
    +
    1175 }
    +
    1176
    +
    1177 uint64_t Unsigned64Value() const {
    +
    1178 uint64_t i = 0;
    +
    1179 QueryUnsigned64Value(&i);
    +
    1180 return i;
    +
    1181 }
    +
    1182
    +
    +
    1184 unsigned UnsignedValue() const {
    +
    1185 unsigned i=0;
    +
    1186 QueryUnsignedValue( &i );
    +
    1187 return i;
    +
    1188 }
    +
    +
    +
    1190 bool BoolValue() const {
    +
    1191 bool b=false;
    +
    1192 QueryBoolValue( &b );
    +
    1193 return b;
    +
    1194 }
    +
    +
    +
    1196 double DoubleValue() const {
    +
    1197 double d=0;
    +
    1198 QueryDoubleValue( &d );
    +
    1199 return d;
    +
    1200 }
    +
    +
    +
    1202 float FloatValue() const {
    +
    1203 float f=0;
    +
    1204 QueryFloatValue( &f );
    +
    1205 return f;
    +
    1206 }
    +
    +
    1207
    +
    1212 XMLError QueryIntValue( int* value ) const;
    +
    1214 XMLError QueryUnsignedValue( unsigned int* value ) const;
    +
    1216 XMLError QueryInt64Value(int64_t* value) const;
    +
    1218 XMLError QueryUnsigned64Value(uint64_t* value) const;
    +
    1220 XMLError QueryBoolValue( bool* value ) const;
    +
    1222 XMLError QueryDoubleValue( double* value ) const;
    +
    1224 XMLError QueryFloatValue( float* value ) const;
    +
    1225
    +
    1227 void SetAttribute( const char* value );
    +
    1229 void SetAttribute( int value );
    +
    1231 void SetAttribute( unsigned value );
    +
    1233 void SetAttribute(int64_t value);
    +
    1235 void SetAttribute(uint64_t value);
    +
    1237 void SetAttribute( bool value );
    +
    1239 void SetAttribute( double value );
    +
    1241 void SetAttribute( float value );
    +
    1242
    +
    1243private:
    +
    1244 enum { BUF_SIZE = 200 };
    +
    1245
    +
    1246 XMLAttribute() : _name(), _value(),_parseLineNum( 0 ), _next( 0 ), _memPool( 0 ) {}
    +
    1247 virtual ~XMLAttribute() {}
    +
    1248
    +
    1249 XMLAttribute( const XMLAttribute& ); // not supported
    +
    1250 void operator=( const XMLAttribute& ); // not supported
    +
    1251 void SetName( const char* name );
    +
    1252
    +
    1253 char* ParseDeep( char* p, bool processEntities, int* curLineNumPtr );
    +
    1254
    +
    1255 mutable StrPair _name;
    +
    1256 mutable StrPair _value;
    +
    1257 int _parseLineNum;
    +
    1258 XMLAttribute* _next;
    +
    1259 MemPool* _memPool;
    +
    1260};
    +
    +
    1261
    +
    1262
    +
    +
    1267class TINYXML2_LIB XMLElement : public XMLNode
    +
    1268{
    +
    1269 friend class XMLDocument;
    +
    1270public:
    +
    +
    1272 const char* Name() const {
    +
    1273 return Value();
    +
    1274 }
    +
    +
    +
    1276 void SetName( const char* str, bool staticMem=false ) {
    +
    1277 SetValue( str, staticMem );
    +
    1278 }
    +
    +
    1279
    +
    +
    1280 virtual XMLElement* ToElement() override {
    +
    1281 return this;
    +
    1282 }
    +
    +
    1283 virtual const XMLElement* ToElement() const override {
    +
    1284 return this;
    +
    1285 }
    +
    1286 virtual bool Accept( XMLVisitor* visitor ) const override;
    +
    1287
    +
    1311 const char* Attribute( const char* name, const char* value=0 ) const;
    +
    1312
    +
    1319 int IntAttribute(const char* name, int defaultValue = 0) const;
    +
    1321 unsigned UnsignedAttribute(const char* name, unsigned defaultValue = 0) const;
    +
    1323 int64_t Int64Attribute(const char* name, int64_t defaultValue = 0) const;
    +
    1325 uint64_t Unsigned64Attribute(const char* name, uint64_t defaultValue = 0) const;
    +
    1327 bool BoolAttribute(const char* name, bool defaultValue = false) const;
    +
    1329 double DoubleAttribute(const char* name, double defaultValue = 0) const;
    +
    1331 float FloatAttribute(const char* name, float defaultValue = 0) const;
    +
    1332
    +
    +
    1346 XMLError QueryIntAttribute( const char* name, int* value ) const {
    +
    1347 const XMLAttribute* a = FindAttribute( name );
    +
    1348 if ( !a ) {
    +
    1349 return XML_NO_ATTRIBUTE;
    +
    1350 }
    +
    1351 return a->QueryIntValue( value );
    +
    1352 }
    +
    +
    1353
    +
    +
    1355 XMLError QueryUnsignedAttribute( const char* name, unsigned int* value ) const {
    +
    1356 const XMLAttribute* a = FindAttribute( name );
    +
    1357 if ( !a ) {
    +
    1358 return XML_NO_ATTRIBUTE;
    +
    1359 }
    +
    1360 return a->QueryUnsignedValue( value );
    +
    1361 }
    +
    +
    1362
    +
    +
    1364 XMLError QueryInt64Attribute(const char* name, int64_t* value) const {
    +
    1365 const XMLAttribute* a = FindAttribute(name);
    +
    1366 if (!a) {
    +
    1367 return XML_NO_ATTRIBUTE;
    +
    1368 }
    +
    1369 return a->QueryInt64Value(value);
    +
    1370 }
    +
    +
    1371
    +
    +
    1373 XMLError QueryUnsigned64Attribute(const char* name, uint64_t* value) const {
    +
    1374 const XMLAttribute* a = FindAttribute(name);
    +
    1375 if(!a) {
    +
    1376 return XML_NO_ATTRIBUTE;
    +
    1377 }
    +
    1378 return a->QueryUnsigned64Value(value);
    +
    1379 }
    +
    +
    1380
    +
    +
    1382 XMLError QueryBoolAttribute( const char* name, bool* value ) const {
    +
    1383 const XMLAttribute* a = FindAttribute( name );
    +
    1384 if ( !a ) {
    +
    1385 return XML_NO_ATTRIBUTE;
    +
    1386 }
    +
    1387 return a->QueryBoolValue( value );
    +
    1388 }
    +
    +
    +
    1390 XMLError QueryDoubleAttribute( const char* name, double* value ) const {
    +
    1391 const XMLAttribute* a = FindAttribute( name );
    +
    1392 if ( !a ) {
    +
    1393 return XML_NO_ATTRIBUTE;
    +
    1394 }
    +
    1395 return a->QueryDoubleValue( value );
    +
    1396 }
    +
    +
    +
    1398 XMLError QueryFloatAttribute( const char* name, float* value ) const {
    +
    1399 const XMLAttribute* a = FindAttribute( name );
    +
    1400 if ( !a ) {
    +
    1401 return XML_NO_ATTRIBUTE;
    +
    1402 }
    +
    1403 return a->QueryFloatValue( value );
    +
    1404 }
    +
    +
    1405
    +
    +
    1407 XMLError QueryStringAttribute(const char* name, const char** value) const {
    +
    1408 const XMLAttribute* a = FindAttribute(name);
    +
    1409 if (!a) {
    +
    1410 return XML_NO_ATTRIBUTE;
    +
    1411 }
    +
    1412 *value = a->Value();
    +
    1413 return XML_SUCCESS;
    +
    1414 }
    +
    +
    1415
    +
    1416
    +
    1417
    +
    +
    1435 XMLError QueryAttribute( const char* name, int* value ) const {
    +
    1436 return QueryIntAttribute( name, value );
    +
    1437 }
    +
    +
    1438
    +
    1439 XMLError QueryAttribute( const char* name, unsigned int* value ) const {
    +
    1440 return QueryUnsignedAttribute( name, value );
    +
    1441 }
    +
    1442
    +
    1443 XMLError QueryAttribute(const char* name, int64_t* value) const {
    +
    1444 return QueryInt64Attribute(name, value);
    +
    1445 }
    +
    1446
    +
    1447 XMLError QueryAttribute(const char* name, uint64_t* value) const {
    +
    1448 return QueryUnsigned64Attribute(name, value);
    +
    1449 }
    +
    1450
    +
    1451 XMLError QueryAttribute( const char* name, bool* value ) const {
    +
    1452 return QueryBoolAttribute( name, value );
    +
    1453 }
    +
    1454
    +
    1455 XMLError QueryAttribute( const char* name, double* value ) const {
    +
    1456 return QueryDoubleAttribute( name, value );
    +
    1457 }
    +
    1458
    +
    1459 XMLError QueryAttribute( const char* name, float* value ) const {
    +
    1460 return QueryFloatAttribute( name, value );
    +
    1461 }
    +
    1462
    +
    1463 XMLError QueryAttribute(const char* name, const char** value) const {
    +
    1464 return QueryStringAttribute(name, value);
    +
    1465 }
    +
    1466
    +
    +
    1468 void SetAttribute( const char* name, const char* value ) {
    +
    1469 XMLAttribute* a = FindOrCreateAttribute( name );
    +
    1470 a->SetAttribute( value );
    +
    1471 }
    +
    +
    +
    1473 void SetAttribute( const char* name, int value ) {
    +
    1474 XMLAttribute* a = FindOrCreateAttribute( name );
    +
    1475 a->SetAttribute( value );
    +
    1476 }
    +
    +
    +
    1478 void SetAttribute( const char* name, unsigned value ) {
    +
    1479 XMLAttribute* a = FindOrCreateAttribute( name );
    +
    1480 a->SetAttribute( value );
    +
    1481 }
    +
    +
    1482
    +
    +
    1484 void SetAttribute(const char* name, int64_t value) {
    +
    1485 XMLAttribute* a = FindOrCreateAttribute(name);
    +
    1486 a->SetAttribute(value);
    +
    1487 }
    +
    +
    1488
    +
    +
    1490 void SetAttribute(const char* name, uint64_t value) {
    +
    1491 XMLAttribute* a = FindOrCreateAttribute(name);
    +
    1492 a->SetAttribute(value);
    +
    1493 }
    +
    +
    1494
    +
    +
    1496 void SetAttribute( const char* name, bool value ) {
    +
    1497 XMLAttribute* a = FindOrCreateAttribute( name );
    +
    1498 a->SetAttribute( value );
    +
    1499 }
    +
    +
    +
    1501 void SetAttribute( const char* name, double value ) {
    +
    1502 XMLAttribute* a = FindOrCreateAttribute( name );
    +
    1503 a->SetAttribute( value );
    +
    1504 }
    +
    +
    +
    1506 void SetAttribute( const char* name, float value ) {
    +
    1507 XMLAttribute* a = FindOrCreateAttribute( name );
    +
    1508 a->SetAttribute( value );
    +
    1509 }
    +
    +
    1510
    +
    1514 void DeleteAttribute( const char* name );
    +
    1515
    +
    + +
    1518 return _rootAttribute;
    +
    1519 }
    +
    +
    1521 const XMLAttribute* FindAttribute( const char* name ) const;
    +
    1522
    +
    1551 const char* GetText() const;
    +
    1552
    +
    1587 void SetText( const char* inText );
    +
    1589 void SetText( int value );
    +
    1591 void SetText( unsigned value );
    +
    1593 void SetText(int64_t value);
    +
    1595 void SetText(uint64_t value);
    +
    1597 void SetText( bool value );
    +
    1599 void SetText( double value );
    +
    1601 void SetText( float value );
    +
    1602
    +
    1629 XMLError QueryIntText( int* ival ) const;
    +
    1631 XMLError QueryUnsignedText( unsigned* uval ) const;
    +
    1633 XMLError QueryInt64Text(int64_t* uval) const;
    +
    1635 XMLError QueryUnsigned64Text(uint64_t* uval) const;
    +
    1637 XMLError QueryBoolText( bool* bval ) const;
    +
    1639 XMLError QueryDoubleText( double* dval ) const;
    +
    1641 XMLError QueryFloatText( float* fval ) const;
    +
    1642
    +
    1643 int IntText(int defaultValue = 0) const;
    +
    1644
    +
    1646 unsigned UnsignedText(unsigned defaultValue = 0) const;
    +
    1648 int64_t Int64Text(int64_t defaultValue = 0) const;
    +
    1650 uint64_t Unsigned64Text(uint64_t defaultValue = 0) const;
    +
    1652 bool BoolText(bool defaultValue = false) const;
    +
    1654 double DoubleText(double defaultValue = 0) const;
    +
    1656 float FloatText(float defaultValue = 0) const;
    +
    1657
    + +
    1664 XMLComment* InsertNewComment(const char* comment);
    +
    1666 XMLText* InsertNewText(const char* text);
    + +
    1670 XMLUnknown* InsertNewUnknown(const char* text);
    +
    1671
    +
    1672
    +
    1673 // internal:
    +
    1674 enum ElementClosingType {
    +
    1675 OPEN, // <foo>
    +
    1676 CLOSED, // <foo/>
    +
    1677 CLOSING // </foo>
    +
    1678 };
    +
    1679 ElementClosingType ClosingType() const {
    +
    1680 return _closingType;
    +
    1681 }
    +
    1682 virtual XMLNode* ShallowClone( XMLDocument* document ) const override;
    +
    1683 virtual bool ShallowEqual( const XMLNode* compare ) const override;
    +
    1684
    +
    1685protected:
    +
    1686 char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override;
    +
    1687
    +
    1688private:
    +
    1689 XMLElement( XMLDocument* doc );
    +
    1690 virtual ~XMLElement();
    +
    1691 XMLElement( const XMLElement& ); // not supported
    +
    1692 void operator=( const XMLElement& ); // not supported
    +
    1693
    +
    1694 XMLAttribute* FindOrCreateAttribute( const char* name );
    +
    1695 char* ParseAttributes( char* p, int* curLineNumPtr );
    +
    1696 static void DeleteAttribute( XMLAttribute* attribute );
    +
    1697 XMLAttribute* CreateAttribute();
    +
    1698
    +
    1699 enum { BUF_SIZE = 200 };
    +
    1700 ElementClosingType _closingType;
    +
    1701 // The attribute list is ordered; there is no 'lastAttribute'
    +
    1702 // because the list needs to be scanned for dupes before adding
    +
    1703 // a new attribute.
    +
    1704 XMLAttribute* _rootAttribute;
    +
    1705};
    +
    +
    1706
    +
    1707
    +
    1708enum Whitespace {
    +
    1709 PRESERVE_WHITESPACE,
    +
    1710 COLLAPSE_WHITESPACE,
    +
    1711 PEDANTIC_WHITESPACE
    +
    1712};
    +
    1713
    +
    1714
    +
    +
    1720class TINYXML2_LIB XMLDocument : public XMLNode
    +
    1721{
    +
    1722 friend class XMLElement;
    +
    1723 // Gives access to SetError and Push/PopDepth, but over-access for everything else.
    +
    1724 // Wishing C++ had "internal" scope.
    +
    1725 friend class XMLNode;
    +
    1726 friend class XMLText;
    +
    1727 friend class XMLComment;
    +
    1728 friend class XMLDeclaration;
    +
    1729 friend class XMLUnknown;
    +
    1730public:
    +
    1732 XMLDocument( bool processEntities = true, Whitespace whitespaceMode = PRESERVE_WHITESPACE );
    +
    1733 ~XMLDocument();
    +
    1734
    +
    +
    1735 virtual XMLDocument* ToDocument() override {
    +
    1736 TIXMLASSERT( this == _document );
    +
    1737 return this;
    +
    1738 }
    +
    +
    1739 virtual const XMLDocument* ToDocument() const override {
    +
    1740 TIXMLASSERT( this == _document );
    +
    1741 return this;
    +
    1742 }
    +
    1743
    +
    1754 XMLError Parse( const char* xml, size_t nBytes=static_cast<size_t>(-1) );
    +
    1755
    +
    1761 XMLError LoadFile( const char* filename );
    +
    1762
    +
    1774 XMLError LoadFile( FILE* );
    +
    1775
    +
    1781 XMLError SaveFile( const char* filename, bool compact = false );
    +
    1782
    +
    1790 XMLError SaveFile( FILE* fp, bool compact = false );
    +
    1791
    +
    1792 bool ProcessEntities() const {
    +
    1793 return _processEntities;
    +
    1794 }
    +
    1795 Whitespace WhitespaceMode() const {
    +
    1796 return _whitespaceMode;
    +
    1797 }
    +
    1798
    +
    +
    1802 bool HasBOM() const {
    +
    1803 return _writeBOM;
    +
    1804 }
    +
    +
    +
    1807 void SetBOM( bool useBOM ) {
    +
    1808 _writeBOM = useBOM;
    +
    1809 }
    +
    +
    1810
    +
    + +
    1815 return FirstChildElement();
    +
    1816 }
    +
    +
    1817 const XMLElement* RootElement() const {
    +
    1818 return FirstChildElement();
    +
    1819 }
    +
    1820
    +
    1835 void Print( XMLPrinter* streamer=0 ) const;
    +
    1836 virtual bool Accept( XMLVisitor* visitor ) const override;
    +
    1837
    +
    1843 XMLElement* NewElement( const char* name );
    +
    1849 XMLComment* NewComment( const char* comment );
    +
    1855 XMLText* NewText( const char* text );
    +
    1867 XMLDeclaration* NewDeclaration( const char* text=0 );
    +
    1873 XMLUnknown* NewUnknown( const char* text );
    +
    1874
    +
    1879 void DeleteNode( XMLNode* node );
    +
    1880
    + +
    1883
    +
    +
    1885 bool Error() const {
    +
    1886 return _errorID != XML_SUCCESS;
    +
    1887 }
    +
    +
    +
    1889 XMLError ErrorID() const {
    +
    1890 return _errorID;
    +
    1891 }
    +
    +
    1892 const char* ErrorName() const;
    +
    1893 static const char* ErrorIDToName(XMLError errorID);
    +
    1894
    +
    1898 const char* ErrorStr() const;
    +
    1899
    +
    1901 void PrintError() const;
    +
    1902
    +
    +
    1904 int ErrorLineNum() const
    +
    1905 {
    +
    1906 return _errorLineNum;
    +
    1907 }
    +
    +
    1908
    +
    1910 void Clear();
    +
    1911
    +
    1919 void DeepCopy(XMLDocument* target) const;
    +
    1920
    +
    1921 // internal
    +
    1922 char* Identify( char* p, XMLNode** node, bool first );
    +
    1923
    +
    1924 // internal
    +
    1925 void MarkInUse(const XMLNode* const);
    +
    1926
    +
    +
    1927 virtual XMLNode* ShallowClone( XMLDocument* /*document*/ ) const override{
    +
    1928 return 0;
    +
    1929 }
    +
    +
    +
    1930 virtual bool ShallowEqual( const XMLNode* /*compare*/ ) const override{
    +
    1931 return false;
    +
    1932 }
    +
    +
    1933
    +
    1934private:
    +
    1935 XMLDocument( const XMLDocument& ); // not supported
    +
    1936 void operator=( const XMLDocument& ); // not supported
    +
    1937
    +
    1938 bool _writeBOM;
    +
    1939 bool _processEntities;
    +
    1940 XMLError _errorID;
    +
    1941 Whitespace _whitespaceMode;
    +
    1942 mutable StrPair _errorStr;
    +
    1943 int _errorLineNum;
    +
    1944 char* _charBuffer;
    +
    1945 int _parseCurLineNum;
    +
    1946 int _parsingDepth;
    +
    1947 // Memory tracking does add some overhead.
    +
    1948 // However, the code assumes that you don't
    +
    1949 // have a bunch of unlinked nodes around.
    +
    1950 // Therefore it takes less memory to track
    +
    1951 // in the document vs. a linked list in the XMLNode,
    +
    1952 // and the performance is the same.
    +
    1953 DynArray<XMLNode*, 10> _unlinked;
    +
    1954
    +
    1955 MemPoolT< sizeof(XMLElement) > _elementPool;
    +
    1956 MemPoolT< sizeof(XMLAttribute) > _attributePool;
    +
    1957 MemPoolT< sizeof(XMLText) > _textPool;
    +
    1958 MemPoolT< sizeof(XMLComment) > _commentPool;
    +
    1959
    +
    1960 static const char* _errorNames[XML_ERROR_COUNT];
    +
    1961
    +
    1962 void Parse();
    +
    1963
    +
    1964 void SetError( XMLError error, int lineNum, const char* format, ... );
    +
    1965
    +
    1966 // Something of an obvious security hole, once it was discovered.
    +
    1967 // Either an ill-formed XML or an excessively deep one can overflow
    +
    1968 // the stack. Track stack depth, and error out if needed.
    +
    1969 class DepthTracker {
    +
    1970 public:
    +
    1971 explicit DepthTracker(XMLDocument * document) {
    +
    1972 this->_document = document;
    +
    1973 document->PushDepth();
    +
    1974 }
    +
    1975 ~DepthTracker() {
    +
    1976 _document->PopDepth();
    +
    1977 }
    +
    1978 private:
    +
    1979 XMLDocument * _document;
    +
    1980 };
    +
    1981 void PushDepth();
    +
    1982 void PopDepth();
    +
    1983
    +
    1984 template<class NodeType, int PoolElementSize>
    +
    1985 NodeType* CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool );
    +
    1986};
    +
    +
    1987
    +
    1988template<class NodeType, int PoolElementSize>
    +
    1989inline NodeType* XMLDocument::CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool )
    +
    1990{
    +
    1991 TIXMLASSERT( sizeof( NodeType ) == PoolElementSize );
    +
    1992 TIXMLASSERT( sizeof( NodeType ) == pool.ItemSize() );
    +
    1993 NodeType* returnNode = new (pool.Alloc()) NodeType( this );
    +
    1994 TIXMLASSERT( returnNode );
    +
    1995 returnNode->_memPool = &pool;
    +
    1996
    +
    1997 _unlinked.Push(returnNode);
    +
    1998 return returnNode;
    +
    1999}
    +
    2000
    +
    +
    2056class TINYXML2_LIB XMLHandle
    +
    2057{
    +
    2058public:
    +
    +
    2060 explicit XMLHandle( XMLNode* node ) : _node( node ) {
    +
    2061 }
    +
    +
    +
    2063 explicit XMLHandle( XMLNode& node ) : _node( &node ) {
    +
    2064 }
    +
    +
    +
    2066 XMLHandle( const XMLHandle& ref ) : _node( ref._node ) {
    +
    2067 }
    +
    +
    + +
    2070 _node = ref._node;
    +
    2071 return *this;
    +
    2072 }
    +
    +
    2073
    +
    + +
    2076 return XMLHandle( _node ? _node->FirstChild() : 0 );
    +
    2077 }
    +
    +
    +
    2079 XMLHandle FirstChildElement( const char* name = 0 ) {
    +
    2080 return XMLHandle( _node ? _node->FirstChildElement( name ) : 0 );
    +
    2081 }
    +
    +
    + +
    2084 return XMLHandle( _node ? _node->LastChild() : 0 );
    +
    2085 }
    +
    +
    +
    2087 XMLHandle LastChildElement( const char* name = 0 ) {
    +
    2088 return XMLHandle( _node ? _node->LastChildElement( name ) : 0 );
    +
    2089 }
    +
    +
    + +
    2092 return XMLHandle( _node ? _node->PreviousSibling() : 0 );
    +
    2093 }
    +
    +
    +
    2095 XMLHandle PreviousSiblingElement( const char* name = 0 ) {
    +
    2096 return XMLHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );
    +
    2097 }
    +
    +
    + +
    2100 return XMLHandle( _node ? _node->NextSibling() : 0 );
    +
    2101 }
    +
    +
    +
    2103 XMLHandle NextSiblingElement( const char* name = 0 ) {
    +
    2104 return XMLHandle( _node ? _node->NextSiblingElement( name ) : 0 );
    +
    2105 }
    +
    +
    2106
    +
    + +
    2109 return _node;
    +
    2110 }
    +
    +
    + +
    2113 return ( _node ? _node->ToElement() : 0 );
    +
    2114 }
    +
    +
    + +
    2117 return ( _node ? _node->ToText() : 0 );
    +
    2118 }
    +
    +
    + +
    2121 return ( _node ? _node->ToUnknown() : 0 );
    +
    2122 }
    +
    +
    + +
    2125 return ( _node ? _node->ToDeclaration() : 0 );
    +
    2126 }
    +
    +
    2127
    +
    2128private:
    +
    2129 XMLNode* _node;
    +
    2130};
    +
    +
    2131
    +
    2132
    +
    +
    2137class TINYXML2_LIB XMLConstHandle
    +
    2138{
    +
    2139public:
    +
    2140 explicit XMLConstHandle( const XMLNode* node ) : _node( node ) {
    +
    2141 }
    +
    2142 explicit XMLConstHandle( const XMLNode& node ) : _node( &node ) {
    +
    2143 }
    +
    2144 XMLConstHandle( const XMLConstHandle& ref ) : _node( ref._node ) {
    +
    2145 }
    +
    2146
    +
    2147 XMLConstHandle& operator=( const XMLConstHandle& ref ) {
    +
    2148 _node = ref._node;
    +
    2149 return *this;
    +
    2150 }
    +
    2151
    +
    2152 const XMLConstHandle FirstChild() const {
    +
    2153 return XMLConstHandle( _node ? _node->FirstChild() : 0 );
    +
    2154 }
    +
    2155 const XMLConstHandle FirstChildElement( const char* name = 0 ) const {
    +
    2156 return XMLConstHandle( _node ? _node->FirstChildElement( name ) : 0 );
    +
    2157 }
    +
    2158 const XMLConstHandle LastChild() const {
    +
    2159 return XMLConstHandle( _node ? _node->LastChild() : 0 );
    +
    2160 }
    +
    2161 const XMLConstHandle LastChildElement( const char* name = 0 ) const {
    +
    2162 return XMLConstHandle( _node ? _node->LastChildElement( name ) : 0 );
    +
    2163 }
    +
    2164 const XMLConstHandle PreviousSibling() const {
    +
    2165 return XMLConstHandle( _node ? _node->PreviousSibling() : 0 );
    +
    2166 }
    +
    2167 const XMLConstHandle PreviousSiblingElement( const char* name = 0 ) const {
    +
    2168 return XMLConstHandle( _node ? _node->PreviousSiblingElement( name ) : 0 );
    +
    2169 }
    +
    2170 const XMLConstHandle NextSibling() const {
    +
    2171 return XMLConstHandle( _node ? _node->NextSibling() : 0 );
    +
    2172 }
    +
    2173 const XMLConstHandle NextSiblingElement( const char* name = 0 ) const {
    +
    2174 return XMLConstHandle( _node ? _node->NextSiblingElement( name ) : 0 );
    +
    2175 }
    +
    2176
    +
    2177
    +
    2178 const XMLNode* ToNode() const {
    +
    2179 return _node;
    +
    2180 }
    +
    2181 const XMLElement* ToElement() const {
    +
    2182 return ( _node ? _node->ToElement() : 0 );
    +
    2183 }
    +
    2184 const XMLText* ToText() const {
    +
    2185 return ( _node ? _node->ToText() : 0 );
    +
    2186 }
    +
    2187 const XMLUnknown* ToUnknown() const {
    +
    2188 return ( _node ? _node->ToUnknown() : 0 );
    +
    2189 }
    +
    2190 const XMLDeclaration* ToDeclaration() const {
    +
    2191 return ( _node ? _node->ToDeclaration() : 0 );
    +
    2192 }
    +
    2193
    +
    2194private:
    +
    2195 const XMLNode* _node;
    +
    2196};
    +
    +
    2197
    +
    2198
    +
    +
    2241class TINYXML2_LIB XMLPrinter : public XMLVisitor
    +
    2242{
    +
    2243public:
    +
    2250 XMLPrinter( FILE* file=0, bool compact = false, int depth = 0 );
    +
    2251 virtual ~XMLPrinter() {}
    +
    2252
    +
    2254 void PushHeader( bool writeBOM, bool writeDeclaration );
    +
    2258 void OpenElement( const char* name, bool compactMode=false );
    +
    2260 void PushAttribute( const char* name, const char* value );
    +
    2261 void PushAttribute( const char* name, int value );
    +
    2262 void PushAttribute( const char* name, unsigned value );
    +
    2263 void PushAttribute( const char* name, int64_t value );
    +
    2264 void PushAttribute( const char* name, uint64_t value );
    +
    2265 void PushAttribute( const char* name, bool value );
    +
    2266 void PushAttribute( const char* name, double value );
    +
    2268 virtual void CloseElement( bool compactMode=false );
    +
    2269
    +
    2271 void PushText( const char* text, bool cdata=false );
    +
    2273 void PushText( int value );
    +
    2275 void PushText( unsigned value );
    +
    2277 void PushText( int64_t value );
    +
    2279 void PushText( uint64_t value );
    +
    2281 void PushText( bool value );
    +
    2283 void PushText( float value );
    +
    2285 void PushText( double value );
    +
    2286
    +
    2288 void PushComment( const char* comment );
    +
    2289
    +
    2290 void PushDeclaration( const char* value );
    +
    2291 void PushUnknown( const char* value );
    +
    2292
    +
    2293 virtual bool VisitEnter( const XMLDocument& /*doc*/ ) override;
    +
    +
    2294 virtual bool VisitExit( const XMLDocument& /*doc*/ ) override {
    +
    2295 return true;
    +
    2296 }
    +
    +
    2297
    +
    2298 virtual bool VisitEnter( const XMLElement& element, const XMLAttribute* attribute ) override;
    +
    2299 virtual bool VisitExit( const XMLElement& element ) override;
    +
    2300
    +
    2301 virtual bool Visit( const XMLText& text ) override;
    +
    2302 virtual bool Visit( const XMLComment& comment ) override;
    +
    2303 virtual bool Visit( const XMLDeclaration& declaration ) override;
    +
    2304 virtual bool Visit( const XMLUnknown& unknown ) override;
    +
    2305
    +
    +
    2310 const char* CStr() const {
    +
    2311 return _buffer.Mem();
    +
    2312 }
    +
    +
    +
    2318 int CStrSize() const {
    +
    2319 return _buffer.Size();
    +
    2320 }
    +
    +
    +
    2325 void ClearBuffer( bool resetToFirstElement = true ) {
    +
    2326 _buffer.Clear();
    +
    2327 _buffer.Push(0);
    +
    2328 _firstElement = resetToFirstElement;
    +
    2329 }
    +
    +
    2330
    +
    2331protected:
    +
    2332 virtual bool CompactMode( const XMLElement& ) { return _compactMode; }
    +
    2333
    +
    2337 virtual void PrintSpace( int depth );
    +
    2338 virtual void Print( const char* format, ... );
    +
    2339 virtual void Write( const char* data, size_t size );
    +
    2340 virtual void Putc( char ch );
    +
    2341
    +
    2342 inline void Write(const char* data) { Write(data, strlen(data)); }
    +
    2343
    +
    2344 void SealElementIfJustOpened();
    +
    2345 bool _elementJustOpened;
    +
    2346 DynArray< const char*, 10 > _stack;
    +
    2347
    +
    2348private:
    +
    2353 void PrepareForNewNode( bool compactMode );
    +
    2354 void PrintString( const char*, bool restrictedEntitySet ); // prints out, after detecting entities.
    +
    2355
    +
    2356 bool _firstElement;
    +
    2357 FILE* _fp;
    +
    2358 int _depth;
    +
    2359 int _textDepth;
    +
    2360 bool _processEntities;
    +
    2361 bool _compactMode;
    +
    2362
    +
    2363 enum {
    +
    2364 ENTITY_RANGE = 64,
    +
    2365 BUF_SIZE = 200
    +
    2366 };
    +
    2367 bool _entityFlag[ENTITY_RANGE];
    +
    2368 bool _restrictedEntityFlag[ENTITY_RANGE];
    +
    2369
    +
    2370 DynArray< char, 20 > _buffer;
    +
    2371
    +
    2372 // Prohibit cloning, intentionally not implemented
    +
    2373 XMLPrinter( const XMLPrinter& );
    +
    2374 XMLPrinter& operator=( const XMLPrinter& );
    +
    2375};
    +
    +
    2376
    +
    2377
    +
    2378} // tinyxml2
    +
    2379
    +
    2380#if defined(_MSC_VER)
    +
    2381# pragma warning(pop)
    +
    2382#endif
    +
    2383
    +
    2384#endif // TINYXML2_INCLUDED
    +
    Definition tinyxml2.h:1144
    +
    int GetLineNum() const
    Gets the line number the attribute is in, if the document was parsed from a file.
    Definition tinyxml2.h:1154
    XMLError QueryFloatValue(float *value) const
    See QueryIntValue.
    -
    unsigned UnsignedValue() const
    Query as an unsigned integer. See IntValue()
    Definition: tinyxml2.h:1181
    +
    unsigned UnsignedValue() const
    Query as an unsigned integer. See IntValue()
    Definition tinyxml2.h:1184
    void SetAttribute(uint64_t value)
    Set the attribute to value.
    -
    const char * Value() const
    The value of the attribute.
    -
    float FloatValue() const
    Query as a float. See IntValue()
    Definition: tinyxml2.h:1199
    +
    float FloatValue() const
    Query as a float. See IntValue()
    Definition tinyxml2.h:1202
    XMLError QueryDoubleValue(double *value) const
    See QueryIntValue.
    void SetAttribute(const char *value)
    Set the attribute to a string value.
    XMLError QueryUnsignedValue(unsigned int *value) const
    See QueryIntValue.
    -
    double DoubleValue() const
    Query as a double. See IntValue()
    Definition: tinyxml2.h:1193
    +
    double DoubleValue() const
    Query as a double. See IntValue()
    Definition tinyxml2.h:1196
    XMLError QueryInt64Value(int64_t *value) const
    See QueryIntValue.
    +
    const char * Name() const
    The name of the attribute.
    XMLError QueryBoolValue(bool *value) const
    See QueryIntValue.
    XMLError QueryIntValue(int *value) const
    void SetAttribute(int64_t value)
    Set the attribute to value.
    -
    bool BoolValue() const
    Query as a boolean. See IntValue()
    Definition: tinyxml2.h:1187
    +
    bool BoolValue() const
    Query as a boolean. See IntValue()
    Definition tinyxml2.h:1190
    void SetAttribute(double value)
    Set the attribute to value.
    +
    const XMLAttribute * Next() const
    The next attribute in the list.
    Definition tinyxml2.h:1157
    +
    const char * Value() const
    The value of the attribute.
    void SetAttribute(bool value)
    Set the attribute to value.
    -
    const char * Name() const
    The name of the attribute.
    void SetAttribute(int value)
    Set the attribute to value.
    -
    int IntValue() const
    Definition: tinyxml2.h:1162
    +
    int IntValue() const
    Definition tinyxml2.h:1165
    void SetAttribute(unsigned value)
    Set the attribute to value.
    void SetAttribute(float value)
    Set the attribute to value.
    -
    const XMLAttribute * Next() const
    The next attribute in the list.
    Definition: tinyxml2.h:1154
    XMLError QueryUnsigned64Value(uint64_t *value) const
    See QueryIntValue.
    -
    Definition: tinyxml2.h:1032
    -
    virtual XMLNode * ShallowClone(XMLDocument *document) const
    -
    virtual bool Accept(XMLVisitor *visitor) const
    -
    virtual bool ShallowEqual(const XMLNode *compare) const
    -
    virtual XMLComment * ToComment()
    Safely cast to a Comment, or null.
    Definition: tinyxml2.h:1035
    -
    Definition: tinyxml2.h:2134
    -
    Definition: tinyxml2.h:1071
    -
    virtual XMLNode * ShallowClone(XMLDocument *document) const
    -
    virtual XMLDeclaration * ToDeclaration()
    Safely cast to a Declaration, or null.
    Definition: tinyxml2.h:1074
    -
    virtual bool Accept(XMLVisitor *visitor) const
    -
    virtual bool ShallowEqual(const XMLNode *compare) const
    -
    Definition: tinyxml2.h:1717
    -
    void SetBOM(bool useBOM)
    Definition: tinyxml2.h:1803
    +
    Definition tinyxml2.h:1035
    +
    virtual bool Accept(XMLVisitor *visitor) const override
    +
    virtual XMLNode * ShallowClone(XMLDocument *document) const override
    +
    virtual bool ShallowEqual(const XMLNode *compare) const override
    +
    virtual XMLComment * ToComment() override
    Safely cast to a Comment, or null.
    Definition tinyxml2.h:1038
    +
    Definition tinyxml2.h:2138
    +
    Definition tinyxml2.h:1074
    +
    virtual XMLNode * ShallowClone(XMLDocument *document) const override
    +
    virtual bool ShallowEqual(const XMLNode *compare) const override
    +
    virtual XMLDeclaration * ToDeclaration() override
    Safely cast to a Declaration, or null.
    Definition tinyxml2.h:1077
    +
    virtual bool Accept(XMLVisitor *visitor) const override
    +
    Definition tinyxml2.h:1721
    +
    virtual XMLNode * ShallowClone(XMLDocument *) const override
    Definition tinyxml2.h:1927
    +
    XMLElement * RootElement()
    Definition tinyxml2.h:1814
    +
    void SetBOM(bool useBOM)
    Definition tinyxml2.h:1807
    void PrintError() const
    A (trivial) utility function that prints the ErrorStr() to stdout.
    +
    virtual XMLDocument * ToDocument() override
    Safely cast to a Document, or null.
    Definition tinyxml2.h:1735
    XMLError LoadFile(const char *filename)
    -
    bool HasBOM() const
    Definition: tinyxml2.h:1798
    -
    bool Error() const
    Return true if there was an error parsing the document.
    Definition: tinyxml2.h:1881
    -
    virtual XMLDocument * ToDocument()
    Safely cast to a Document, or null.
    Definition: tinyxml2.h:1731
    +
    bool HasBOM() const
    Definition tinyxml2.h:1802
    +
    bool Error() const
    Return true if there was an error parsing the document.
    Definition tinyxml2.h:1885
    +
    XMLComment * NewComment(const char *comment)
    +
    XMLElement * NewElement(const char *name)
    void ClearError()
    Clears the error flags.
    -
    XMLUnknown * NewUnknown(const char *text)
    -
    int ErrorLineNum() const
    Return the line where the error occurred, or zero if unknown.
    Definition: tinyxml2.h:1900
    +
    XMLUnknown * NewUnknown(const char *text)
    +
    int ErrorLineNum() const
    Return the line where the error occurred, or zero if unknown.
    Definition tinyxml2.h:1904
    XMLDocument(bool processEntities=true, Whitespace whitespaceMode=PRESERVE_WHITESPACE)
    constructor
    XMLError LoadFile(FILE *)
    void Clear()
    Clear the document, resetting it to the initial state.
    -
    virtual bool ShallowEqual(const XMLNode *) const
    Definition: tinyxml2.h:1926
    XMLError SaveFile(const char *filename, bool compact=false)
    +
    virtual bool Accept(XMLVisitor *visitor) const override
    void Print(XMLPrinter *streamer=0) const
    -
    XMLElement * NewElement(const char *name)
    XMLError SaveFile(FILE *fp, bool compact=false)
    -
    virtual bool Accept(XMLVisitor *visitor) const
    -
    virtual XMLNode * ShallowClone(XMLDocument *) const
    Definition: tinyxml2.h:1923
    -
    XMLText * NewText(const char *text)
    void DeleteNode(XMLNode *node)
    -
    XMLElement * RootElement()
    Definition: tinyxml2.h:1810
    -
    const char * ErrorStr() const
    -
    XMLComment * NewComment(const char *comment)
    -
    XMLDeclaration * NewDeclaration(const char *text=0)
    +
    virtual bool ShallowEqual(const XMLNode *) const override
    Definition tinyxml2.h:1930
    +
    XMLText * NewText(const char *text)
    +
    XMLDeclaration * NewDeclaration(const char *text=0)
    +
    const char * ErrorStr() const
    XMLError Parse(const char *xml, size_t nBytes=static_cast< size_t >(-1))
    void DeepCopy(XMLDocument *target) const
    -
    XMLError ErrorID() const
    Return the errorID.
    Definition: tinyxml2.h:1885
    -
    Definition: tinyxml2.h:1265
    +
    XMLError ErrorID() const
    Return the errorID.
    Definition tinyxml2.h:1889
    +
    Definition tinyxml2.h:1268
    +
    const char * GetText() const
    double DoubleAttribute(const char *name, double defaultValue=0) const
    See IntAttribute()
    -
    void SetAttribute(const char *name, const char *value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1465
    +
    void SetAttribute(const char *name, const char *value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1468
    XMLError QueryInt64Text(int64_t *uval) const
    See QueryIntText()
    -
    XMLError QueryUnsigned64Attribute(const char *name, uint64_t *value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1370
    -
    XMLError QueryBoolAttribute(const char *name, bool *value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1379
    +
    XMLError QueryUnsigned64Attribute(const char *name, uint64_t *value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1373
    +
    XMLError QueryBoolAttribute(const char *name, bool *value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1382
    XMLError QueryUnsignedText(unsigned *uval) const
    See QueryIntText()
    -
    XMLText * InsertNewText(const char *text)
    See InsertNewChildElement()
    +
    const XMLAttribute * FindAttribute(const char *name) const
    Query a specific attribute in the list.
    void SetText(const char *inText)
    uint64_t Unsigned64Attribute(const char *name, uint64_t defaultValue=0) const
    See IntAttribute()
    -
    void SetAttribute(const char *name, double value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1498
    -
    XMLError QueryUnsignedAttribute(const char *name, unsigned int *value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1352
    -
    const XMLAttribute * FindAttribute(const char *name) const
    Query a specific attribute in the list.
    -
    const XMLAttribute * FirstAttribute() const
    Return the first attribute in the list.
    Definition: tinyxml2.h:1514
    -
    virtual bool Accept(XMLVisitor *visitor) const
    +
    void SetAttribute(const char *name, double value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1501
    +
    XMLError QueryUnsignedAttribute(const char *name, unsigned int *value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1355
    XMLError QueryBoolText(bool *bval) const
    See QueryIntText()
    float FloatText(float defaultValue=0) const
    See QueryIntText()
    +
    const char * Attribute(const char *name, const char *value=0) const
    unsigned UnsignedText(unsigned defaultValue=0) const
    See QueryIntText()
    +
    const XMLAttribute * FirstAttribute() const
    Return the first attribute in the list.
    Definition tinyxml2.h:1517
    void SetText(float value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    bool BoolAttribute(const char *name, bool defaultValue=false) const
    See IntAttribute()
    -
    void SetAttribute(const char *name, float value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1503
    -
    XMLError QueryAttribute(const char *name, int *value) const
    Definition: tinyxml2.h:1432
    -
    XMLError QueryDoubleAttribute(const char *name, double *value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1387
    -
    const char * Name() const
    Get the name of an element (which is the Value() of the node.)
    Definition: tinyxml2.h:1269
    +
    void SetAttribute(const char *name, float value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1506
    +
    XMLError QueryAttribute(const char *name, int *value) const
    Definition tinyxml2.h:1435
    +
    XMLError QueryDoubleAttribute(const char *name, double *value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1390
    int64_t Int64Attribute(const char *name, int64_t defaultValue=0) const
    See IntAttribute()
    void SetText(double value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    XMLError QueryDoubleText(double *dval) const
    See QueryIntText()
    bool BoolText(bool defaultValue=false) const
    See QueryIntText()
    -
    const char * GetText() const
    +
    virtual XMLNode * ShallowClone(XMLDocument *document) const override
    void SetText(uint64_t value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    -
    const char * Attribute(const char *name, const char *value=0) const
    void SetText(int64_t value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    void SetText(unsigned value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    -
    XMLError QueryInt64Attribute(const char *name, int64_t *value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1361
    +
    XMLError QueryInt64Attribute(const char *name, int64_t *value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1364
    +
    XMLDeclaration * InsertNewDeclaration(const char *text)
    See InsertNewChildElement()
    double DoubleText(double defaultValue=0) const
    See QueryIntText()
    -
    XMLError QueryIntAttribute(const char *name, int *value) const
    Definition: tinyxml2.h:1343
    +
    virtual XMLElement * ToElement() override
    Safely cast to an Element, or null.
    Definition tinyxml2.h:1280
    +
    XMLError QueryIntAttribute(const char *name, int *value) const
    Definition tinyxml2.h:1346
    XMLError QueryIntText(int *ival) const
    int IntAttribute(const char *name, int defaultValue=0) const
    -
    void SetName(const char *str, bool staticMem=false)
    Set the name of the element.
    Definition: tinyxml2.h:1273
    -
    void SetAttribute(const char *name, bool value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1493
    +
    void SetName(const char *str, bool staticMem=false)
    Set the name of the element.
    Definition tinyxml2.h:1276
    +
    void SetAttribute(const char *name, bool value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1496
    int64_t Int64Text(int64_t defaultValue=0) const
    See QueryIntText()
    -
    void SetAttribute(const char *name, int value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1470
    -
    void SetAttribute(const char *name, int64_t value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1481
    +
    virtual bool ShallowEqual(const XMLNode *compare) const override
    +
    void SetAttribute(const char *name, int value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1473
    +
    XMLComment * InsertNewComment(const char *comment)
    See InsertNewChildElement()
    +
    void SetAttribute(const char *name, int64_t value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1484
    float FloatAttribute(const char *name, float defaultValue=0) const
    See IntAttribute()
    -
    XMLElement * InsertNewChildElement(const char *name)
    -
    virtual XMLNode * ShallowClone(XMLDocument *document) const
    +
    const char * Name() const
    Get the name of an element (which is the Value() of the node.)
    Definition tinyxml2.h:1272
    +
    XMLElement * InsertNewChildElement(const char *name)
    XMLError QueryUnsigned64Text(uint64_t *uval) const
    See QueryIntText()
    -
    XMLUnknown * InsertNewUnknown(const char *text)
    See InsertNewChildElement()
    -
    XMLError QueryFloatAttribute(const char *name, float *value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1395
    -
    void SetAttribute(const char *name, uint64_t value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1487
    -
    virtual bool ShallowEqual(const XMLNode *compare) const
    -
    virtual XMLElement * ToElement()
    Safely cast to an Element, or null.
    Definition: tinyxml2.h:1277
    -
    XMLError QueryStringAttribute(const char *name, const char **value) const
    See QueryIntAttribute()
    Definition: tinyxml2.h:1404
    -
    XMLDeclaration * InsertNewDeclaration(const char *text)
    See InsertNewChildElement()
    -
    void SetAttribute(const char *name, unsigned value)
    Sets the named attribute to value.
    Definition: tinyxml2.h:1475
    +
    XMLText * InsertNewText(const char *text)
    See InsertNewChildElement()
    +
    virtual bool Accept(XMLVisitor *visitor) const override
    +
    XMLError QueryFloatAttribute(const char *name, float *value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1398
    +
    void SetAttribute(const char *name, uint64_t value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1490
    +
    XMLError QueryStringAttribute(const char *name, const char **value) const
    See QueryIntAttribute()
    Definition tinyxml2.h:1407
    +
    void SetAttribute(const char *name, unsigned value)
    Sets the named attribute to value.
    Definition tinyxml2.h:1478
    void SetText(bool value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    -
    XMLComment * InsertNewComment(const char *comment)
    See InsertNewChildElement()
    void SetText(int value)
    Convenience method for setting text inside an element. See SetText() for important limitations.
    void DeleteAttribute(const char *name)
    uint64_t Unsigned64Text(uint64_t defaultValue=0) const
    See QueryIntText()
    XMLError QueryFloatText(float *fval) const
    See QueryIntText()
    +
    XMLUnknown * InsertNewUnknown(const char *text)
    See InsertNewChildElement()
    unsigned UnsignedAttribute(const char *name, unsigned defaultValue=0) const
    See IntAttribute()
    -
    Definition: tinyxml2.h:2053
    -
    XMLNode * ToNode()
    Safe cast to XMLNode. This can return null.
    Definition: tinyxml2.h:2104
    -
    XMLDeclaration * ToDeclaration()
    Safe cast to XMLDeclaration. This can return null.
    Definition: tinyxml2.h:2120
    -
    XMLHandle PreviousSibling()
    Get the previous sibling of this handle.
    Definition: tinyxml2.h:2087
    -
    XMLHandle LastChildElement(const char *name=0)
    Get the last child element of this handle.
    Definition: tinyxml2.h:2083
    -
    XMLHandle FirstChild()
    Get the first child of this handle.
    Definition: tinyxml2.h:2071
    -
    XMLElement * ToElement()
    Safe cast to XMLElement. This can return null.
    Definition: tinyxml2.h:2108
    -
    XMLText * ToText()
    Safe cast to XMLText. This can return null.
    Definition: tinyxml2.h:2112
    -
    XMLHandle FirstChildElement(const char *name=0)
    Get the first child element of this handle.
    Definition: tinyxml2.h:2075
    -
    XMLHandle & operator=(const XMLHandle &ref)
    Assignment.
    Definition: tinyxml2.h:2065
    -
    XMLHandle PreviousSiblingElement(const char *name=0)
    Get the previous sibling element of this handle.
    Definition: tinyxml2.h:2091
    -
    XMLHandle(XMLNode *node)
    Create a handle from any node (at any depth of the tree.) This can be a null pointer.
    Definition: tinyxml2.h:2056
    -
    XMLHandle LastChild()
    Get the last child of this handle.
    Definition: tinyxml2.h:2079
    -
    XMLHandle(XMLNode &node)
    Create a handle from a node.
    Definition: tinyxml2.h:2059
    -
    XMLUnknown * ToUnknown()
    Safe cast to XMLUnknown. This can return null.
    Definition: tinyxml2.h:2116
    -
    XMLHandle NextSibling()
    Get the next sibling of this handle.
    Definition: tinyxml2.h:2095
    -
    XMLHandle NextSiblingElement(const char *name=0)
    Get the next sibling element of this handle.
    Definition: tinyxml2.h:2099
    -
    XMLHandle(const XMLHandle &ref)
    Copy constructor.
    Definition: tinyxml2.h:2062
    -
    Definition: tinyxml2.h:675
    -
    void SetUserData(void *userData)
    Definition: tinyxml2.h:939
    +
    Definition tinyxml2.h:2057
    +
    XMLHandle PreviousSibling()
    Get the previous sibling of this handle.
    Definition tinyxml2.h:2091
    +
    XMLHandle LastChildElement(const char *name=0)
    Get the last child element of this handle.
    Definition tinyxml2.h:2087
    +
    XMLHandle FirstChild()
    Get the first child of this handle.
    Definition tinyxml2.h:2075
    +
    XMLNode * ToNode()
    Safe cast to XMLNode. This can return null.
    Definition tinyxml2.h:2108
    +
    XMLHandle FirstChildElement(const char *name=0)
    Get the first child element of this handle.
    Definition tinyxml2.h:2079
    +
    XMLHandle PreviousSiblingElement(const char *name=0)
    Get the previous sibling element of this handle.
    Definition tinyxml2.h:2095
    +
    XMLDeclaration * ToDeclaration()
    Safe cast to XMLDeclaration. This can return null.
    Definition tinyxml2.h:2124
    +
    XMLHandle(XMLNode *node)
    Create a handle from any node (at any depth of the tree.) This can be a null pointer.
    Definition tinyxml2.h:2060
    +
    XMLHandle LastChild()
    Get the last child of this handle.
    Definition tinyxml2.h:2083
    +
    XMLHandle & operator=(const XMLHandle &ref)
    Assignment.
    Definition tinyxml2.h:2069
    +
    XMLHandle(XMLNode &node)
    Create a handle from a node.
    Definition tinyxml2.h:2063
    +
    XMLHandle NextSibling()
    Get the next sibling of this handle.
    Definition tinyxml2.h:2099
    +
    XMLElement * ToElement()
    Safe cast to XMLElement. This can return null.
    Definition tinyxml2.h:2112
    +
    XMLText * ToText()
    Safe cast to XMLText. This can return null.
    Definition tinyxml2.h:2116
    +
    XMLUnknown * ToUnknown()
    Safe cast to XMLUnknown. This can return null.
    Definition tinyxml2.h:2120
    +
    XMLHandle NextSiblingElement(const char *name=0)
    Get the next sibling element of this handle.
    Definition tinyxml2.h:2103
    +
    XMLHandle(const XMLHandle &ref)
    Copy constructor.
    Definition tinyxml2.h:2066
    +
    Definition tinyxml2.h:672
    +
    void SetUserData(void *userData)
    Definition tinyxml2.h:942
    +
    const char * Value() const
    void SetValue(const char *val, bool staticMem=false)
    -
    const XMLElement * NextSiblingElement(const char *name=0) const
    Get the next (right) sibling element of this node, with an optionally supplied name.
    -
    const XMLElement * LastChildElement(const char *name=0) const
    -
    virtual XMLDeclaration * ToDeclaration()
    Safely cast to a Declaration, or null.
    Definition: tinyxml2.h:708
    -
    const XMLElement * FirstChildElement(const char *name=0) const
    -
    const XMLDocument * GetDocument() const
    Get the XMLDocument that owns this XMLNode.
    Definition: tinyxml2.h:681
    +
    virtual XMLText * ToText()
    Safely cast to Text, or null.
    Definition tinyxml2.h:693
    +
    virtual XMLDeclaration * ToDeclaration()
    Safely cast to a Declaration, or null.
    Definition tinyxml2.h:705
    +
    const XMLElement * NextSiblingElement(const char *name=0) const
    Get the next (right) sibling element of this node, with an optionally supplied name.
    +
    void * GetUserData() const
    Definition tinyxml2.h:949
    +
    const XMLElement * FirstChildElement(const char *name=0) const
    void DeleteChild(XMLNode *node)
    -
    virtual XMLText * ToText()
    Safely cast to Text, or null.
    Definition: tinyxml2.h:696
    -
    XMLNode * DeepClone(XMLDocument *target) const
    -
    const char * Value() const
    -
    const XMLNode * NextSibling() const
    Get the next (right) sibling node of this node.
    Definition: tinyxml2.h:821
    +
    XMLNode * DeepClone(XMLDocument *target) const
    +
    XMLDocument * GetDocument()
    Get the XMLDocument that owns this XMLNode.
    Definition tinyxml2.h:683
    +
    const XMLNode * Parent() const
    Get the parent of this node on the DOM.
    Definition tinyxml2.h:758
    +
    virtual XMLComment * ToComment()
    Safely cast to a Comment, or null.
    Definition tinyxml2.h:697
    +
    const XMLElement * LastChildElement(const char *name=0) const
    +
    virtual XMLDocument * ToDocument()
    Safely cast to a Document, or null.
    Definition tinyxml2.h:701
    +
    const XMLNode * LastChild() const
    Get the last child node, or null if none exists.
    Definition tinyxml2.h:790
    +
    const XMLDocument * GetDocument() const
    Get the XMLDocument that owns this XMLNode.
    Definition tinyxml2.h:678
    virtual bool ShallowEqual(const XMLNode *compare) const =0
    -
    void * GetUserData() const
    Definition: tinyxml2.h:946
    virtual bool Accept(XMLVisitor *visitor) const =0
    -
    virtual XMLDocument * ToDocument()
    Safely cast to a Document, or null.
    Definition: tinyxml2.h:704
    -
    virtual XMLNode * ShallowClone(XMLDocument *document) const =0
    -
    XMLNode * InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)
    -
    virtual XMLUnknown * ToUnknown()
    Safely cast to an Unknown, or null.
    Definition: tinyxml2.h:712
    -
    const XMLElement * PreviousSiblingElement(const char *name=0) const
    Get the previous (left) sibling element of this node, with an optionally supplied name.
    -
    XMLNode * InsertFirstChild(XMLNode *addThis)
    -
    int GetLineNum() const
    Gets the line number the node is in, if the document was parsed from a file.
    Definition: tinyxml2.h:752
    -
    const XMLNode * LastChild() const
    Get the last child node, or null if none exists.
    Definition: tinyxml2.h:787
    -
    virtual XMLElement * ToElement()
    Safely cast to an Element, or null.
    Definition: tinyxml2.h:692
    -
    const XMLNode * PreviousSibling() const
    Get the previous (left) sibling node of this node.
    Definition: tinyxml2.h:805
    -
    bool NoChildren() const
    Returns true if this node has no children.
    Definition: tinyxml2.h:764
    -
    const XMLNode * Parent() const
    Get the parent of this node on the DOM.
    Definition: tinyxml2.h:755
    -
    const XMLNode * FirstChild() const
    Get the first child node, or null if none exists.
    Definition: tinyxml2.h:769
    -
    XMLNode * InsertEndChild(XMLNode *addThis)
    -
    XMLDocument * GetDocument()
    Get the XMLDocument that owns this XMLNode.
    Definition: tinyxml2.h:686
    -
    virtual XMLComment * ToComment()
    Safely cast to a Comment, or null.
    Definition: tinyxml2.h:700
    -
    Definition: tinyxml2.h:2238
    +
    virtual XMLNode * ShallowClone(XMLDocument *document) const =0
    +
    XMLNode * InsertAfterChild(XMLNode *afterThis, XMLNode *addThis)
    +
    const XMLNode * PreviousSibling() const
    Get the previous (left) sibling node of this node.
    Definition tinyxml2.h:808
    +
    virtual XMLElement * ToElement()
    Safely cast to an Element, or null.
    Definition tinyxml2.h:689
    +
    const XMLElement * PreviousSiblingElement(const char *name=0) const
    Get the previous (left) sibling element of this node, with an optionally supplied name.
    +
    int GetLineNum() const
    Gets the line number the node is in, if the document was parsed from a file.
    Definition tinyxml2.h:755
    +
    virtual XMLUnknown * ToUnknown()
    Safely cast to an Unknown, or null.
    Definition tinyxml2.h:709
    +
    const XMLNode * FirstChild() const
    Get the first child node, or null if none exists.
    Definition tinyxml2.h:772
    +
    bool NoChildren() const
    Returns true if this node has no children.
    Definition tinyxml2.h:767
    +
    XMLNode * InsertFirstChild(XMLNode *addThis)
    +
    XMLNode * InsertEndChild(XMLNode *addThis)
    +
    const XMLNode * NextSibling() const
    Get the next (right) sibling node of this node.
    Definition tinyxml2.h:824
    +
    Definition tinyxml2.h:2242
    virtual void PrintSpace(int depth)
    -
    virtual bool VisitExit(const XMLDocument &)
    Visit a document.
    Definition: tinyxml2.h:2290
    void PushHeader(bool writeBOM, bool writeDeclaration)
    -
    const char * CStr() const
    Definition: tinyxml2.h:2306
    void PushText(const char *text, bool cdata=false)
    Add a text node.
    void PushText(float value)
    Add a text node from a float.
    void OpenElement(const char *name, bool compactMode=false)
    -
    virtual bool Visit(const XMLText &text)
    Visit a text node.
    -
    virtual bool VisitEnter(const XMLElement &element, const XMLAttribute *attribute)
    Visit an element.
    -
    int CStrSize() const
    Definition: tinyxml2.h:2314
    +
    virtual bool VisitExit(const XMLDocument &) override
    Visit a document.
    Definition tinyxml2.h:2294
    +
    virtual bool Visit(const XMLUnknown &unknown) override
    Visit an unknown node.
    +
    int CStrSize() const
    Definition tinyxml2.h:2318
    void PushText(int value)
    Add a text node from an integer.
    -
    virtual bool Visit(const XMLComment &comment)
    Visit a comment node.
    void PushText(bool value)
    Add a text node from a bool.
    +
    virtual bool VisitEnter(const XMLElement &element, const XMLAttribute *attribute) override
    Visit an element.
    void PushText(uint64_t value)
    Add a text node from an unsigned 64bit integer.
    +
    virtual bool Visit(const XMLDeclaration &declaration) override
    Visit a declaration.
    void PushText(unsigned value)
    Add a text node from an unsigned.
    -
    void ClearBuffer(bool resetToFirstElement=true)
    Definition: tinyxml2.h:2321
    +
    void ClearBuffer(bool resetToFirstElement=true)
    Definition tinyxml2.h:2325
    +
    virtual bool VisitEnter(const XMLDocument &) override
    Visit a document.
    +
    virtual bool Visit(const XMLComment &comment) override
    Visit a comment node.
    void PushText(int64_t value)
    Add a text node from a signed 64bit integer.
    +
    virtual bool VisitExit(const XMLElement &element) override
    Visit an element.
    void PushAttribute(const char *name, const char *value)
    If streaming, add an attribute to an open element.
    -
    virtual bool Visit(const XMLDeclaration &declaration)
    Visit a declaration.
    -
    virtual bool Visit(const XMLUnknown &unknown)
    Visit an unknown node.
    XMLPrinter(FILE *file=0, bool compact=false, int depth=0)
    void PushText(double value)
    Add a text node from a double.
    +
    const char * CStr() const
    Definition tinyxml2.h:2310
    virtual void CloseElement(bool compactMode=false)
    If streaming, close the Element.
    -
    virtual bool VisitEnter(const XMLDocument &)
    Visit a document.
    -
    virtual bool VisitExit(const XMLElement &element)
    Visit an element.
    +
    virtual bool Visit(const XMLText &text) override
    Visit a text node.
    void PushComment(const char *comment)
    Add a comment.
    -
    Definition: tinyxml2.h:992
    -
    virtual bool Accept(XMLVisitor *visitor) const
    -
    virtual XMLText * ToText()
    Safely cast to Text, or null.
    Definition: tinyxml2.h:997
    -
    bool CData() const
    Returns true if this is a CDATA text element.
    Definition: tinyxml2.h:1009
    -
    void SetCData(bool isCData)
    Declare whether this should be CDATA or standard text.
    Definition: tinyxml2.h:1005
    -
    virtual bool ShallowEqual(const XMLNode *compare) const
    -
    virtual XMLNode * ShallowClone(XMLDocument *document) const
    -
    Definition: tinyxml2.h:1106
    -
    virtual XMLNode * ShallowClone(XMLDocument *document) const
    -
    virtual bool ShallowEqual(const XMLNode *compare) const
    -
    virtual bool Accept(XMLVisitor *visitor) const
    -
    virtual XMLUnknown * ToUnknown()
    Safely cast to an Unknown, or null.
    Definition: tinyxml2.h:1109
    -
    Definition: tinyxml2.h:482
    -
    virtual bool Visit(const XMLUnknown &)
    Visit an unknown node.
    Definition: tinyxml2.h:517
    -
    virtual bool VisitExit(const XMLDocument &)
    Visit a document.
    Definition: tinyxml2.h:491
    -
    virtual bool VisitExit(const XMLElement &)
    Visit an element.
    Definition: tinyxml2.h:500
    -
    virtual bool VisitEnter(const XMLDocument &)
    Visit a document.
    Definition: tinyxml2.h:487
    -
    virtual bool Visit(const XMLComment &)
    Visit a comment node.
    Definition: tinyxml2.h:513
    -
    virtual bool Visit(const XMLDeclaration &)
    Visit a declaration.
    Definition: tinyxml2.h:505
    -
    virtual bool Visit(const XMLText &)
    Visit a text node.
    Definition: tinyxml2.h:509
    -
    virtual bool VisitEnter(const XMLElement &, const XMLAttribute *)
    Visit an element.
    Definition: tinyxml2.h:496
    +
    Definition tinyxml2.h:995
    +
    virtual bool ShallowEqual(const XMLNode *compare) const override
    +
    virtual XMLText * ToText() override
    Safely cast to Text, or null.
    Definition tinyxml2.h:1000
    +
    virtual XMLNode * ShallowClone(XMLDocument *document) const override
    +
    virtual bool Accept(XMLVisitor *visitor) const override
    +
    bool CData() const
    Returns true if this is a CDATA text element.
    Definition tinyxml2.h:1012
    +
    void SetCData(bool isCData)
    Declare whether this should be CDATA or standard text.
    Definition tinyxml2.h:1008
    +
    Definition tinyxml2.h:1109
    +
    virtual bool ShallowEqual(const XMLNode *compare) const override
    +
    virtual XMLNode * ShallowClone(XMLDocument *document) const override
    +
    virtual XMLUnknown * ToUnknown() override
    Safely cast to an Unknown, or null.
    Definition tinyxml2.h:1112
    +
    virtual bool Accept(XMLVisitor *visitor) const override
    +
    Definition tinyxml2.h:479
    +
    virtual bool Visit(const XMLUnknown &)
    Visit an unknown node.
    Definition tinyxml2.h:514
    +
    virtual bool VisitExit(const XMLDocument &)
    Visit a document.
    Definition tinyxml2.h:488
    +
    virtual bool VisitExit(const XMLElement &)
    Visit an element.
    Definition tinyxml2.h:497
    +
    virtual bool VisitEnter(const XMLDocument &)
    Visit a document.
    Definition tinyxml2.h:484
    +
    virtual bool Visit(const XMLComment &)
    Visit a comment node.
    Definition tinyxml2.h:510
    +
    virtual bool Visit(const XMLDeclaration &)
    Visit a declaration.
    Definition tinyxml2.h:502
    +
    virtual bool Visit(const XMLText &)
    Visit a text node.
    Definition tinyxml2.h:506
    +
    virtual bool VisitEnter(const XMLElement &, const XMLAttribute *)
    Visit an element.
    Definition tinyxml2.h:493
    diff --git a/dox b/dox index 99921de..2d23d73 100644 --- a/dox +++ b/dox @@ -38,7 +38,7 @@ PROJECT_NAME = "TinyXML-2" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 9.0.0 +PROJECT_NUMBER = 10.0.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/meson.build b/meson.build index 3546c15..b8b41fe 100644 --- a/meson.build +++ b/meson.build @@ -22,7 +22,7 @@ project( 'tinyxml2', ['cpp'], - version : '9.0.0', + version : '10.0.0', meson_version : '>= 0.49.0', ) @@ -62,26 +62,6 @@ if meson.version().version_compare('>= 0.54.0') endif if get_option('tests') - # Try to find a copy command. If this is windows we probably don't have cp, - # but if this is msys then we do, so make cp not required in that case, and - # try Xcopy if cp isn't found - prog_cp = find_program('cp', required : build_machine.system() != 'windows') - command = ['-r'] - if not prog_cp.found() - prog_cp = find_program('Xcopy') - command = ['/E', '/I'] - endif - - # Copy the test resources into the build dir - run_command( - prog_cp, - [ - command, - meson.current_source_dir() / 'resources', - meson.current_build_dir(), - ], - ) - test( 'xmltest', executable( @@ -89,7 +69,7 @@ if get_option('tests') ['xmltest.cpp'], link_with : [lib_tinyxml2], ), - workdir : meson.current_build_dir(), + workdir : meson.current_source_dir(), ) endif diff --git a/readme.md b/readme.md index 5245ac4..6609015 100644 --- a/readme.md +++ b/readme.md @@ -1,9 +1,7 @@ TinyXML-2 ========= -![Build](https://github.com/leethomason/tinyxml2/actions/workflows/test.yml/badge.svg) - -![TinyXML-2 Logo](http://www.grinninglizard.com/tinyxml2/TinyXML2_small.png) +[![Test](https://github.com/leethomason/tinyxml2/actions/workflows/test.yml/badge.svg)](https://github.com/leethomason/tinyxml2/actions/workflows/test.yml) TinyXML-2 is a simple, small, efficient, C++ XML parser that can be easily integrated into other programs. @@ -93,7 +91,7 @@ by the Document. When the Document is deleted, so are all the nodes it contains. ### White Space -#### Whitespace Preservation (default) +#### Whitespace Preservation (default, PRESERVE_WHITESPACE) Microsoft has an excellent article on white space: http://msdn.microsoft.com/en-us/library/ms256097.aspx @@ -125,7 +123,7 @@ valuable. TinyXML-2 sees these as the same XML: 123 -#### Whitespace Collapse +#### Whitespace Collapse (COLLAPSE_WHITESPACE) For some applications, it is preferable to collapse whitespace. Collapsing whitespace gives you "HTML-like" behavior, which is sometimes more suitable @@ -143,7 +141,15 @@ However, you may also use COLLAPSE_WHITESPACE, which will: Note that (currently) there is a performance impact for using COLLAPSE_WHITESPACE. It essentially causes the XML to be parsed twice. -#### Error Reporting +#### Pedantic Whitespace (PEDANTIC_WHITESPACE) + +For applications that need to know about text nodes that are composed entirely of +whitespace, PEDANTIC_WHITESPACE is available. PEDANTIC_WHITESPACE maintains all the +whilespace between elements. + +PEDANTIC_WHITESPACE is a new mode and not as tested as the other whitespace modes. + +### Error Reporting TinyXML-2 reports the line number of any errors in an XML document that cannot be parsed correctly. In addition, all nodes (elements, declarations, @@ -263,10 +269,9 @@ Generally speaking, the intent is that you simply include the tinyxml2.cpp and tinyxml2.h files in your project and build with your other source code. There is also a CMake build included. CMake is the general build for TinyXML-2. -Additional build systems are costly to maintain, and tend to bit-rot. -A Visual Studio project is included, but that is largely for developer convenience, -and is not intended to integrate well with other builds. +(Additional build systems are costly to maintain, and tend to bit-rot. They are +being removed over time.) Building TinyXML-2 - Using vcpkg -------------------------------- diff --git a/tinyxml2.cpp b/tinyxml2.cpp index 31925d9..c5c4870 100755 --- a/tinyxml2.cpp +++ b/tinyxml2.cpp @@ -103,12 +103,17 @@ distribution. #if defined(_WIN64) #define TIXML_FSEEK _fseeki64 #define TIXML_FTELL _ftelli64 -#elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__ANDROID__) +#elif defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || defined(__CYGWIN__) #define TIXML_FSEEK fseeko #define TIXML_FTELL ftello -#elif defined(__unix__) && defined(__x86_64__) - #define TIXML_FSEEK fseeko64 - #define TIXML_FTELL ftello64 +#elif defined(__ANDROID__) + #if __ANDROID_API__ > 24 + #define TIXML_FSEEK fseeko64 + #define TIXML_FTELL ftello64 + #else + #define TIXML_FSEEK fseeko + #define TIXML_FTELL ftello + #endif #else #define TIXML_FSEEK fseek #define TIXML_FTELL ftell @@ -707,7 +712,7 @@ bool XMLUtil::ToUnsigned64(const char* str, uint64_t* value) { } -char* XMLDocument::Identify( char* p, XMLNode** node ) +char* XMLDocument::Identify( char* p, XMLNode** node, bool first ) { TIXMLASSERT( node ); TIXMLASSERT( p ); @@ -759,9 +764,19 @@ char* XMLDocument::Identify( char* p, XMLNode** node ) p += dtdHeaderLen; } else if ( XMLUtil::StringEqual( p, elementHeader, elementHeaderLen ) ) { - returnNode = CreateUnlinkedNode( _elementPool ); - returnNode->_parseLineNum = _parseCurLineNum; - p += elementHeaderLen; + + // Preserve whitespace pedantically before closing tag, when it's immediately after opening tag + if (WhitespaceMode() == PEDANTIC_WHITESPACE && first && p != start && *(p + elementHeaderLen) == '/') { + returnNode = CreateUnlinkedNode(_textPool); + returnNode->_parseLineNum = startLine; + p = start; // Back it up, all the text counts. + _parseCurLineNum = startLine; + } + else { + returnNode = CreateUnlinkedNode(_elementPool); + returnNode->_parseLineNum = _parseCurLineNum; + p += elementHeaderLen; + } } else { returnNode = CreateUnlinkedNode( _textPool ); @@ -814,6 +829,34 @@ XMLNode::~XMLNode() } } +// ChildElementCount was originally suggested by msteiger on the sourceforge page for TinyXML and modified by KB1SPH for TinyXML-2. + +int XMLNode::ChildElementCount(const char *value) const { + int count = 0; + + const XMLElement *e = FirstChildElement(value); + + while (e) { + e = e->NextSiblingElement(value); + count++; + } + + return count; +} + +int XMLNode::ChildElementCount() const { + int count = 0; + + const XMLElement *e = FirstChildElement(); + + while (e) { + e = e->NextSiblingElement(); + count++; + } + + return count; +} + const char* XMLNode::Value() const { // Edge case: XMLDocuments don't have a Value. Return null. @@ -1062,21 +1105,23 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) if (_document->Error()) return 0; + bool first = true; while( p && *p ) { XMLNode* node = 0; - p = _document->Identify( p, &node ); + p = _document->Identify( p, &node, first ); TIXMLASSERT( p ); if ( node == 0 ) { break; } + first = false; const int initialLineNum = node->_parseLineNum; StrPair endTag; p = node->ParseDeep( p, &endTag, curLineNumPtr ); if ( !p ) { - DeleteNode( node ); + _document->DeleteNode( node ); if ( !_document->Error() ) { _document->SetError( XML_ERROR_PARSING, initialLineNum, 0); } @@ -1109,7 +1154,7 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) } if ( !wellLocated ) { _document->SetError( XML_ERROR_PARSING_DECLARATION, initialLineNum, "XMLDeclaration value=%s", decl->Value()); - DeleteNode( node ); + _document->DeleteNode( node ); break; } } @@ -1144,7 +1189,7 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) } if ( mismatch ) { _document->SetError( XML_ERROR_MISMATCHED_ELEMENT, initialLineNum, "XMLElement name=%s", ele->Name()); - DeleteNode( node ); + _document->DeleteNode( node ); break; } } @@ -1776,11 +1821,11 @@ XMLError XMLElement::QueryInt64Text(int64_t* ival) const } -XMLError XMLElement::QueryUnsigned64Text(uint64_t* ival) const +XMLError XMLElement::QueryUnsigned64Text(uint64_t* uval) const { if(FirstChild() && FirstChild()->ToText()) { const char* t = FirstChild()->Value(); - if(XMLUtil::ToUnsigned64(t, ival)) { + if(XMLUtil::ToUnsigned64(t, uval)) { return XML_SUCCESS; } return XML_CAN_NOT_CONVERT_TEXT; @@ -2412,21 +2457,21 @@ XMLError XMLDocument::SaveFile( FILE* fp, bool compact ) } -XMLError XMLDocument::Parse( const char* p, size_t len ) +XMLError XMLDocument::Parse( const char* xml, size_t nBytes ) { Clear(); - if ( len == 0 || !p || !*p ) { + if ( nBytes == 0 || !xml || !*xml ) { SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 ); return _errorID; } - if ( len == static_cast(-1) ) { - len = strlen( p ); + if ( nBytes == static_cast(-1) ) { + nBytes = strlen( xml ); } TIXMLASSERT( _charBuffer == 0 ); - _charBuffer = new char[ len+1 ]; - memcpy( _charBuffer, p, len ); - _charBuffer[len] = 0; + _charBuffer = new char[ nBytes+1 ]; + memcpy( _charBuffer, xml, nBytes ); + _charBuffer[nBytes] = 0; Parse(); if ( Error() ) { diff --git a/tinyxml2.h b/tinyxml2.h index 452ae95..7586f7b 100755 --- a/tinyxml2.h +++ b/tinyxml2.h @@ -42,9 +42,6 @@ distribution. #endif #include -/* - TODO: intern strings instead of allocation. -*/ /* gcc: g++ -Wall -DTINYXML2_DEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe @@ -64,7 +61,7 @@ distribution. # pragma warning(disable: 4251) #endif -#ifdef _WIN32 +#ifdef _MSC_VER # ifdef TINYXML2_EXPORT # define TINYXML2_LIB __declspec(dllexport) # elif defined(TINYXML2_IMPORT) @@ -83,27 +80,27 @@ distribution. #if defined(TINYXML2_DEBUG) # if defined(_MSC_VER) # // "(void)0," is for suppressing C4127 warning in "assert(false)", "assert(true)" and the like -# define TIXMLASSERT( x ) if ( !((void)0,(x))) { __debugbreak(); } +# define TIXMLASSERT( x ) do { if ( !((void)0,(x))) { __debugbreak(); } } while(false) # elif defined (ANDROID_NDK) # include -# define TIXMLASSERT( x ) if ( !(x)) { __android_log_assert( "assert", "grinliz", "ASSERT in '%s' at %d.", __FILE__, __LINE__ ); } +# define TIXMLASSERT( x ) do { if ( !(x)) { __android_log_assert( "assert", "grinliz", "ASSERT in '%s' at %d.", __FILE__, __LINE__ ); } } while(false) # else # include # define TIXMLASSERT assert # endif #else -# define TIXMLASSERT( x ) {} +# define TIXMLASSERT( x ) do {} while(false) #endif #endif /* Versioning, past 1.0.14: http://semver.org/ */ -static const int TIXML2_MAJOR_VERSION = 9; +static const int TIXML2_MAJOR_VERSION = 10; static const int TIXML2_MINOR_VERSION = 0; static const int TIXML2_PATCH_VERSION = 0; -#define TINYXML2_MAJOR_VERSION 9 +#define TINYXML2_MAJOR_VERSION 10 #define TINYXML2_MINOR_VERSION 0 #define TINYXML2_PATCH_VERSION 0 @@ -112,7 +109,7 @@ static const int TIXML2_PATCH_VERSION = 0; // system, and the capacity of the stack. On the other hand, it's a trivial // attack that can result from ill, malicious, or even correctly formed XML, // so there needs to be a limit in place. -static const int TINYXML2_MAX_ELEMENT_DEPTH = 100; +static const int TINYXML2_MAX_ELEMENT_DEPTH = 500; namespace tinyxml2 { @@ -305,9 +302,9 @@ private: if ( cap > _allocated ) { TIXMLASSERT( cap <= INT_MAX / 2 ); const int newAllocated = cap * 2; - T* newMem = new T[newAllocated]; + T* newMem = new T[static_cast(newAllocated)]; TIXMLASSERT( newAllocated >= _size ); - memcpy( newMem, _mem, sizeof(T)*_size ); // warning: not using constructors, only works for PODs + memcpy( newMem, _mem, sizeof(T)*static_cast(_size) ); // warning: not using constructors, only works for PODs if ( _mem != _pool ) { delete [] _mem; } @@ -317,7 +314,7 @@ private: } T* _mem; - T _pool[INITIAL_SIZE]; + T _pool[static_cast(INITIAL_SIZE)]; int _allocated; // objects allocated int _size; // number objects in use }; @@ -365,17 +362,17 @@ public: _nUntracked = 0; } - virtual int ItemSize() const { + virtual int ItemSize() const override{ return ITEM_SIZE; } int CurrentAllocs() const { return _currentAllocs; } - virtual void* Alloc() { + virtual void* Alloc() override{ if ( !_root ) { // Need a new block. - Block* block = new Block(); + Block* block = new Block; _blockPtrs.Push( block ); Item* blockItems = block->items; @@ -398,7 +395,7 @@ public: return result; } - virtual void Free( void* mem ) { + virtual void Free( void* mem ) override { if ( !mem ) { return; } @@ -416,7 +413,7 @@ public: ITEM_SIZE, _nAllocs, _blockPtrs.Size() ); } - void SetTracked() { + void SetTracked() override { --_nUntracked; } @@ -443,7 +440,7 @@ private: union Item { Item* next; - char itemData[ITEM_SIZE]; + char itemData[static_cast(ITEM_SIZE)]; }; struct Block { Item items[ITEMS_PER_BLOCK]; @@ -603,7 +600,7 @@ public: TIXMLASSERT( p ); TIXMLASSERT( q ); TIXMLASSERT( nChar >= 0 ); - return strncmp( p, q, nChar ) == 0; + return strncmp( p, q, static_cast(nChar) ) == 0; } inline static bool IsUTF8Continuation( const char p ) { @@ -732,6 +729,12 @@ public: return 0; } + // ChildElementCount was originally suggested by msteiger on the sourceforge page for TinyXML and modified by KB1SPH for TinyXML-2. + + int ChildElementCount(const char *value) const; + + int ChildElementCount() const; + /** The meaning of 'value' changes for the specific type. @verbatim Document: empty (NULL is returned, not an empty string) @@ -992,12 +995,12 @@ class TINYXML2_LIB XMLText : public XMLNode { friend class XMLDocument; public: - virtual bool Accept( XMLVisitor* visitor ) const; + virtual bool Accept( XMLVisitor* visitor ) const override; - virtual XMLText* ToText() { + virtual XMLText* ToText() override { return this; } - virtual const XMLText* ToText() const { + virtual const XMLText* ToText() const override { return this; } @@ -1010,14 +1013,14 @@ public: return _isCData; } - virtual XMLNode* ShallowClone( XMLDocument* document ) const; - virtual bool ShallowEqual( const XMLNode* compare ) const; + virtual XMLNode* ShallowClone( XMLDocument* document ) const override; + virtual bool ShallowEqual( const XMLNode* compare ) const override; protected: explicit XMLText( XMLDocument* doc ) : XMLNode( doc ), _isCData( false ) {} virtual ~XMLText() {} - char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ); + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override; private: bool _isCData; @@ -1032,23 +1035,23 @@ class TINYXML2_LIB XMLComment : public XMLNode { friend class XMLDocument; public: - virtual XMLComment* ToComment() { + virtual XMLComment* ToComment() override { return this; } - virtual const XMLComment* ToComment() const { + virtual const XMLComment* ToComment() const override { return this; } - virtual bool Accept( XMLVisitor* visitor ) const; + virtual bool Accept( XMLVisitor* visitor ) const override; - virtual XMLNode* ShallowClone( XMLDocument* document ) const; - virtual bool ShallowEqual( const XMLNode* compare ) const; + virtual XMLNode* ShallowClone( XMLDocument* document ) const override; + virtual bool ShallowEqual( const XMLNode* compare ) const override; protected: explicit XMLComment( XMLDocument* doc ); virtual ~XMLComment(); - char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr); + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr) override; private: XMLComment( const XMLComment& ); // not supported @@ -1071,23 +1074,23 @@ class TINYXML2_LIB XMLDeclaration : public XMLNode { friend class XMLDocument; public: - virtual XMLDeclaration* ToDeclaration() { + virtual XMLDeclaration* ToDeclaration() override { return this; } - virtual const XMLDeclaration* ToDeclaration() const { + virtual const XMLDeclaration* ToDeclaration() const override { return this; } - virtual bool Accept( XMLVisitor* visitor ) const; + virtual bool Accept( XMLVisitor* visitor ) const override; - virtual XMLNode* ShallowClone( XMLDocument* document ) const; - virtual bool ShallowEqual( const XMLNode* compare ) const; + virtual XMLNode* ShallowClone( XMLDocument* document ) const override; + virtual bool ShallowEqual( const XMLNode* compare ) const override; protected: explicit XMLDeclaration( XMLDocument* doc ); virtual ~XMLDeclaration(); - char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ); + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override; private: XMLDeclaration( const XMLDeclaration& ); // not supported @@ -1106,23 +1109,23 @@ class TINYXML2_LIB XMLUnknown : public XMLNode { friend class XMLDocument; public: - virtual XMLUnknown* ToUnknown() { + virtual XMLUnknown* ToUnknown() override { return this; } - virtual const XMLUnknown* ToUnknown() const { + virtual const XMLUnknown* ToUnknown() const override { return this; } - virtual bool Accept( XMLVisitor* visitor ) const; + virtual bool Accept( XMLVisitor* visitor ) const override; - virtual XMLNode* ShallowClone( XMLDocument* document ) const; - virtual bool ShallowEqual( const XMLNode* compare ) const; + virtual XMLNode* ShallowClone( XMLDocument* document ) const override; + virtual bool ShallowEqual( const XMLNode* compare ) const override; protected: explicit XMLUnknown( XMLDocument* doc ); virtual ~XMLUnknown(); - char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ); + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override; private: XMLUnknown( const XMLUnknown& ); // not supported @@ -1274,13 +1277,13 @@ public: SetValue( str, staticMem ); } - virtual XMLElement* ToElement() { + virtual XMLElement* ToElement() override { return this; } - virtual const XMLElement* ToElement() const { + virtual const XMLElement* ToElement() const override { return this; } - virtual bool Accept( XMLVisitor* visitor ) const; + virtual bool Accept( XMLVisitor* visitor ) const override; /** Given an attribute name, Attribute() returns the value for the attribute of that name, or null if none @@ -1676,11 +1679,11 @@ public: ElementClosingType ClosingType() const { return _closingType; } - virtual XMLNode* ShallowClone( XMLDocument* document ) const; - virtual bool ShallowEqual( const XMLNode* compare ) const; + virtual XMLNode* ShallowClone( XMLDocument* document ) const override; + virtual bool ShallowEqual( const XMLNode* compare ) const override; protected: - char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ); + char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr ) override; private: XMLElement( XMLDocument* doc ); @@ -1704,7 +1707,8 @@ private: enum Whitespace { PRESERVE_WHITESPACE, - COLLAPSE_WHITESPACE + COLLAPSE_WHITESPACE, + PEDANTIC_WHITESPACE }; @@ -1728,11 +1732,11 @@ public: XMLDocument( bool processEntities = true, Whitespace whitespaceMode = PRESERVE_WHITESPACE ); ~XMLDocument(); - virtual XMLDocument* ToDocument() { + virtual XMLDocument* ToDocument() override { TIXMLASSERT( this == _document ); return this; } - virtual const XMLDocument* ToDocument() const { + virtual const XMLDocument* ToDocument() const override { TIXMLASSERT( this == _document ); return this; } @@ -1829,7 +1833,7 @@ public: @endverbatim */ void Print( XMLPrinter* streamer=0 ) const; - virtual bool Accept( XMLVisitor* visitor ) const; + virtual bool Accept( XMLVisitor* visitor ) const override; /** Create a new Element associated with @@ -1915,15 +1919,15 @@ public: void DeepCopy(XMLDocument* target) const; // internal - char* Identify( char* p, XMLNode** node ); + char* Identify( char* p, XMLNode** node, bool first ); // internal void MarkInUse(const XMLNode* const); - virtual XMLNode* ShallowClone( XMLDocument* /*document*/ ) const { + virtual XMLNode* ShallowClone( XMLDocument* /*document*/ ) const override{ return 0; } - virtual bool ShallowEqual( const XMLNode* /*compare*/ ) const { + virtual bool ShallowEqual( const XMLNode* /*compare*/ ) const override{ return false; } @@ -2286,18 +2290,18 @@ public: void PushDeclaration( const char* value ); void PushUnknown( const char* value ); - virtual bool VisitEnter( const XMLDocument& /*doc*/ ); - virtual bool VisitExit( const XMLDocument& /*doc*/ ) { + virtual bool VisitEnter( const XMLDocument& /*doc*/ ) override; + virtual bool VisitExit( const XMLDocument& /*doc*/ ) override { return true; } - virtual bool VisitEnter( const XMLElement& element, const XMLAttribute* attribute ); - virtual bool VisitExit( const XMLElement& element ); + virtual bool VisitEnter( const XMLElement& element, const XMLAttribute* attribute ) override; + virtual bool VisitExit( const XMLElement& element ) override; - virtual bool Visit( const XMLText& text ); - virtual bool Visit( const XMLComment& comment ); - virtual bool Visit( const XMLDeclaration& declaration ); - virtual bool Visit( const XMLUnknown& unknown ); + virtual bool Visit( const XMLText& text ) override; + virtual bool Visit( const XMLComment& comment ) override; + virtual bool Visit( const XMLDeclaration& declaration ) override; + virtual bool Visit( const XMLUnknown& unknown ) override; /** If in print to memory mode, return a pointer to diff --git a/vs/tinyxml2.sln b/vs/tinyxml2.sln deleted file mode 100644 index be0c85a..0000000 --- a/vs/tinyxml2.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31229.75 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyxml2", "tinyxml2.vcxproj", "{7C72653A-E6F8-4584-B553-DE3A0AEE4356}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7C72653A-E6F8-4584-B553-DE3A0AEE4356}.Debug|x64.ActiveCfg = Debug|x64 - {7C72653A-E6F8-4584-B553-DE3A0AEE4356}.Debug|x64.Build.0 = Debug|x64 - {7C72653A-E6F8-4584-B553-DE3A0AEE4356}.Debug|x86.ActiveCfg = Debug|Win32 - {7C72653A-E6F8-4584-B553-DE3A0AEE4356}.Debug|x86.Build.0 = Debug|Win32 - {7C72653A-E6F8-4584-B553-DE3A0AEE4356}.Release|x64.ActiveCfg = Release|x64 - {7C72653A-E6F8-4584-B553-DE3A0AEE4356}.Release|x64.Build.0 = Release|x64 - {7C72653A-E6F8-4584-B553-DE3A0AEE4356}.Release|x86.ActiveCfg = Release|Win32 - {7C72653A-E6F8-4584-B553-DE3A0AEE4356}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {8F57874D-F373-476E-93F5-EB09D74866E8} - EndGlobalSection -EndGlobal diff --git a/vs/tinyxml2.vcxproj b/vs/tinyxml2.vcxproj deleted file mode 100644 index be2a81a..0000000 --- a/vs/tinyxml2.vcxproj +++ /dev/null @@ -1,151 +0,0 @@ - - - - - Debug - Win32 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 16.0 - Win32Proj - {7c72653a-e6f8-4584-b553-de3a0aee4356} - tinyxml2 - 10.0 - - - - Application - true - v142 - Unicode - - - Application - false - v142 - true - Unicode - - - Application - true - v142 - Unicode - - - Application - false - v142 - true - Unicode - - - - - - - - - - - - - - - - - - - - - true - - - false - - - true - - - false - - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - true - true - - - - - Level3 - true - _DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - - - - - Level3 - true - true - true - NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - - - Console - true - true - true - - - - - - - - - - - - - \ No newline at end of file diff --git a/vs/tinyxml2.vcxproj.filters b/vs/tinyxml2.vcxproj.filters deleted file mode 100644 index b729bf8..0000000 --- a/vs/tinyxml2.vcxproj.filters +++ /dev/null @@ -1,22 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - - - - - Source Files - - - Source Files - - - - - Source Files - - - \ No newline at end of file diff --git a/xmltest.cpp b/xmltest.cpp index 7f196f1..ae97604 100755 --- a/xmltest.cpp +++ b/xmltest.cpp @@ -1869,6 +1869,178 @@ int main( int argc, const char ** argv ) XMLTest( "Whitespace all space", true, 0 == doc.FirstChildElement()->FirstChild() ); } + // ----------- Preserve Whitespace ------------ + { + const char* xml = "This is ' \n\n text '"; + XMLDocument doc(true, PRESERVE_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with whitespace preserved", false, doc.Error()); + XMLTest("Whitespace preserved", "This is ' \n\n text '", doc.FirstChildElement()->GetText()); + } + + { + const char* xml = " This \nis ' text ' "; + XMLDocument doc(true, PRESERVE_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with whitespace preserved", false, doc.Error()); + XMLTest("Whitespace preserved", " This \nis ' text ' ", doc.FirstChildElement()->GetText()); + } + + { + const char* xml = " \n This is ' text ' \n"; + XMLDocument doc(true, PRESERVE_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with whitespace preserved", false, doc.Error()); + XMLTest("Whitespace preserved", " \n This is ' text ' \n", doc.FirstChildElement()->GetText()); + } + + // Following cases are for text that is all whitespace which are not preserved intentionally + { + const char* xml = " "; + XMLDocument doc(true, PRESERVE_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with whitespace preserved", false, doc.Error()); + XMLTest("Whitespace preserved", true, 0 == doc.FirstChildElement()->GetText()); + } + + { + const char* xml = " "; + XMLDocument doc(true, PRESERVE_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with whitespace preserved", false, doc.Error()); + XMLTest("Whitespace preserved", true, 0 == doc.FirstChildElement()->GetText()); + } + + { + const char* xml = "\n\n"; + XMLDocument doc(true, PRESERVE_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with whitespace preserved", false, doc.Error()); + XMLTest("Whitespace preserved", true, 0 == doc.FirstChildElement()->GetText()); + } + + { + const char* xml = " \n"; + XMLDocument doc(true, PRESERVE_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with whitespace preserved", false, doc.Error()); + XMLTest("Whitespace preserved", true, 0 == doc.FirstChildElement()->GetText()); + } + + { + const char* xml = " \n \n "; + XMLDocument doc(true, PRESERVE_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with whitespace preserved", false, doc.Error()); + XMLTest("Whitespace preserved", true, 0 == doc.FirstChildElement()->GetText()); + } + + // ----------- Pedantic Whitespace ------------ + { + const char* xml = "This is ' \n\n text '"; + XMLDocument doc(true, PEDANTIC_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with pedantic whitespace", false, doc.Error()); + XMLTest("Pedantic whitespace", "This is ' \n\n text '", doc.FirstChildElement()->GetText()); + } + + { + const char* xml = " This \nis ' text ' "; + XMLDocument doc(true, PEDANTIC_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with pedantic whitespace", false, doc.Error()); + XMLTest("Pedantic whitespace", " This \nis ' text ' ", doc.FirstChildElement()->GetText()); + } + + { + const char* xml = " \n This is ' text ' \n"; + XMLDocument doc(true, PEDANTIC_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with pedantic whitespace", false, doc.Error()); + XMLTest("Pedantic whitespace", " \n This is ' text ' \n", doc.FirstChildElement()->GetText()); + } + + // Following cases are for text that is all whitespace which is preserved with pedantic mode + { + const char* xml = " "; + XMLDocument doc(true, PEDANTIC_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with pedantic whitespace", false, doc.Error()); + XMLTest("Pedantic whitespace", " ", doc.FirstChildElement()->GetText()); + } + + { + const char* xml = " "; + XMLDocument doc(true, PEDANTIC_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with pedantic whitespace", false, doc.Error()); + XMLTest("Pedantic whitespace", " ", doc.FirstChildElement()->GetText()); + } + + { + const char* xml = "\n\n\n"; + XMLDocument doc(true, PEDANTIC_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with pedantic whitespace", false, doc.Error()); + XMLTest("Pedantic whitespace", "\n\n", doc.FirstChildElement()->GetText()); + } + + { + const char* xml = " \n \n "; + XMLDocument doc(true, PEDANTIC_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with pedantic whitespace", false, doc.Error()); + XMLTest("Pedantic whitespace", " \n", doc.FirstChildElement()->GetText()); + } + + { + const char* xml = " \n \n "; + XMLDocument doc(true, PEDANTIC_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse with pedantic whitespace", false, doc.Error()); + XMLTest("Pedantic whitespace", " \n \n ", doc.FirstChildElement()->GetText()); + } + + // Following cases are for checking nested elements are still parsed with pedantic whitespace + { + const char* xml = "\n\t This is nested text \n "; + XMLDocument doc(true, PEDANTIC_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse nested elements with pedantic whitespace", false, doc.Error()); + XMLTest("Pedantic whitespace", " This is nested text ", doc.RootElement()->FirstChildElement()->GetText()); + } + + { + const char* xml = " \n"; + XMLDocument doc(true, PEDANTIC_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse nested elements with pedantic whitespace", false, doc.Error()); + XMLTest("Pedantic whitespace", " ", doc.RootElement()->FirstChildElement()->GetText()); + } + + { + const char* xml = " \n "; + XMLDocument doc(true, PEDANTIC_WHITESPACE); + doc.Parse(xml); + XMLTest("Parse nested elements with pedantic whitespace", false, doc.Error()); + XMLTest("Pedantic whitespace", true, 0 == doc.RootElement()->FirstChildElement()->GetText()); + } + + // Check sample xml can be parsed with pedantic mode + { + XMLDocument doc(true, PEDANTIC_WHITESPACE); + doc.LoadFile("resources/dream.xml"); + XMLTest("Load dream.xml with pedantic whitespace mode", false, doc.Error()); + + XMLTest("Dream", "xml version=\"1.0\"", + doc.FirstChild()->ToDeclaration()->Value()); + XMLTest("Dream", true, doc.FirstChild()->NextSibling()->ToUnknown() != 0); + XMLTest("Dream", "DOCTYPE PLAY SYSTEM \"play.dtd\"", + doc.FirstChild()->NextSibling()->ToUnknown()->Value()); + XMLTest("Dream", "And Robin shall restore amends.", + doc.LastChild()->LastChild()->LastChild()->LastChild()->LastChildElement()->GetText()); + } + { // An assert should not fire. const char* xml = ""; @@ -2149,6 +2321,12 @@ int main( int argc, const char ** argv ) XMLTest( "Should be no error initially", false, doc.Error() ); doc.LoadFile( "resources/no-such-file.xml" ); XMLTest( "No such file - should fail", true, doc.Error() ); + + doc.LoadFile("resources/dream.xml"); + XMLTest("Error should be cleared", false, doc.Error()); + + doc.LoadFile( "resources/xmltest-5330.xml" ); + XMLTest( "parse errors occur - should fail", true, doc.Error() ); doc.LoadFile( "resources/dream.xml" ); XMLTest( "Error should be cleared", false, doc.Error() ); -- 2.34.1