Compare commits
143 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bf15233ad8 | ||
|
|
8504195843 | ||
|
|
8db004b74c | ||
|
|
3d6a5477a7 | ||
|
|
bbbb8c9a90 | ||
|
|
e444268103 | ||
|
|
6ac05b2b9a | ||
|
|
655b15c078 | ||
|
|
59b01033f3 | ||
|
|
37ccc71008 | ||
|
|
3574d3e22f | ||
|
|
de62366e6a | ||
|
|
20f2d5eec7 | ||
|
|
a9c28ce3e3 | ||
|
|
2c642bf25e | ||
|
|
f4520c9905 | ||
|
|
1eb8a3f765 | ||
|
|
d09f879ada | ||
|
|
e620245043 | ||
|
|
d7455034ea | ||
|
|
7d9ca1e73c | ||
|
|
ad7bdf9ed2 | ||
|
|
8916a3c587 | ||
|
|
73f5409b62 | ||
|
|
ff61650517 | ||
|
|
9c740e8d23 | ||
|
|
a9a0ea22fb | ||
|
|
50daa32fc2 | ||
|
|
f60928eaa4 | ||
|
|
4994f1cc57 | ||
|
|
5bf58f0d1f | ||
|
|
141d2117ba | ||
|
|
87aaa25922 | ||
|
|
c3601c62f6 | ||
|
|
effdf95f8c | ||
|
|
c36d59f6b5 | ||
|
|
7fd646a8a2 | ||
|
|
1675bec2f2 | ||
|
|
d39b13bbb7 | ||
|
|
f12d7a241f | ||
|
|
e08c2d2e0e | ||
|
|
38f7d65b4a | ||
|
|
c341cea501 | ||
|
|
710a3324f4 | ||
|
|
4add958b49 | ||
|
|
eda7f81b1f | ||
|
|
1dbfe31858 | ||
|
|
47e229e189 | ||
|
|
75a5acc6bb | ||
|
|
61a4c7d507 | ||
|
|
db39dbc0fd | ||
|
|
eb2b8c47c4 | ||
|
|
bd5a1414df | ||
|
|
e1b3013182 | ||
|
|
0e7f289590 | ||
|
|
f5641e5470 | ||
|
|
8f4a9a8cc2 | ||
|
|
d944ef762f | ||
|
|
de6d164822 | ||
|
|
08da3d91c9 | ||
|
|
e06a24016e | ||
|
|
c3e09dabc6 | ||
|
|
44ac395142 | ||
|
|
397f22581b | ||
|
|
dcedec857b | ||
|
|
992e405384 | ||
|
|
de6f6616cd | ||
|
|
b894947c94 | ||
|
|
65c1b86582 | ||
|
|
ed3e9dc82e | ||
|
|
1781494391 | ||
|
|
4be5bc8059 | ||
|
|
7e8e249990 | ||
|
|
25b23b88e1 | ||
|
|
ade41cdfe9 | ||
|
|
2cc8a4c712 | ||
|
|
c07409b5c3 | ||
|
|
3be5d2b74b | ||
|
|
92506ca698 | ||
|
|
baf8bc93a7 | ||
|
|
db13a82e62 | ||
|
|
22b21ec9bc | ||
|
|
c483646db0 | ||
|
|
93a8fb18ea | ||
|
|
92fc089e17 | ||
|
|
9f14aca07f | ||
|
|
30d0c3d5f2 | ||
|
|
2bdb13ae5e | ||
|
|
233b2cb820 | ||
|
|
fc80df3b39 | ||
|
|
70d942e307 | ||
|
|
1cc174c2da | ||
|
|
1b029f2bdd | ||
|
|
392ec18324 | ||
|
|
b7c169ccbc | ||
|
|
c0ff869500 | ||
|
|
d89d6d9551 | ||
|
|
b54cf3cb45 | ||
|
|
a1d462d335 | ||
|
|
be69ae6352 | ||
|
|
3cdaf8b15e | ||
|
|
c1424ee4e1 | ||
|
|
b94eefc7a1 | ||
|
|
e2d02e1623 | ||
|
|
befc3c3ae7 | ||
|
|
f928c35186 | ||
|
|
d946ddadc2 | ||
|
|
65b5366a02 | ||
|
|
e59e3c3460 | ||
|
|
7dd295609c | ||
|
|
6a18a3105c | ||
|
|
f5af951f1d | ||
|
|
95f687b1f1 | ||
|
|
0741941589 | ||
|
|
ecbc16ae48 | ||
|
|
00b74a40b5 | ||
|
|
72407d2050 | ||
|
|
938560f9f0 | ||
|
|
3c9370561c | ||
|
|
0bb8767e37 | ||
|
|
51a1d1c937 | ||
|
|
ff75430374 | ||
|
|
5dd529236b | ||
|
|
0f1fa6d271 | ||
|
|
59785ec384 | ||
|
|
cc1745b552 | ||
|
|
dc75a362cb | ||
|
|
50689919b7 | ||
|
|
63d8de6278 | ||
|
|
703f91e6b8 | ||
|
|
c8593733a2 | ||
|
|
588e4ef8a9 | ||
|
|
f26a547fdc | ||
|
|
28f9a48d5e | ||
|
|
f6dc9be122 | ||
|
|
ff97dbb2cc | ||
|
|
5b00e0662f | ||
|
|
a36f7ac776 | ||
|
|
bd197877ca | ||
|
|
c9e3b52745 | ||
|
|
e1b50439c9 | ||
|
|
cf1006943b | ||
|
|
71b12596eb |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -7,6 +7,8 @@ tinyxml2/tinyxml2-cbp/bin/
|
|||||||
tinyxml2/tinyxml2-cbp/obj/
|
tinyxml2/tinyxml2-cbp/obj/
|
||||||
tinyxml2/bin/
|
tinyxml2/bin/
|
||||||
tinyxml2/temp/
|
tinyxml2/temp/
|
||||||
|
.artifacts/
|
||||||
|
.projects/
|
||||||
*.sdf
|
*.sdf
|
||||||
*.suo
|
*.suo
|
||||||
*.opensdf
|
*.opensdf
|
||||||
@@ -16,3 +18,5 @@ tinyxml2/temp/
|
|||||||
*.o
|
*.o
|
||||||
*.vc.db
|
*.vc.db
|
||||||
*.vc.opendb
|
*.vc.opendb
|
||||||
|
libtinyxml2.a
|
||||||
|
xmltest
|
||||||
|
|||||||
115
CMakeLists.txt
115
CMakeLists.txt
@@ -21,17 +21,15 @@ include(CTest)
|
|||||||
################################
|
################################
|
||||||
# set lib version here
|
# set lib version here
|
||||||
|
|
||||||
set(GENERIC_LIB_VERSION "6.0.0")
|
set(GENERIC_LIB_VERSION "8.0.0")
|
||||||
set(GENERIC_LIB_SOVERSION "6")
|
set(GENERIC_LIB_SOVERSION "8")
|
||||||
|
|
||||||
################################
|
################################
|
||||||
# Add definitions
|
# Add definitions
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
|
|
||||||
|
|
||||||
################################
|
################################
|
||||||
# Add targets
|
# Add targets
|
||||||
# By Default shared libray is being built
|
# By Default shared library is being built
|
||||||
# To build static libs also - Do cmake . -DBUILD_STATIC_LIBS:BOOL=ON
|
# To build static libs also - Do cmake . -DBUILD_STATIC_LIBS:BOOL=ON
|
||||||
# User can choose not to build shared library by using cmake -DBUILD_SHARED_LIBS:BOOL=OFF
|
# User can choose not to build shared library by using cmake -DBUILD_SHARED_LIBS:BOOL=OFF
|
||||||
# To build only static libs use cmake . -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_STATIC_LIBS:BOOL=ON
|
# To build only static libs use cmake . -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_STATIC_LIBS:BOOL=ON
|
||||||
@@ -39,28 +37,30 @@ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
|
|||||||
# To disable the building of the tests, use cmake . -DBUILD_TESTS:BOOL=OFF
|
# To disable the building of the tests, use cmake . -DBUILD_TESTS:BOOL=OFF
|
||||||
|
|
||||||
option(BUILD_SHARED_LIBS "build as shared library" ON)
|
option(BUILD_SHARED_LIBS "build as shared library" ON)
|
||||||
option(BUILD_STATIC_LIBS "build as static library" OFF)
|
|
||||||
option(BUILD_TESTS "build xmltest (deprecated: Use BUILD_TESTING)" ON)
|
option(BUILD_TESTS "build xmltest (deprecated: Use BUILD_TESTING)" ON)
|
||||||
|
|
||||||
|
# To allow using tinyxml in another shared library
|
||||||
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||||
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
|
set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
|
||||||
|
|
||||||
# to distinguish between debug and release lib
|
# to distinguish between debug and release lib
|
||||||
set(CMAKE_DEBUG_POSTFIX "d")
|
set(CMAKE_DEBUG_POSTFIX "d")
|
||||||
|
|
||||||
if(BUILD_SHARED_LIBS)
|
add_library(tinyxml2 tinyxml2.cpp tinyxml2.h)
|
||||||
add_library(tinyxml2 SHARED tinyxml2.cpp tinyxml2.h)
|
|
||||||
|
|
||||||
set_target_properties(tinyxml2 PROPERTIES
|
set_target_properties(tinyxml2 PROPERTIES
|
||||||
COMPILE_DEFINITIONS "TINYXML2_EXPORT"
|
COMPILE_DEFINITIONS "TINYXML2_EXPORT"
|
||||||
VERSION "${GENERIC_LIB_VERSION}"
|
VERSION "${GENERIC_LIB_VERSION}"
|
||||||
SOVERSION "${GENERIC_LIB_SOVERSION}")
|
SOVERSION "${GENERIC_LIB_SOVERSION}")
|
||||||
|
|
||||||
|
target_compile_definitions(tinyxml2 PUBLIC $<$<CONFIG:Debug>:TINYXML2_DEBUG>)
|
||||||
|
|
||||||
if(DEFINED CMAKE_VERSION AND NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11")
|
if(DEFINED CMAKE_VERSION AND NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11")
|
||||||
target_include_directories(tinyxml2 PUBLIC
|
target_include_directories(tinyxml2 PUBLIC
|
||||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
|
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
|
||||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>)
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
target_compile_definitions(tinyxml2 PUBLIC -D_CRT_SECURE_NO_WARNINGS)
|
target_compile_definitions(tinyxml2 PUBLIC -D_CRT_SECURE_NO_WARNINGS)
|
||||||
@@ -79,79 +79,35 @@ export(TARGETS tinyxml2
|
|||||||
|
|
||||||
install(TARGETS tinyxml2
|
install(TARGETS tinyxml2
|
||||||
EXPORT ${CMAKE_PROJECT_NAME}Targets
|
EXPORT ${CMAKE_PROJECT_NAME}Targets
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
COMPONENT tinyxml2_runtime
|
||||||
endif()
|
LIBRARY
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
if(BUILD_STATIC_LIBS)
|
COMPONENT tinyxml2_libraries
|
||||||
add_library(tinyxml2_static STATIC tinyxml2.cpp tinyxml2.h)
|
ARCHIVE
|
||||||
set_target_properties(tinyxml2_static PROPERTIES
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
COMPILE_DEFINITONS "TINYXML2_EXPORT"
|
COMPONENT tinyxml2_libraries)
|
||||||
VERSION "${GENERIC_LIB_VERSION}"
|
|
||||||
SOVERSION "${GENERIC_LIB_SOVERSION}")
|
|
||||||
set_target_properties( tinyxml2_static PROPERTIES OUTPUT_NAME tinyxml2 )
|
|
||||||
|
|
||||||
target_compile_definitions(tinyxml2_static PUBLIC -D_CRT_SECURE_NO_WARNINGS)
|
|
||||||
|
|
||||||
if(DEFINED CMAKE_VERSION AND NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11")
|
|
||||||
target_include_directories(tinyxml2_static PUBLIC
|
|
||||||
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
|
|
||||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>)
|
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
target_compile_definitions(tinyxml2_static PUBLIC -D_CRT_SECURE_NO_WARNINGS)
|
|
||||||
endif(MSVC)
|
|
||||||
else()
|
|
||||||
include_directories(${PROJECT_SOURCE_DIR})
|
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
|
||||||
endif(MSVC)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# export targets for find_package config mode
|
|
||||||
export(TARGETS tinyxml2_static
|
|
||||||
FILE ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Targets.cmake)
|
|
||||||
|
|
||||||
install(TARGETS tinyxml2_static
|
|
||||||
EXPORT ${CMAKE_PROJECT_NAME}Targets
|
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(BUILD_TESTING AND BUILD_TESTS)
|
if(BUILD_TESTING AND BUILD_TESTS)
|
||||||
add_executable(xmltest xmltest.cpp)
|
add_executable(xmltest xmltest.cpp)
|
||||||
if(BUILD_SHARED_LIBS)
|
|
||||||
add_dependencies(xmltest tinyxml2)
|
add_dependencies(xmltest tinyxml2)
|
||||||
target_link_libraries(xmltest tinyxml2)
|
target_link_libraries(xmltest tinyxml2)
|
||||||
else(BUILD_STATIC_LIBS)
|
|
||||||
add_dependencies(xmltest tinyxml2_static)
|
|
||||||
target_link_libraries(xmltest tinyxml2_static)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Copy test resources and create test output directory
|
# Copy test resources and create test output directory
|
||||||
add_custom_command(TARGET xmltest POST_BUILD
|
add_custom_command(TARGET xmltest POST_BUILD
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/resources $<TARGET_FILE_DIR:xmltest>/resources
|
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/resources $<TARGET_FILE_DIR:xmltest>/resources
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:xmltest>/resources/out
|
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:xmltest>/resources/out
|
||||||
COMMENT "Configuring xmltest resources directory: ${CMAKE_BINARY_DIR}/resources"
|
COMMENT "Configuring xmltest resources directory: ${CMAKE_CURRENT_BINARY_DIR}/resources"
|
||||||
)
|
)
|
||||||
|
|
||||||
add_test(NAME xmltest COMMAND xmltest)
|
add_test(NAME xmltest COMMAND xmltest WORKING_DIRECTORY $<TARGET_FILE_DIR:xmltest>)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
install(FILES tinyxml2.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
install(FILES tinyxml2.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT tinyxml2_headers)
|
||||||
|
|
||||||
foreach(p LIB INCLUDE)
|
|
||||||
set(var CMAKE_INSTALL_${p}DIR)
|
|
||||||
if(NOT IS_ABSOLUTE "${${var}}")
|
|
||||||
set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
configure_file(tinyxml2.pc.in tinyxml2.pc @ONLY)
|
configure_file(tinyxml2.pc.in tinyxml2.pc @ONLY)
|
||||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/tinyxml2.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/tinyxml2.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT tinyxml2_config)
|
||||||
|
|
||||||
# uninstall target
|
# uninstall target
|
||||||
if(NOT TARGET uninstall)
|
if(NOT TARGET uninstall)
|
||||||
@@ -164,13 +120,24 @@ if(NOT TARGET uninstall)
|
|||||||
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
|
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(WRITE
|
include(CMakePackageConfigHelpers)
|
||||||
${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
|
set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
|
||||||
"include(\${CMAKE_CURRENT_LIST_DIR}/${CMAKE_PROJECT_NAME}Targets.cmake)\n")
|
configure_package_config_file(
|
||||||
|
"Config.cmake.in"
|
||||||
|
"${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake"
|
||||||
|
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}"
|
||||||
|
)
|
||||||
|
write_basic_package_version_file(
|
||||||
|
"${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake"
|
||||||
|
VERSION ${GENERIC_LIB_VERSION}
|
||||||
|
COMPATIBILITY SameMajorVersion
|
||||||
|
)
|
||||||
install(FILES
|
install(FILES
|
||||||
${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
|
${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
|
||||||
DESTINATION lib/cmake/${CMAKE_PROJECT_NAME})
|
${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}
|
||||||
|
COMPONENT tinyxml2_config)
|
||||||
|
|
||||||
install(EXPORT ${CMAKE_PROJECT_NAME}Targets
|
install(EXPORT ${CMAKE_PROJECT_NAME}Targets NAMESPACE tinyxml2::
|
||||||
DESTINATION lib/cmake/${CMAKE_PROJECT_NAME})
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}
|
||||||
|
COMPONENT tinyxml2_config)
|
||||||
|
|||||||
4
Config.cmake.in
Normal file
4
Config.cmake.in
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")
|
||||||
|
check_required_components("@PROJECT_NAME@")
|
||||||
18
LICENSE.txt
Normal file
18
LICENSE.txt
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
This software is provided 'as-is', without any express or implied
|
||||||
|
warranty. In no event will the authors be held liable for any
|
||||||
|
damages arising from the use of this software.
|
||||||
|
|
||||||
|
Permission is granted to anyone to use this software for any
|
||||||
|
purpose, including commercial applications, and to alter it and
|
||||||
|
redistribute it freely, subject to the following restrictions:
|
||||||
|
|
||||||
|
1. The origin of this software must not be misrepresented; you must
|
||||||
|
not claim that you wrote the original software. If you use this
|
||||||
|
software in a product, an acknowledgment in the product documentation
|
||||||
|
would be appreciated but is not required.
|
||||||
|
|
||||||
|
2. Altered source versions must be plainly marked as such, and
|
||||||
|
must not be misrepresented as being the original software.
|
||||||
|
|
||||||
|
3. This notice may not be removed or altered from any source
|
||||||
|
distribution.
|
||||||
53
Makefile
53
Makefile
@@ -1,3 +1,26 @@
|
|||||||
|
# For GNU conventions and targets see https://www.gnu.org/prep/standards/standards.html
|
||||||
|
# Using GNU standards makes it easier for some users to keep doing what they are used to.
|
||||||
|
|
||||||
|
# 'mkdir -p' is non-portable, but it is widely supported. A portable solution
|
||||||
|
# is elusive due to race conditions on testing the directory and creating it.
|
||||||
|
# Anemic toolchain users can sidestep the problem using MKDIR="mkdir".
|
||||||
|
|
||||||
|
AR = ar
|
||||||
|
ARFLAGS = cr
|
||||||
|
RM = rm -f
|
||||||
|
RANLIB = ranlib
|
||||||
|
MKDIR = mkdir -p
|
||||||
|
CXXFLAGS = -fPIC
|
||||||
|
|
||||||
|
INSTALL = install
|
||||||
|
INSTALL_PROGRAM = $(INSTALL)
|
||||||
|
INSTALL_DATA = $(INSTALL) -m 644
|
||||||
|
|
||||||
|
prefix = /usr/local
|
||||||
|
bindir = $(prefix)/bin
|
||||||
|
libdir = $(prefix)/lib
|
||||||
|
includedir = $(prefix)/include
|
||||||
|
|
||||||
all: xmltest staticlib
|
all: xmltest staticlib
|
||||||
|
|
||||||
rebuild: clean all
|
rebuild: clean all
|
||||||
@@ -12,15 +35,41 @@ effc:
|
|||||||
-Wno-unused-parameter -Weffc++ xmltest.cpp tinyxml2.cpp -o xmltest
|
-Wno-unused-parameter -Weffc++ xmltest.cpp tinyxml2.cpp -o xmltest
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(RM) *.o xmltest libtinyxml2.a
|
-$(RM) *.o xmltest libtinyxml2.a
|
||||||
|
|
||||||
|
# Standard GNU target
|
||||||
|
distclean:
|
||||||
|
-$(RM) *.o xmltest libtinyxml2.a
|
||||||
|
|
||||||
test: clean xmltest
|
test: clean xmltest
|
||||||
./xmltest
|
./xmltest
|
||||||
|
|
||||||
|
# Standard GNU target
|
||||||
|
check: clean xmltest
|
||||||
|
./xmltest
|
||||||
|
|
||||||
staticlib: libtinyxml2.a
|
staticlib: libtinyxml2.a
|
||||||
|
|
||||||
libtinyxml2.a: tinyxml2.o
|
libtinyxml2.a: tinyxml2.o
|
||||||
$(AR) $(ARFLAGS)s $@ $^
|
$(AR) $(ARFLAGS) $@ $^
|
||||||
|
$(RANLIB) $@
|
||||||
|
|
||||||
tinyxml2.o: tinyxml2.cpp tinyxml2.h
|
tinyxml2.o: tinyxml2.cpp tinyxml2.h
|
||||||
|
|
||||||
|
directories:
|
||||||
|
$(MKDIR) $(DESTDIR)$(prefix)
|
||||||
|
$(MKDIR) $(DESTDIR)$(bindir)
|
||||||
|
$(MKDIR) $(DESTDIR)$(libdir)
|
||||||
|
$(MKDIR) $(DESTDIR)$(includedir)
|
||||||
|
|
||||||
|
# Standard GNU target.
|
||||||
|
install: xmltest staticlib directories
|
||||||
|
$(INSTALL_PROGRAM) xmltest $(DESTDIR)$(bindir)/xmltest
|
||||||
|
$(INSTALL_DATA) tinyxml2.h $(DESTDIR)$(includedir)/tinyxml2.h
|
||||||
|
$(INSTALL_DATA) libtinyxml2.a $(DESTDIR)$(libdir)/libtinyxml2.a
|
||||||
|
|
||||||
|
# Standard GNU target
|
||||||
|
uninstall:
|
||||||
|
$(RM) $(DESTDIR)$(bindir)/xmltest
|
||||||
|
$(RM) $(DESTDIR)$(includedir)/tinyxml2.h
|
||||||
|
$(RM) $(DESTDIR)$(libdir)/libtinyxml2.a
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -67,7 +67,7 @@ $(function() {
|
|||||||
</div></div><!-- contents -->
|
</div></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -67,7 +67,7 @@ $(function() {
|
|||||||
</div></div><!-- contents -->
|
</div></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -96,7 +96,7 @@ Text "A Midsummer Night's Dream" </li>
|
|||||||
</div></div><!-- contents -->
|
</div></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -73,7 +73,7 @@ $(function() {
|
|||||||
</div></div><!-- contents -->
|
</div></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -83,7 +83,7 @@ $(function() {
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -75,7 +75,7 @@ $(function() {
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -95,7 +95,7 @@ $(function() {
|
|||||||
</table></div><!-- contents -->
|
</table></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -215,7 +215,7 @@ void </td><td class="memItemRight" valign="bottom"><a class="el" href="clas
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -105,7 +105,7 @@ $(function() {
|
|||||||
</table></div><!-- contents -->
|
</table></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -292,7 +292,7 @@ const char* xmlcstr = printer.CStr();
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -73,7 +73,7 @@ $(function() {
|
|||||||
</table></div><!-- contents -->
|
</table></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -79,7 +79,7 @@ $(function() {
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -105,7 +105,7 @@ $(function() {
|
|||||||
</table></div><!-- contents -->
|
</table></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -294,7 +294,7 @@ const char* xmlcstr = printer.CStr();
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -73,63 +73,62 @@ $(function() {
|
|||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a9efa54f7ecb37c17ab1fa2b3078ccca1">Accept</a>(XMLVisitor *visitor) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a9efa54f7ecb37c17ab1fa2b3078ccca1">Accept</a>(XMLVisitor *visitor) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a65656b0b2cbc822708eb351504178aaf">Clear</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a65656b0b2cbc822708eb351504178aaf">Clear</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a62c71b6bf8734b5424063b8d9a61c266">DeepClone</a>(XMLDocument *target) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a62c71b6bf8734b5424063b8d9a61c266">DeepClone</a>(XMLDocument *target) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#aab792e90adc38cdc5446616573b8b01b">DeepCopy</a>(XMLDocument *target)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#af592ffc91514e25a39664521ac83db45">DeepCopy</a>(XMLDocument *target) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a363b6edbd6ebd55f8387d2b89f2b0921">DeleteChild</a>(XMLNode *node)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a363b6edbd6ebd55f8387d2b89f2b0921">DeleteChild</a>(XMLNode *node)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a0360085cc54df5bff85d5c5da13afdce">DeleteChildren</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a0360085cc54df5bff85d5c5da13afdce">DeleteChildren</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ac1d6e2c7fcc1a660624ac4f68e96380d">DeleteNode</a>(XMLNode *node)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ac1d6e2c7fcc1a660624ac4f68e96380d">DeleteNode</a>(XMLNode *node)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a34e6318e182e40e3cc4f4ba5d59ed9ed">Error</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a34e6318e182e40e3cc4f4ba5d59ed9ed">Error</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d">ErrorID</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d">ErrorID</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a57400f816dbe7799ece33615ead9ab76">ErrorLineNum</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ad75aa9d32c4e8b300655186808aa9abf">ErrorStr</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#ae7dc225e1018cdd685f7563593a1fe08">FirstChild</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#ae7dc225e1018cdd685f7563593a1fe08">FirstChild</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a1795a35852dc8aae877cc8ded986e59b">FirstChildElement</a>(const char *name=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a1795a35852dc8aae877cc8ded986e59b">FirstChildElement</a>(const char *name=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a2de84cfa4ec3fe249bad745069d145f1">GetDocument</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a2de84cfa4ec3fe249bad745069d145f1">GetDocument</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#af343d1ef0b45c0020e62d784d7e67a68">GetDocument</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#af343d1ef0b45c0020e62d784d7e67a68">GetDocument</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ad82d07e43e096e834dbdfd06312398c1">GetErrorLineNum</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a9b5fc636646fda761d342c72e91cb286">GetLineNum</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a229494e30e5473237f3fa547eee4c43f">GetErrorStr1</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a7f0687574afa03bc479dc44f29db0afe">GetUserData</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a2d952f49c761bffd2903250680a8716b">GetErrorStr2</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a33fc5d159db873a179fa26338adb05bd">HasBOM</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a9b5fc636646fda761d342c72e91cb286">GetLineNum</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a85adb8f0b7477eec30f9a41d420b09c2">InsertAfterChild</a>(XMLNode *afterThis, XMLNode *addThis)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a7f0687574afa03bc479dc44f29db0afe">GetUserData</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#aeb249ed60f4e8bfad3709151c3ee4286">InsertEndChild</a>(XMLNode *addThis)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a33fc5d159db873a179fa26338adb05bd">HasBOM</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a8ff7dc071f3a1a6ae2ac25a37492865d">InsertFirstChild</a>(XMLNode *addThis)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a85adb8f0b7477eec30f9a41d420b09c2">InsertAfterChild</a>(XMLNode *afterThis, XMLNode *addThis)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a9b8583a277e8e26f4cbbb5492786778e">LastChild</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#aeb249ed60f4e8bfad3709151c3ee4286">InsertEndChild</a>(XMLNode *addThis)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a173e9d1341bc56992e2d320a35936551">LastChildElement</a>(const char *name=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a8ff7dc071f3a1a6ae2ac25a37492865d">InsertFirstChild</a>(XMLNode *addThis)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a2ebd4647a8af5fc6831b294ac26a150a">LoadFile</a>(const char *filename)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a9b8583a277e8e26f4cbbb5492786778e">LastChild</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a5f1d330fad44c52f3d265338dd2a6dc2">LoadFile</a>(FILE *)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a173e9d1341bc56992e2d320a35936551">LastChildElement</a>(const char *name=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ade4874bcb439954972ef2b3723ff3259">NewComment</a>(const char *comment)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a2ebd4647a8af5fc6831b294ac26a150a">LoadFile</a>(const char *filename)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#aee2eb3435923f5494dcc70ac225b60a2">NewDeclaration</a>(const char *text=0)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a5f1d330fad44c52f3d265338dd2a6dc2">LoadFile</a>(FILE *)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a8aa7817d4a1001364b06373763ab99d6">NewElement</a>(const char *name)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ade4874bcb439954972ef2b3723ff3259">NewComment</a>(const char *comment)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ab7e8b29ae4099092a8bb947da6361296">NewText</a>(const char *text)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#aee2eb3435923f5494dcc70ac225b60a2">NewDeclaration</a>(const char *text=0)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a5385c937734ff6db9226ab707d2c7147">NewUnknown</a>(const char *text)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a8aa7817d4a1001364b06373763ab99d6">NewElement</a>(const char *name)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a79db9ef0fe014d27790f2218b87bcbb5">NextSibling</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ab7e8b29ae4099092a8bb947da6361296">NewText</a>(const char *text)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a1264c86233328f0cd36297552d982f80">NextSiblingElement</a>(const char *name=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a5385c937734ff6db9226ab707d2c7147">NewUnknown</a>(const char *text)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#ac3ab489e6e202a3cd1762d3b332e89d4">NoChildren</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a79db9ef0fe014d27790f2218b87bcbb5">NextSibling</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#ae0f62bc186c56c2e0483ebd52dbfbe34">Parent</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a1264c86233328f0cd36297552d982f80">NextSiblingElement</a>(const char *name=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a1819bd34f540a7304c105a6232d25a1f">Parse</a>(const char *xml, size_t nBytes=(size_t)(-1))</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#ac3ab489e6e202a3cd1762d3b332e89d4">NoChildren</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#aac667c513d445f8b783e1e15ef9d3551">PreviousSibling</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#ae0f62bc186c56c2e0483ebd52dbfbe34">Parent</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a872936cae46fb473eb47fec99129fc70">PreviousSiblingElement</a>(const char *name=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a1819bd34f540a7304c105a6232d25a1f">Parse</a>(const char *xml, size_t nBytes=(size_t)(-1))</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a867cf5fa3e3ff6ae4847a8b7ee8ec083">Print</a>(XMLPrinter *streamer=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#aac667c513d445f8b783e1e15ef9d3551">PreviousSibling</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a1d033945b42e125d933d6231e4571552">PrintError</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a872936cae46fb473eb47fec99129fc70">PreviousSiblingElement</a>(const char *name=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ad2b70320d3c2a071c2f36928edff3e1c">RootElement</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a867cf5fa3e3ff6ae4847a8b7ee8ec083">Print</a>(XMLPrinter *streamer=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a73ac416b4a2aa0952e841220eb3da18f">SaveFile</a>(const char *filename, bool compact=false)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a1d033945b42e125d933d6231e4571552">PrintError</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a8b95779479a0035acc67b3a61dfe1b74">SaveFile</a>(FILE *fp, bool compact=false)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ad2b70320d3c2a071c2f36928edff3e1c">RootElement</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a14419b698f7c4b140df4e80f3f0c93b0">SetBOM</a>(bool useBOM)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a73ac416b4a2aa0952e841220eb3da18f">SaveFile</a>(const char *filename, bool compact=false)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a002978fc889cc011d143185f2377eca2">SetUserData</a>(void *userData)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a8b95779479a0035acc67b3a61dfe1b74">SaveFile</a>(FILE *fp, bool compact=false)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a09dd68cf9eae137579f6e50f36487513">SetValue</a>(const char *val, bool staticMem=false)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a14419b698f7c4b140df4e80f3f0c93b0">SetBOM</a>(bool useBOM)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#aa37cc1709d7e1e988bc17dcfb24a69b8">ShallowClone</a>(XMLDocument *) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a002978fc889cc011d143185f2377eca2">SetUserData</a>(void *userData)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a6fe5ef18699091844fcf64b56ffa5bf9">ShallowEqual</a>(const XMLNode *) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a09dd68cf9eae137579f6e50f36487513">SetValue</a>(const char *val, bool staticMem=false)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#aff47671055aa99840a1c1ebd661e63e3">ToComment</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#aa37cc1709d7e1e988bc17dcfb24a69b8">ShallowClone</a>(XMLDocument *) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a174fd4c22c010b58138c1b84a0dfbd51">ToDeclaration</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a6fe5ef18699091844fcf64b56ffa5bf9">ShallowEqual</a>(const XMLNode *) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a3e185f880882bd978367bb55937735ec">ToDocument</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#aff47671055aa99840a1c1ebd661e63e3">ToComment</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#aab516e699567f75cc9ab2ef2eee501e8">ToElement</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a174fd4c22c010b58138c1b84a0dfbd51">ToDeclaration</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a41c55dab9162d1eb62db2008430e376b">ToText</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a3e185f880882bd978367bb55937735ec">ToDocument</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a8675a74aa0ada6eccab0c77ef3e5b9bd">ToUnknown</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#aab516e699567f75cc9ab2ef2eee501e8">ToElement</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a66344989a4b436155bcda72bd6b07b82">Value</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a41c55dab9162d1eb62db2008430e376b">ToText</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a57ddf17b6e054dda10af98991b1b8f70">XMLDocument</a>(bool processEntities=true, Whitespace whitespaceMode=PRESERVE_WHITESPACE)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a8675a74aa0ada6eccab0c77ef3e5b9bd">ToUnknown</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a66344989a4b436155bcda72bd6b07b82">Value</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a57ddf17b6e054dda10af98991b1b8f70">XMLDocument</a>(bool processEntities=true, Whitespace whitespaceMode=PRESERVE_WHITESPACE)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">tinyxml2::XMLDocument</a></td><td class="entry"></td></tr>
|
|
||||||
</table></div><!-- contents -->
|
</table></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -132,28 +132,22 @@ bool </td><td class="memItemRight" valign="bottom"><a class="el" href="clas
|
|||||||
XMLError </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d">ErrorID</a> () const</td></tr>
|
XMLError </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d">ErrorID</a> () const</td></tr>
|
||||||
<tr class="memdesc:afa3ed33b3107f920ec2b301f805ac17d"><td class="mdescLeft"> </td><td class="mdescRight">Return the errorID. <br /></td></tr>
|
<tr class="memdesc:afa3ed33b3107f920ec2b301f805ac17d"><td class="mdescLeft"> </td><td class="mdescRight">Return the errorID. <br /></td></tr>
|
||||||
<tr class="separator:afa3ed33b3107f920ec2b301f805ac17d"><td class="memSeparator" colspan="2"> </td></tr>
|
<tr class="separator:afa3ed33b3107f920ec2b301f805ac17d"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
<tr class="memitem:a229494e30e5473237f3fa547eee4c43f"><td class="memItemLeft" align="right" valign="top"><a id="a229494e30e5473237f3fa547eee4c43f"></a>
|
<tr class="memitem:ad75aa9d32c4e8b300655186808aa9abf"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ad75aa9d32c4e8b300655186808aa9abf">ErrorStr</a> () const</td></tr>
|
||||||
const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a229494e30e5473237f3fa547eee4c43f">GetErrorStr1</a> () const</td></tr>
|
<tr class="separator:ad75aa9d32c4e8b300655186808aa9abf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
<tr class="memdesc:a229494e30e5473237f3fa547eee4c43f"><td class="mdescLeft"> </td><td class="mdescRight">Return a possibly helpful diagnostic location or string. <br /></td></tr>
|
|
||||||
<tr class="separator:a229494e30e5473237f3fa547eee4c43f"><td class="memSeparator" colspan="2"> </td></tr>
|
|
||||||
<tr class="memitem:a2d952f49c761bffd2903250680a8716b"><td class="memItemLeft" align="right" valign="top"><a id="a2d952f49c761bffd2903250680a8716b"></a>
|
|
||||||
const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a2d952f49c761bffd2903250680a8716b">GetErrorStr2</a> () const</td></tr>
|
|
||||||
<tr class="memdesc:a2d952f49c761bffd2903250680a8716b"><td class="mdescLeft"> </td><td class="mdescRight">Return a possibly helpful secondary diagnostic location or string. <br /></td></tr>
|
|
||||||
<tr class="separator:a2d952f49c761bffd2903250680a8716b"><td class="memSeparator" colspan="2"> </td></tr>
|
|
||||||
<tr class="memitem:ad82d07e43e096e834dbdfd06312398c1"><td class="memItemLeft" align="right" valign="top"><a id="ad82d07e43e096e834dbdfd06312398c1"></a>
|
|
||||||
int </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ad82d07e43e096e834dbdfd06312398c1">GetErrorLineNum</a> () const</td></tr>
|
|
||||||
<tr class="memdesc:ad82d07e43e096e834dbdfd06312398c1"><td class="mdescLeft"> </td><td class="mdescRight">Return the line where the error occured, or zero if unknown. <br /></td></tr>
|
|
||||||
<tr class="separator:ad82d07e43e096e834dbdfd06312398c1"><td class="memSeparator" colspan="2"> </td></tr>
|
|
||||||
<tr class="memitem:a1d033945b42e125d933d6231e4571552"><td class="memItemLeft" align="right" valign="top"><a id="a1d033945b42e125d933d6231e4571552"></a>
|
<tr class="memitem:a1d033945b42e125d933d6231e4571552"><td class="memItemLeft" align="right" valign="top"><a id="a1d033945b42e125d933d6231e4571552"></a>
|
||||||
void </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a1d033945b42e125d933d6231e4571552">PrintError</a> () const</td></tr>
|
void </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a1d033945b42e125d933d6231e4571552">PrintError</a> () const</td></tr>
|
||||||
<tr class="memdesc:a1d033945b42e125d933d6231e4571552"><td class="mdescLeft"> </td><td class="mdescRight">If there is an error, print it to stdout. <br /></td></tr>
|
<tr class="memdesc:a1d033945b42e125d933d6231e4571552"><td class="mdescLeft"> </td><td class="mdescRight">A (trivial) utility function that prints the <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ad75aa9d32c4e8b300655186808aa9abf">ErrorStr()</a> to stdout. <br /></td></tr>
|
||||||
<tr class="separator:a1d033945b42e125d933d6231e4571552"><td class="memSeparator" colspan="2"> </td></tr>
|
<tr class="separator:a1d033945b42e125d933d6231e4571552"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
|
<tr class="memitem:a57400f816dbe7799ece33615ead9ab76"><td class="memItemLeft" align="right" valign="top"><a id="a57400f816dbe7799ece33615ead9ab76"></a>
|
||||||
|
int </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a57400f816dbe7799ece33615ead9ab76">ErrorLineNum</a> () const</td></tr>
|
||||||
|
<tr class="memdesc:a57400f816dbe7799ece33615ead9ab76"><td class="mdescLeft"> </td><td class="mdescRight">Return the line where the error occurred, or zero if unknown. <br /></td></tr>
|
||||||
|
<tr class="separator:a57400f816dbe7799ece33615ead9ab76"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
<tr class="memitem:a65656b0b2cbc822708eb351504178aaf"><td class="memItemLeft" align="right" valign="top"><a id="a65656b0b2cbc822708eb351504178aaf"></a>
|
<tr class="memitem:a65656b0b2cbc822708eb351504178aaf"><td class="memItemLeft" align="right" valign="top"><a id="a65656b0b2cbc822708eb351504178aaf"></a>
|
||||||
void </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a65656b0b2cbc822708eb351504178aaf">Clear</a> ()</td></tr>
|
void </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a65656b0b2cbc822708eb351504178aaf">Clear</a> ()</td></tr>
|
||||||
<tr class="memdesc:a65656b0b2cbc822708eb351504178aaf"><td class="mdescLeft"> </td><td class="mdescRight">Clear the document, resetting it to the initial state. <br /></td></tr>
|
<tr class="memdesc:a65656b0b2cbc822708eb351504178aaf"><td class="mdescLeft"> </td><td class="mdescRight">Clear the document, resetting it to the initial state. <br /></td></tr>
|
||||||
<tr class="separator:a65656b0b2cbc822708eb351504178aaf"><td class="memSeparator" colspan="2"> </td></tr>
|
<tr class="separator:a65656b0b2cbc822708eb351504178aaf"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
<tr class="memitem:aab792e90adc38cdc5446616573b8b01b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#aab792e90adc38cdc5446616573b8b01b">DeepCopy</a> (<a class="el" href="classtinyxml2_1_1_x_m_l_document.html">XMLDocument</a> *target)</td></tr>
|
<tr class="memitem:af592ffc91514e25a39664521ac83db45"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#af592ffc91514e25a39664521ac83db45">DeepCopy</a> (<a class="el" href="classtinyxml2_1_1_x_m_l_document.html">XMLDocument</a> *target) const</td></tr>
|
||||||
<tr class="separator:aab792e90adc38cdc5446616573b8b01b"><td class="memSeparator" colspan="2"> </td></tr>
|
<tr class="separator:af592ffc91514e25a39664521ac83db45"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
<tr class="memitem:aa37cc1709d7e1e988bc17dcfb24a69b8"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classtinyxml2_1_1_x_m_l_node.html">XMLNode</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#aa37cc1709d7e1e988bc17dcfb24a69b8">ShallowClone</a> (<a class="el" href="classtinyxml2_1_1_x_m_l_document.html">XMLDocument</a> *) const</td></tr>
|
<tr class="memitem:aa37cc1709d7e1e988bc17dcfb24a69b8"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classtinyxml2_1_1_x_m_l_node.html">XMLNode</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#aa37cc1709d7e1e988bc17dcfb24a69b8">ShallowClone</a> (<a class="el" href="classtinyxml2_1_1_x_m_l_document.html">XMLDocument</a> *) const</td></tr>
|
||||||
<tr class="separator:aa37cc1709d7e1e988bc17dcfb24a69b8"><td class="memSeparator" colspan="2"> </td></tr>
|
<tr class="separator:aa37cc1709d7e1e988bc17dcfb24a69b8"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
<tr class="memitem:a6fe5ef18699091844fcf64b56ffa5bf9"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a6fe5ef18699091844fcf64b56ffa5bf9">ShallowEqual</a> (const <a class="el" href="classtinyxml2_1_1_x_m_l_node.html">XMLNode</a> *) const</td></tr>
|
<tr class="memitem:a6fe5ef18699091844fcf64b56ffa5bf9"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a6fe5ef18699091844fcf64b56ffa5bf9">ShallowEqual</a> (const <a class="el" href="classtinyxml2_1_1_x_m_l_node.html">XMLNode</a> *) const</td></tr>
|
||||||
@@ -290,8 +284,8 @@ const char* xmlcstr = printer.CStr();
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a id="aab792e90adc38cdc5446616573b8b01b"></a>
|
<a id="af592ffc91514e25a39664521ac83db45"></a>
|
||||||
<h2 class="memtitle"><span class="permalink"><a href="#aab792e90adc38cdc5446616573b8b01b">◆ </a></span>DeepCopy()</h2>
|
<h2 class="memtitle"><span class="permalink"><a href="#af592ffc91514e25a39664521ac83db45">◆ </a></span>DeepCopy()</h2>
|
||||||
|
|
||||||
<div class="memitem">
|
<div class="memitem">
|
||||||
<div class="memproto">
|
<div class="memproto">
|
||||||
@@ -301,7 +295,7 @@ const char* xmlcstr = printer.CStr();
|
|||||||
<td>(</td>
|
<td>(</td>
|
||||||
<td class="paramtype"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">XMLDocument</a> * </td>
|
<td class="paramtype"><a class="el" href="classtinyxml2_1_1_x_m_l_document.html">XMLDocument</a> * </td>
|
||||||
<td class="paramname"><em>target</em></td><td>)</td>
|
<td class="paramname"><em>target</em></td><td>)</td>
|
||||||
<td></td>
|
<td> const</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div><div class="memdoc">
|
</div><div class="memdoc">
|
||||||
@@ -327,6 +321,24 @@ const char* xmlcstr = printer.CStr();
|
|||||||
</div><div class="memdoc">
|
</div><div class="memdoc">
|
||||||
<p>Delete a node associated with this document. It will be unlinked from the DOM. </p>
|
<p>Delete a node associated with this document. It will be unlinked from the DOM. </p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a id="ad75aa9d32c4e8b300655186808aa9abf"></a>
|
||||||
|
<h2 class="memtitle"><span class="permalink"><a href="#ad75aa9d32c4e8b300655186808aa9abf">◆ </a></span>ErrorStr()</h2>
|
||||||
|
|
||||||
|
<div class="memitem">
|
||||||
|
<div class="memproto">
|
||||||
|
<table class="memname">
|
||||||
|
<tr>
|
||||||
|
<td class="memname">const char* tinyxml2::XMLDocument::ErrorStr </td>
|
||||||
|
<td>(</td>
|
||||||
|
<td class="paramname"></td><td>)</td>
|
||||||
|
<td> const</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div><div class="memdoc">
|
||||||
|
<p>Returns a "long form" error description. A hopefully helpful diagnostic with location, line number, and/or additional info. </p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a id="a33fc5d159db873a179fa26338adb05bd"></a>
|
<a id="a33fc5d159db873a179fa26338adb05bd"></a>
|
||||||
@@ -722,7 +734,7 @@ doc.Print( &printer );
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -106,7 +106,7 @@ $(function() {
|
|||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#ae0f62bc186c56c2e0483ebd52dbfbe34">Parent</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#ae0f62bc186c56c2e0483ebd52dbfbe34">Parent</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#aac667c513d445f8b783e1e15ef9d3551">PreviousSibling</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#aac667c513d445f8b783e1e15ef9d3551">PreviousSibling</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a872936cae46fb473eb47fec99129fc70">PreviousSiblingElement</a>(const char *name=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a872936cae46fb473eb47fec99129fc70">PreviousSiblingElement</a>(const char *name=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a042fc30504347b84a56cf863ad528a4f">QueryAttribute</a>(const char *name, int *value) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a5b7df3bed2b8954eabf227fa204522eb">QueryAttribute</a>(const char *name, int *value) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872">QueryBoolAttribute</a>(const char *name, bool *value) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872">QueryBoolAttribute</a>(const char *name, bool *value) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a3fe5417d59eb8f5c4afe924b7d332736">QueryBoolText</a>(bool *bval) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a3fe5417d59eb8f5c4afe924b7d332736">QueryBoolText</a>(bool *bval) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a5f0964e2dbd8e2ee7fce9beab689443c">QueryDoubleAttribute</a>(const char *name, double *value) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a5f0964e2dbd8e2ee7fce9beab689443c">QueryDoubleAttribute</a>(const char *name, double *value) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
@@ -117,40 +117,41 @@ $(function() {
|
|||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a120c538c8eead169e635dbc70fb226d8">QueryInt64Text</a>(int64_t *uval) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a120c538c8eead169e635dbc70fb226d8">QueryInt64Text</a>(int64_t *uval) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1">QueryIntAttribute</a>(const char *name, int *value) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1">QueryIntAttribute</a>(const char *name, int *value) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a926357996bef633cb736e1a558419632">QueryIntText</a>(int *ival) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a926357996bef633cb736e1a558419632">QueryIntText</a>(int *ival) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f">QueryUnsignedAttribute</a>(const char *name, unsigned int *value) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#adb8ae765f98d0c5037faec48deea78bc">QueryStringAttribute</a>(const char *name, const char **value) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a14d38aa4b5e18a46274a27425188a6a1">QueryUnsignedText</a>(unsigned *uval) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f">QueryUnsignedAttribute</a>(const char *name, unsigned int *value) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a11943abf2d0831548c3790dd5d9f119c">SetAttribute</a>(const char *name, const char *value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a14d38aa4b5e18a46274a27425188a6a1">QueryUnsignedText</a>(unsigned *uval) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#aae6568c64c7f1cc88be8461ba41a79cf">SetAttribute</a>(const char *name, int value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a11943abf2d0831548c3790dd5d9f119c">SetAttribute</a>(const char *name, const char *value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#ae143997e90064ba82326b29a9930ea8f">SetAttribute</a>(const char *name, unsigned value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#aae6568c64c7f1cc88be8461ba41a79cf">SetAttribute</a>(const char *name, int value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#aaeefdf9171fec91b13a776b42299b0dd">SetAttribute</a>(const char *name, int64_t value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#ae143997e90064ba82326b29a9930ea8f">SetAttribute</a>(const char *name, unsigned value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#aa848b696e6a75e4e545c6da9893b11e1">SetAttribute</a>(const char *name, bool value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#aaeefdf9171fec91b13a776b42299b0dd">SetAttribute</a>(const char *name, int64_t value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a233397ee81e70eb5d4b814c5f8698533">SetAttribute</a>(const char *name, double value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#aa848b696e6a75e4e545c6da9893b11e1">SetAttribute</a>(const char *name, bool value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a554b70d882e65b28fc084b23df9b9759">SetAttribute</a>(const char *name, float value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a233397ee81e70eb5d4b814c5f8698533">SetAttribute</a>(const char *name, double value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a97712009a530d8cb8a63bf705f02b4f1">SetName</a>(const char *str, bool staticMem=false)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a554b70d882e65b28fc084b23df9b9759">SetAttribute</a>(const char *name, float value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a1f9c2cd61b72af5ae708d37b7ad283ce">SetText</a>(const char *inText)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a97712009a530d8cb8a63bf705f02b4f1">SetName</a>(const char *str, bool staticMem=false)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#aeae8917b5ea6060b3c08d4e3d8d632d7">SetText</a>(int value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a1f9c2cd61b72af5ae708d37b7ad283ce">SetText</a>(const char *inText)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a7bbfcc11d516598bc924a8fba4d08597">SetText</a>(unsigned value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#aeae8917b5ea6060b3c08d4e3d8d632d7">SetText</a>(int value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a7b62cd33acdfeff7ea2b1b330d4368e4">SetText</a>(int64_t value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a7bbfcc11d516598bc924a8fba4d08597">SetText</a>(unsigned value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#ae4b543d6770de76fb6ab68e541c192a4">SetText</a>(bool value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a7b62cd33acdfeff7ea2b1b330d4368e4">SetText</a>(int64_t value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a67bd77ac9aaeff58ff20b4275a65ba4e">SetText</a>(double value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#ae4b543d6770de76fb6ab68e541c192a4">SetText</a>(bool value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a51d560da5ae3ad6b75e0ab9ffb2ae42a">SetText</a>(float value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a67bd77ac9aaeff58ff20b4275a65ba4e">SetText</a>(double value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a002978fc889cc011d143185f2377eca2">SetUserData</a>(void *userData)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a51d560da5ae3ad6b75e0ab9ffb2ae42a">SetText</a>(float value)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a09dd68cf9eae137579f6e50f36487513">SetValue</a>(const char *val, bool staticMem=false)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a002978fc889cc011d143185f2377eca2">SetUserData</a>(void *userData)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#ac035742d68b0c50c3f676374e59fe750">ShallowClone</a>(XMLDocument *document) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a09dd68cf9eae137579f6e50f36487513">SetValue</a>(const char *val, bool staticMem=false)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#ad9ea913a460b48979bd83cf9871c99f6">ShallowEqual</a>(const XMLNode *compare) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#ac035742d68b0c50c3f676374e59fe750">ShallowClone</a>(XMLDocument *document) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#aff47671055aa99840a1c1ebd661e63e3">ToComment</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#ad9ea913a460b48979bd83cf9871c99f6">ShallowEqual</a>(const XMLNode *compare) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a174fd4c22c010b58138c1b84a0dfbd51">ToDeclaration</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#aff47671055aa99840a1c1ebd661e63e3">ToComment</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a836e2966ed736fc3c94f70e12a2a3357">ToDocument</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a174fd4c22c010b58138c1b84a0dfbd51">ToDeclaration</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#ad9ff5c2dbc15df36cf664ce1b0ea0a5d">ToElement</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a836e2966ed736fc3c94f70e12a2a3357">ToDocument</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a41c55dab9162d1eb62db2008430e376b">ToText</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#ad9ff5c2dbc15df36cf664ce1b0ea0a5d">ToElement</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a8675a74aa0ada6eccab0c77ef3e5b9bd">ToUnknown</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a41c55dab9162d1eb62db2008430e376b">ToText</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#afea43a1d4aa33e3703ddee5fc9adc26c">UnsignedAttribute</a>(const char *name, unsigned defaultValue=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a8675a74aa0ada6eccab0c77ef3e5b9bd">ToUnknown</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">virtual</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a49bad014ffcc17b0b6119d5b2c97dfb5">UnsignedText</a>(unsigned defaultValue=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#afea43a1d4aa33e3703ddee5fc9adc26c">UnsignedAttribute</a>(const char *name, unsigned defaultValue=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a66344989a4b436155bcda72bd6b07b82">Value</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a49bad014ffcc17b0b6119d5b2c97dfb5">UnsignedText</a>(unsigned defaultValue=0) const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html">tinyxml2::XMLElement</a></td><td class="entry"></td></tr>
|
||||||
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a66344989a4b436155bcda72bd6b07b82">Value</a>() const</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_node.html">tinyxml2::XMLNode</a></td><td class="entry"></td></tr>
|
||||||
</table></div><!-- contents -->
|
</table></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -144,8 +144,12 @@ XMLError </td><td class="memItemRight" valign="bottom"><a class="el" href="
|
|||||||
XMLError </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#acd5eeddf6002ef90806af794b9d9a5a5">QueryFloatAttribute</a> (const char *name, float *value) const</td></tr>
|
XMLError </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#acd5eeddf6002ef90806af794b9d9a5a5">QueryFloatAttribute</a> (const char *name, float *value) const</td></tr>
|
||||||
<tr class="memdesc:acd5eeddf6002ef90806af794b9d9a5a5"><td class="mdescLeft"> </td><td class="mdescRight">See <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1">QueryIntAttribute()</a> <br /></td></tr>
|
<tr class="memdesc:acd5eeddf6002ef90806af794b9d9a5a5"><td class="mdescLeft"> </td><td class="mdescRight">See <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1">QueryIntAttribute()</a> <br /></td></tr>
|
||||||
<tr class="separator:acd5eeddf6002ef90806af794b9d9a5a5"><td class="memSeparator" colspan="2"> </td></tr>
|
<tr class="separator:acd5eeddf6002ef90806af794b9d9a5a5"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
<tr class="memitem:a042fc30504347b84a56cf863ad528a4f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a042fc30504347b84a56cf863ad528a4f">QueryAttribute</a> (const char *name, int *value) const</td></tr>
|
<tr class="memitem:adb8ae765f98d0c5037faec48deea78bc"><td class="memItemLeft" align="right" valign="top"><a id="adb8ae765f98d0c5037faec48deea78bc"></a>
|
||||||
<tr class="separator:a042fc30504347b84a56cf863ad528a4f"><td class="memSeparator" colspan="2"> </td></tr>
|
XMLError </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#adb8ae765f98d0c5037faec48deea78bc">QueryStringAttribute</a> (const char *name, const char **value) const</td></tr>
|
||||||
|
<tr class="memdesc:adb8ae765f98d0c5037faec48deea78bc"><td class="mdescLeft"> </td><td class="mdescRight">See <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1">QueryIntAttribute()</a> <br /></td></tr>
|
||||||
|
<tr class="separator:adb8ae765f98d0c5037faec48deea78bc"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
|
<tr class="memitem:a5b7df3bed2b8954eabf227fa204522eb"><td class="memItemLeft" align="right" valign="top">XMLError </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a5b7df3bed2b8954eabf227fa204522eb">QueryAttribute</a> (const char *name, int *value) const</td></tr>
|
||||||
|
<tr class="separator:a5b7df3bed2b8954eabf227fa204522eb"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
<tr class="memitem:a11943abf2d0831548c3790dd5d9f119c"><td class="memItemLeft" align="right" valign="top"><a id="a11943abf2d0831548c3790dd5d9f119c"></a>
|
<tr class="memitem:a11943abf2d0831548c3790dd5d9f119c"><td class="memItemLeft" align="right" valign="top"><a id="a11943abf2d0831548c3790dd5d9f119c"></a>
|
||||||
void </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a11943abf2d0831548c3790dd5d9f119c">SetAttribute</a> (const char *name, const char *value)</td></tr>
|
void </td><td class="memItemRight" valign="bottom"><a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a11943abf2d0831548c3790dd5d9f119c">SetAttribute</a> (const char *name, const char *value)</td></tr>
|
||||||
<tr class="memdesc:a11943abf2d0831548c3790dd5d9f119c"><td class="mdescLeft"> </td><td class="mdescRight">Sets the named attribute to value. <br /></td></tr>
|
<tr class="memdesc:a11943abf2d0831548c3790dd5d9f119c"><td class="mdescLeft"> </td><td class="mdescRight">Sets the named attribute to value. <br /></td></tr>
|
||||||
@@ -498,8 +502,8 @@ const char* xmlcstr = printer.CStr();
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a id="a042fc30504347b84a56cf863ad528a4f"></a>
|
<a id="a5b7df3bed2b8954eabf227fa204522eb"></a>
|
||||||
<h2 class="memtitle"><span class="permalink"><a href="#a042fc30504347b84a56cf863ad528a4f">◆ </a></span>QueryAttribute()</h2>
|
<h2 class="memtitle"><span class="permalink"><a href="#a5b7df3bed2b8954eabf227fa204522eb">◆ </a></span>QueryAttribute()</h2>
|
||||||
|
|
||||||
<div class="memitem">
|
<div class="memitem">
|
||||||
<div class="memproto">
|
<div class="memproto">
|
||||||
@@ -508,7 +512,7 @@ const char* xmlcstr = printer.CStr();
|
|||||||
<td class="mlabels-left">
|
<td class="mlabels-left">
|
||||||
<table class="memname">
|
<table class="memname">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="memname">int tinyxml2::XMLElement::QueryAttribute </td>
|
<td class="memname">XMLError tinyxml2::XMLElement::QueryAttribute </td>
|
||||||
<td>(</td>
|
<td>(</td>
|
||||||
<td class="paramtype">const char * </td>
|
<td class="paramtype">const char * </td>
|
||||||
<td class="paramname"><em>name</em>, </td>
|
<td class="paramname"><em>name</em>, </td>
|
||||||
@@ -531,7 +535,7 @@ const char* xmlcstr = printer.CStr();
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div><div class="memdoc">
|
</div><div class="memdoc">
|
||||||
<p>Given an attribute name, <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a042fc30504347b84a56cf863ad528a4f">QueryAttribute()</a> 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 <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1">QueryIntAttribute()</a> and related functions.</p>
|
<p>Given an attribute name, <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a5b7df3bed2b8954eabf227fa204522eb">QueryAttribute()</a> 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 <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1">QueryIntAttribute()</a> and related functions.</p>
|
||||||
<p>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:</p>
|
<p>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:</p>
|
||||||
<pre class="fragment">int value = 10;
|
<pre class="fragment">int value = 10;
|
||||||
QueryAttribute( "foo", &value ); // if "foo" isn't found, value will still be 10
|
QueryAttribute( "foo", &value ); // if "foo" isn't found, value will still be 10
|
||||||
@@ -700,7 +704,7 @@ QueryIntAttribute( "foo", &value ); // if "foo" isn't found, value will
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -84,13 +84,13 @@ $(function() {
|
|||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html#a03ea6ec970a021b71bf1219a0f6717df">ToNode</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html">tinyxml2::XMLHandle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html#a03ea6ec970a021b71bf1219a0f6717df">ToNode</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html">tinyxml2::XMLHandle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html#a6ab9e8cbfb41417246e5657e3842c62a">ToText</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html">tinyxml2::XMLHandle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html#a6ab9e8cbfb41417246e5657e3842c62a">ToText</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html">tinyxml2::XMLHandle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html#aa387368a1ad8d843a9f12df863d298de">ToUnknown</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html">tinyxml2::XMLHandle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html#aa387368a1ad8d843a9f12df863d298de">ToUnknown</a>()</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html">tinyxml2::XMLHandle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html#a9c240a35c18f053509b4b97ddccd9793">XMLHandle</a>(XMLNode *node)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html">tinyxml2::XMLHandle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html#a9c240a35c18f053509b4b97ddccd9793">XMLHandle</a>(XMLNode *node)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html">tinyxml2::XMLHandle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
|
||||||
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html#aa2edbc1c0d3e3e8259bd98de7f1cf500">XMLHandle</a>(XMLNode &node)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html">tinyxml2::XMLHandle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html#aa2edbc1c0d3e3e8259bd98de7f1cf500">XMLHandle</a>(XMLNode &node)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html">tinyxml2::XMLHandle</a></td><td class="entry"><span class="mlabel">inline</span><span class="mlabel">explicit</span></td></tr>
|
||||||
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html#afd8e01e6018c07347b8e6d80272466aa">XMLHandle</a>(const XMLHandle &ref)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html">tinyxml2::XMLHandle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
<tr class="even"><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html#afd8e01e6018c07347b8e6d80272466aa">XMLHandle</a>(const XMLHandle &ref)</td><td class="entry"><a class="el" href="classtinyxml2_1_1_x_m_l_handle.html">tinyxml2::XMLHandle</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
|
||||||
</table></div><!-- contents -->
|
</table></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -181,7 +181,7 @@ if ( child2 )
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -105,7 +105,7 @@ $(function() {
|
|||||||
</table></div><!-- contents -->
|
</table></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -257,7 +257,7 @@ const char* xmlcstr = printer.CStr();
|
|||||||
</div><div class="memdoc">
|
</div><div class="memdoc">
|
||||||
<p>Make a copy of this node and all its children.</p>
|
<p>Make a copy of this node and all its children.</p>
|
||||||
<p>If the 'target' is null, then the nodes will be allocated in the current document. If 'target' is specified, the memory will be allocated is the specified <a class="el" href="classtinyxml2_1_1_x_m_l_document.html">XMLDocument</a>.</p>
|
<p>If the 'target' is null, then the nodes will be allocated in the current document. If 'target' is specified, the memory will be allocated is the specified <a class="el" href="classtinyxml2_1_1_x_m_l_document.html">XMLDocument</a>.</p>
|
||||||
<p>NOTE: This is probably not the correct tool to copy a document, since XMLDocuments can have multiple top level XMLNodes. You probably want to use <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#aab792e90adc38cdc5446616573b8b01b">XMLDocument::DeepCopy()</a> </p>
|
<p>NOTE: This is probably not the correct tool to copy a document, since XMLDocuments can have multiple top level XMLNodes. You probably want to use <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#af592ffc91514e25a39664521ac83db45">XMLDocument::DeepCopy()</a> </p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -573,7 +573,7 @@ Text: the text string
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -98,7 +98,7 @@ $(function() {
|
|||||||
</table></div><!-- contents -->
|
</table></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -402,7 +402,7 @@ printer.CloseElement();
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -107,7 +107,7 @@ $(function() {
|
|||||||
</table></div><!-- contents -->
|
</table></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -302,7 +302,7 @@ const char* xmlcstr = printer.CStr();
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -105,7 +105,7 @@ $(function() {
|
|||||||
</table></div><!-- contents -->
|
</table></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -293,7 +293,7 @@ const char* xmlcstr = printer.CStr();
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -81,7 +81,7 @@ $(function() {
|
|||||||
</table></div><!-- contents -->
|
</table></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -130,7 +130,7 @@ virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" hr
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -71,7 +71,7 @@ $(function() {
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:27 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -117,7 +117,7 @@ $(function() {
|
|||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a62c71b6bf8734b5424063b8d9a61c266">tinyxml2::XMLNode</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a62c71b6bf8734b5424063b8d9a61c266">tinyxml2::XMLNode</a>
|
||||||
</li>
|
</li>
|
||||||
<li>DeepCopy()
|
<li>DeepCopy()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#aab792e90adc38cdc5446616573b8b01b">tinyxml2::XMLDocument</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#af592ffc91514e25a39664521ac83db45">tinyxml2::XMLDocument</a>
|
||||||
</li>
|
</li>
|
||||||
<li>DeleteAttribute()
|
<li>DeleteAttribute()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#aebd45aa7118964c30b32fe12e944628a">tinyxml2::XMLElement</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#aebd45aa7118964c30b32fe12e944628a">tinyxml2::XMLElement</a>
|
||||||
@@ -150,6 +150,12 @@ $(function() {
|
|||||||
<li>ErrorID()
|
<li>ErrorID()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d">tinyxml2::XMLDocument</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d">tinyxml2::XMLDocument</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>ErrorLineNum()
|
||||||
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a57400f816dbe7799ece33615ead9ab76">tinyxml2::XMLDocument</a>
|
||||||
|
</li>
|
||||||
|
<li>ErrorStr()
|
||||||
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ad75aa9d32c4e8b300655186808aa9abf">tinyxml2::XMLDocument</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
@@ -184,15 +190,6 @@ $(function() {
|
|||||||
<li>GetDocument()
|
<li>GetDocument()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a2de84cfa4ec3fe249bad745069d145f1">tinyxml2::XMLNode</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a2de84cfa4ec3fe249bad745069d145f1">tinyxml2::XMLNode</a>
|
||||||
</li>
|
</li>
|
||||||
<li>GetErrorLineNum()
|
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ad82d07e43e096e834dbdfd06312398c1">tinyxml2::XMLDocument</a>
|
|
||||||
</li>
|
|
||||||
<li>GetErrorStr1()
|
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a229494e30e5473237f3fa547eee4c43f">tinyxml2::XMLDocument</a>
|
|
||||||
</li>
|
|
||||||
<li>GetErrorStr2()
|
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a2d952f49c761bffd2903250680a8716b">tinyxml2::XMLDocument</a>
|
|
||||||
</li>
|
|
||||||
<li>GetLineNum()
|
<li>GetLineNum()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_attribute.html#a02d5ea924586e35f9c13857d1671b765">tinyxml2::XMLAttribute</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_attribute.html#a02d5ea924586e35f9c13857d1671b765">tinyxml2::XMLAttribute</a>
|
||||||
, <a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a9b5fc636646fda761d342c72e91cb286">tinyxml2::XMLNode</a>
|
, <a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a9b5fc636646fda761d342c72e91cb286">tinyxml2::XMLNode</a>
|
||||||
@@ -341,7 +338,7 @@ $(function() {
|
|||||||
|
|
||||||
<h3><a id="index_q"></a>- q -</h3><ul>
|
<h3><a id="index_q"></a>- q -</h3><ul>
|
||||||
<li>QueryAttribute()
|
<li>QueryAttribute()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a042fc30504347b84a56cf863ad528a4f">tinyxml2::XMLElement</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a5b7df3bed2b8954eabf227fa204522eb">tinyxml2::XMLElement</a>
|
||||||
</li>
|
</li>
|
||||||
<li>QueryBoolAttribute()
|
<li>QueryBoolAttribute()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872">tinyxml2::XMLElement</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872">tinyxml2::XMLElement</a>
|
||||||
@@ -388,6 +385,9 @@ $(function() {
|
|||||||
<li>QueryIntValue()
|
<li>QueryIntValue()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_attribute.html#a6d5176260db00ea301c01af8457cd993">tinyxml2::XMLAttribute</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_attribute.html#a6d5176260db00ea301c01af8457cd993">tinyxml2::XMLAttribute</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>QueryStringAttribute()
|
||||||
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#adb8ae765f98d0c5037faec48deea78bc">tinyxml2::XMLElement</a>
|
||||||
|
</li>
|
||||||
<li>QueryUnsignedAttribute()
|
<li>QueryUnsignedAttribute()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f">tinyxml2::XMLElement</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f">tinyxml2::XMLElement</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -536,7 +536,7 @@ $(function() {
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -117,7 +117,7 @@ $(function() {
|
|||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a62c71b6bf8734b5424063b8d9a61c266">tinyxml2::XMLNode</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a62c71b6bf8734b5424063b8d9a61c266">tinyxml2::XMLNode</a>
|
||||||
</li>
|
</li>
|
||||||
<li>DeepCopy()
|
<li>DeepCopy()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#aab792e90adc38cdc5446616573b8b01b">tinyxml2::XMLDocument</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#af592ffc91514e25a39664521ac83db45">tinyxml2::XMLDocument</a>
|
||||||
</li>
|
</li>
|
||||||
<li>DeleteAttribute()
|
<li>DeleteAttribute()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#aebd45aa7118964c30b32fe12e944628a">tinyxml2::XMLElement</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#aebd45aa7118964c30b32fe12e944628a">tinyxml2::XMLElement</a>
|
||||||
@@ -150,6 +150,12 @@ $(function() {
|
|||||||
<li>ErrorID()
|
<li>ErrorID()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d">tinyxml2::XMLDocument</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d">tinyxml2::XMLDocument</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>ErrorLineNum()
|
||||||
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a57400f816dbe7799ece33615ead9ab76">tinyxml2::XMLDocument</a>
|
||||||
|
</li>
|
||||||
|
<li>ErrorStr()
|
||||||
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ad75aa9d32c4e8b300655186808aa9abf">tinyxml2::XMLDocument</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
@@ -184,15 +190,6 @@ $(function() {
|
|||||||
<li>GetDocument()
|
<li>GetDocument()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a2de84cfa4ec3fe249bad745069d145f1">tinyxml2::XMLNode</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a2de84cfa4ec3fe249bad745069d145f1">tinyxml2::XMLNode</a>
|
||||||
</li>
|
</li>
|
||||||
<li>GetErrorLineNum()
|
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#ad82d07e43e096e834dbdfd06312398c1">tinyxml2::XMLDocument</a>
|
|
||||||
</li>
|
|
||||||
<li>GetErrorStr1()
|
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a229494e30e5473237f3fa547eee4c43f">tinyxml2::XMLDocument</a>
|
|
||||||
</li>
|
|
||||||
<li>GetErrorStr2()
|
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_document.html#a2d952f49c761bffd2903250680a8716b">tinyxml2::XMLDocument</a>
|
|
||||||
</li>
|
|
||||||
<li>GetLineNum()
|
<li>GetLineNum()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_attribute.html#a02d5ea924586e35f9c13857d1671b765">tinyxml2::XMLAttribute</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_attribute.html#a02d5ea924586e35f9c13857d1671b765">tinyxml2::XMLAttribute</a>
|
||||||
, <a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a9b5fc636646fda761d342c72e91cb286">tinyxml2::XMLNode</a>
|
, <a class="el" href="classtinyxml2_1_1_x_m_l_node.html#a9b5fc636646fda761d342c72e91cb286">tinyxml2::XMLNode</a>
|
||||||
@@ -341,7 +338,7 @@ $(function() {
|
|||||||
|
|
||||||
<h3><a id="index_q"></a>- q -</h3><ul>
|
<h3><a id="index_q"></a>- q -</h3><ul>
|
||||||
<li>QueryAttribute()
|
<li>QueryAttribute()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a042fc30504347b84a56cf863ad528a4f">tinyxml2::XMLElement</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a5b7df3bed2b8954eabf227fa204522eb">tinyxml2::XMLElement</a>
|
||||||
</li>
|
</li>
|
||||||
<li>QueryBoolAttribute()
|
<li>QueryBoolAttribute()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872">tinyxml2::XMLElement</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872">tinyxml2::XMLElement</a>
|
||||||
@@ -388,6 +385,9 @@ $(function() {
|
|||||||
<li>QueryIntValue()
|
<li>QueryIntValue()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_attribute.html#a6d5176260db00ea301c01af8457cd993">tinyxml2::XMLAttribute</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_attribute.html#a6d5176260db00ea301c01af8457cd993">tinyxml2::XMLAttribute</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>QueryStringAttribute()
|
||||||
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#adb8ae765f98d0c5037faec48deea78bc">tinyxml2::XMLElement</a>
|
||||||
|
</li>
|
||||||
<li>QueryUnsignedAttribute()
|
<li>QueryUnsignedAttribute()
|
||||||
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f">tinyxml2::XMLElement</a>
|
: <a class="el" href="classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f">tinyxml2::XMLElement</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -536,7 +536,7 @@ $(function() {
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:27 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -82,7 +82,7 @@ $(function() {
|
|||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -82,29 +82,13 @@ $(function() {
|
|||||||
<h2>What it doesn't do. </h2>
|
<h2>What it doesn't do. </h2>
|
||||||
<p>TinyXML-2 doesn't parse or use DTDs (Document Type Definitions) or XSLs (eXtensible Stylesheet Language.) There are other parsers out there that are much more fully featured. But they are also much bigger, take longer to set up in your project, have a higher learning curve, and often have a more restrictive license. If you are working with browsers or have more complete XML needs, TinyXML-2 is not the parser for you.</p>
|
<p>TinyXML-2 doesn't parse or use DTDs (Document Type Definitions) or XSLs (eXtensible Stylesheet Language.) There are other parsers out there that are much more fully featured. But they are also much bigger, take longer to set up in your project, have a higher learning curve, and often have a more restrictive license. If you are working with browsers or have more complete XML needs, TinyXML-2 is not the parser for you.</p>
|
||||||
<h2>TinyXML-1 vs. TinyXML-2 </h2>
|
<h2>TinyXML-1 vs. TinyXML-2 </h2>
|
||||||
<p>TinyXML-2 is now the focus of all development, well tested, and your best choice unless you have a requirement to maintain TinyXML-1 code.</p>
|
<p>TinyXML-2 is now the focus of all development, well tested, and your best choice between the two APIs. At this point, unless you are maintaining legacy code, you should choose TinyXML-2.</p>
|
||||||
<p>TinyXML-2 uses a similar API to TinyXML-1 and the same rich test cases. But the implementation of the parser is completely re-written to make it more appropriate for use in a game. It uses less memory, is faster, and uses far fewer memory allocations.</p>
|
<p>TinyXML-2 uses a similar API to TinyXML-1 and the same rich test cases. But the implementation of the parser is completely re-written to make it more appropriate for use in a game. It uses less memory, is faster, and uses far fewer memory allocations.</p>
|
||||||
<p>TinyXML-2 has no requirement for STL, but has also dropped all STL support. All strings are query and set as 'const char*'. This allows the use of internal allocators, and keeps the code much simpler.</p>
|
<p>TinyXML-2 has no requirement or support for STL. By returning <code>const char*</code> TinyXML-2 can be much more efficient with memory usage. (TinyXML-1 did support and use STL, but consumed much more memory for the DOM representation.)</p>
|
||||||
<p>Both parsers:</p>
|
|
||||||
<ol type="1">
|
|
||||||
<li>Simple to use with similar APIs.</li>
|
|
||||||
<li>DOM based parser.</li>
|
|
||||||
<li>UTF-8 Unicode support. <a href="http://en.wikipedia.org/wiki/UTF-8">http://en.wikipedia.org/wiki/UTF-8</a></li>
|
|
||||||
</ol>
|
|
||||||
<p>Advantages of TinyXML-2</p>
|
|
||||||
<ol type="1">
|
|
||||||
<li>The focus of all future dev.</li>
|
|
||||||
<li>Many fewer memory allocation (1/10th to 1/100th), uses less memory (about 40% of TinyXML-1), and faster.</li>
|
|
||||||
<li>No STL requirement.</li>
|
|
||||||
<li>More modern C++, including a proper namespace.</li>
|
|
||||||
<li>Proper and useful handling of whitespace</li>
|
|
||||||
</ol>
|
|
||||||
<p>Advantages of TinyXML-1</p>
|
|
||||||
<ol type="1">
|
|
||||||
<li>Support for some C++ STL conventions: streams and strings</li>
|
|
||||||
<li>Very mature and well debugged code base.</li>
|
|
||||||
</ol>
|
|
||||||
<h2>Features </h2>
|
<h2>Features </h2>
|
||||||
|
<h3>Code Page</h3>
|
||||||
|
<p>TinyXML-2 uses UTF-8 exclusively when interpreting XML. All XML is assumed to be UTF-8.</p>
|
||||||
|
<p>Filenames for loading / saving are passed unchanged to the underlying OS.</p>
|
||||||
<h3>Memory Model</h3>
|
<h3>Memory Model</h3>
|
||||||
<p>An XMLDocument is a C++ object like any other, that can be on the stack, or new'd and deleted on the heap.</p>
|
<p>An XMLDocument is a C++ object like any other, that can be on the stack, or new'd and deleted on the heap.</p>
|
||||||
<p>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.</p>
|
<p>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.</p>
|
||||||
@@ -134,7 +118,7 @@ $(function() {
|
|||||||
</ul>
|
</ul>
|
||||||
<p>Note that (currently) there is a performance impact for using COLLAPSE_WHITESPACE. It essentially causes the XML to be parsed twice.</p>
|
<p>Note that (currently) there is a performance impact for using COLLAPSE_WHITESPACE. It essentially causes the XML to be parsed twice.</p>
|
||||||
<h4>Error Reporting</h4>
|
<h4>Error Reporting</h4>
|
||||||
<p>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 in it's errors.</p>
|
<p>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.</p>
|
||||||
<h3>Entities</h3>
|
<h3>Entities</h3>
|
||||||
<p>TinyXML-2 recognizes the pre-defined "character entities", meaning special characters. Namely: </p><pre class="fragment">&amp; &
|
<p>TinyXML-2 recognizes the pre-defined "character entities", meaning special characters. Namely: </p><pre class="fragment">&amp; &
|
||||||
&lt; <
|
&lt; <
|
||||||
@@ -199,7 +183,7 @@ printer.CloseElement();
|
|||||||
<p>And additionally a test file:</p><ul>
|
<p>And additionally a test file:</p><ul>
|
||||||
<li>xmltest.cpp</li>
|
<li>xmltest.cpp</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>Simply compile and run. There is a visual studio 2015 project included, a simple Makefile, an Xcode project, a Code::Blocks project, and a cmake CMakeLists.txt included to help you. The top of tinyxml.h even has a simple g++ command line if you are are *nix and don't want to use a build system.</p>
|
<p>Simply compile and run. There is a visual studio 2017 project included, a simple Makefile, an Xcode project, a Code::Blocks project, and a cmake CMakeLists.txt included to help you. The top of tinyxml.h even has a simple g++ command line if you are are Unix/Linuk/BSD and don't want to use a build system.</p>
|
||||||
<h2>Versioning </h2>
|
<h2>Versioning </h2>
|
||||||
<p>TinyXML-2 uses semantic versioning. <a href="http://semver.org/">http://semver.org/</a> Releases are now tagged in github.</p>
|
<p>TinyXML-2 uses semantic versioning. <a href="http://semver.org/">http://semver.org/</a> Releases are now tagged in github.</p>
|
||||||
<p>Note that the major version will (probably) change fairly rapidly. API changes are fairly common.</p>
|
<p>Note that the major version will (probably) change fairly rapidly. API changes are fairly common.</p>
|
||||||
@@ -222,7 +206,7 @@ printer.CloseElement();
|
|||||||
</div></div><!-- contents -->
|
</div></div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<tr style="height: 56px;">
|
<tr style="height: 56px;">
|
||||||
<td id="projectalign" style="padding-left: 0.5em;">
|
<td id="projectalign" style="padding-left: 0.5em;">
|
||||||
<div id="projectname">TinyXML-2
|
<div id="projectname">TinyXML-2
|
||||||
 <span id="projectnumber">5.0.1</span>
|
 <span id="projectnumber">7.0.0</span>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -65,16 +65,16 @@ $(function() {
|
|||||||
<div class="contents">
|
<div class="contents">
|
||||||
<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
|
<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
|
||||||
<table class="directory">
|
<table class="directory">
|
||||||
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a class="el" href="_example-1.html" target="_self">Load an XML File</a></td><td class="desc"></td></tr>
|
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a class="el" href="_example_1.html" target="_self">Load an XML File</a></td><td class="desc"></td></tr>
|
||||||
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a class="el" href="_example-2.html" target="_self">Parse an XML from char buffer</a></td><td class="desc"></td></tr>
|
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a class="el" href="_example_2.html" target="_self">Parse an XML from char buffer</a></td><td class="desc"></td></tr>
|
||||||
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a class="el" href="_example-3.html" target="_self">Get information out of XML</a></td><td class="desc"></td></tr>
|
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a class="el" href="_example_3.html" target="_self">Get information out of XML</a></td><td class="desc"></td></tr>
|
||||||
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a class="el" href="_example-4.html" target="_self">Read attributes and text information.</a></td><td class="desc"></td></tr>
|
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a class="el" href="_example_4.html" target="_self">Read attributes and text information.</a></td><td class="desc"></td></tr>
|
||||||
</table>
|
</table>
|
||||||
</div><!-- directory -->
|
</div><!-- directory -->
|
||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
<!-- start footer part -->
|
<!-- start footer part -->
|
||||||
<hr class="footer"/><address class="footer"><small>
|
<hr class="footer"/><address class="footer"><small>
|
||||||
Generated on Sat Jul 15 2017 19:39:36 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
Generated on Tue Nov 6 2018 09:38:26 for TinyXML-2 by  <a href="http://www.doxygen.org/index.html">
|
||||||
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
||||||
</a> 1.8.13
|
</a> 1.8.13
|
||||||
</small></address>
|
</small></address>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['deepclone',['DeepClone',['../classtinyxml2_1_1_x_m_l_node.html#a62c71b6bf8734b5424063b8d9a61c266',1,'tinyxml2::XMLNode']]],
|
['deepclone',['DeepClone',['../classtinyxml2_1_1_x_m_l_node.html#a62c71b6bf8734b5424063b8d9a61c266',1,'tinyxml2::XMLNode']]],
|
||||||
['deepcopy',['DeepCopy',['../classtinyxml2_1_1_x_m_l_document.html#aab792e90adc38cdc5446616573b8b01b',1,'tinyxml2::XMLDocument']]],
|
['deepcopy',['DeepCopy',['../classtinyxml2_1_1_x_m_l_document.html#af592ffc91514e25a39664521ac83db45',1,'tinyxml2::XMLDocument']]],
|
||||||
['deleteattribute',['DeleteAttribute',['../classtinyxml2_1_1_x_m_l_element.html#aebd45aa7118964c30b32fe12e944628a',1,'tinyxml2::XMLElement']]],
|
['deleteattribute',['DeleteAttribute',['../classtinyxml2_1_1_x_m_l_element.html#aebd45aa7118964c30b32fe12e944628a',1,'tinyxml2::XMLElement']]],
|
||||||
['deletechild',['DeleteChild',['../classtinyxml2_1_1_x_m_l_node.html#a363b6edbd6ebd55f8387d2b89f2b0921',1,'tinyxml2::XMLNode']]],
|
['deletechild',['DeleteChild',['../classtinyxml2_1_1_x_m_l_node.html#a363b6edbd6ebd55f8387d2b89f2b0921',1,'tinyxml2::XMLNode']]],
|
||||||
['deletechildren',['DeleteChildren',['../classtinyxml2_1_1_x_m_l_node.html#a0360085cc54df5bff85d5c5da13afdce',1,'tinyxml2::XMLNode']]],
|
['deletechildren',['DeleteChildren',['../classtinyxml2_1_1_x_m_l_node.html#a0360085cc54df5bff85d5c5da13afdce',1,'tinyxml2::XMLNode']]],
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['error',['Error',['../classtinyxml2_1_1_x_m_l_document.html#a34e6318e182e40e3cc4f4ba5d59ed9ed',1,'tinyxml2::XMLDocument']]],
|
['error',['Error',['../classtinyxml2_1_1_x_m_l_document.html#a34e6318e182e40e3cc4f4ba5d59ed9ed',1,'tinyxml2::XMLDocument']]],
|
||||||
['errorid',['ErrorID',['../classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d',1,'tinyxml2::XMLDocument']]]
|
['errorid',['ErrorID',['../classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d',1,'tinyxml2::XMLDocument']]],
|
||||||
|
['errorlinenum',['ErrorLineNum',['../classtinyxml2_1_1_x_m_l_document.html#a57400f816dbe7799ece33615ead9ab76',1,'tinyxml2::XMLDocument']]],
|
||||||
|
['errorstr',['ErrorStr',['../classtinyxml2_1_1_x_m_l_document.html#ad75aa9d32c4e8b300655186808aa9abf',1,'tinyxml2::XMLDocument']]]
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['get_20information_20out_20of_20xml',['Get information out of XML',['../_example-3.html',1,'']]],
|
['get_20information_20out_20of_20xml',['Get information out of XML',['../_example_3.html',1,'']]],
|
||||||
['getdocument',['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()']]],
|
['getdocument',['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()']]],
|
||||||
['geterrorlinenum',['GetErrorLineNum',['../classtinyxml2_1_1_x_m_l_document.html#ad82d07e43e096e834dbdfd06312398c1',1,'tinyxml2::XMLDocument']]],
|
|
||||||
['geterrorstr1',['GetErrorStr1',['../classtinyxml2_1_1_x_m_l_document.html#a229494e30e5473237f3fa547eee4c43f',1,'tinyxml2::XMLDocument']]],
|
|
||||||
['geterrorstr2',['GetErrorStr2',['../classtinyxml2_1_1_x_m_l_document.html#a2d952f49c761bffd2903250680a8716b',1,'tinyxml2::XMLDocument']]],
|
|
||||||
['getlinenum',['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()']]],
|
['getlinenum',['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',['GetText',['../classtinyxml2_1_1_x_m_l_element.html#a6d5c8d115561ade4e4456b71d91b6f51',1,'tinyxml2::XMLElement']]],
|
['gettext',['GetText',['../classtinyxml2_1_1_x_m_l_element.html#a6d5c8d115561ade4e4456b71d91b6f51',1,'tinyxml2::XMLElement']]],
|
||||||
['getuserdata',['GetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a7f0687574afa03bc479dc44f29db0afe',1,'tinyxml2::XMLNode']]]
|
['getuserdata',['GetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a7f0687574afa03bc479dc44f29db0afe',1,'tinyxml2::XMLNode']]]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['load_20an_20xml_20file',['Load an XML File',['../_example-1.html',1,'']]],
|
['load_20an_20xml_20file',['Load an XML File',['../_example_1.html',1,'']]],
|
||||||
['lastchild',['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()']]],
|
['lastchild',['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',['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()']]],
|
['lastchildelement',['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()']]],
|
||||||
['loadfile',['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 *)']]]
|
['loadfile',['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 *)']]]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['parse_20an_20xml_20from_20char_20buffer',['Parse an XML from char buffer',['../_example-2.html',1,'']]],
|
['parse_20an_20xml_20from_20char_20buffer',['Parse an XML from char buffer',['../_example_2.html',1,'']]],
|
||||||
['parent',['Parent',['../classtinyxml2_1_1_x_m_l_node.html#ae0f62bc186c56c2e0483ebd52dbfbe34',1,'tinyxml2::XMLNode']]],
|
['parent',['Parent',['../classtinyxml2_1_1_x_m_l_node.html#ae0f62bc186c56c2e0483ebd52dbfbe34',1,'tinyxml2::XMLNode']]],
|
||||||
['parse',['Parse',['../classtinyxml2_1_1_x_m_l_document.html#a1819bd34f540a7304c105a6232d25a1f',1,'tinyxml2::XMLDocument']]],
|
['parse',['Parse',['../classtinyxml2_1_1_x_m_l_document.html#a1819bd34f540a7304c105a6232d25a1f',1,'tinyxml2::XMLDocument']]],
|
||||||
['previoussibling',['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()']]],
|
['previoussibling',['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()']]],
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['queryattribute',['QueryAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a042fc30504347b84a56cf863ad528a4f',1,'tinyxml2::XMLElement']]],
|
['queryattribute',['QueryAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a5b7df3bed2b8954eabf227fa204522eb',1,'tinyxml2::XMLElement']]],
|
||||||
['queryboolattribute',['QueryBoolAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872',1,'tinyxml2::XMLElement']]],
|
['queryboolattribute',['QueryBoolAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872',1,'tinyxml2::XMLElement']]],
|
||||||
['querybooltext',['QueryBoolText',['../classtinyxml2_1_1_x_m_l_element.html#a3fe5417d59eb8f5c4afe924b7d332736',1,'tinyxml2::XMLElement']]],
|
['querybooltext',['QueryBoolText',['../classtinyxml2_1_1_x_m_l_element.html#a3fe5417d59eb8f5c4afe924b7d332736',1,'tinyxml2::XMLElement']]],
|
||||||
['queryboolvalue',['QueryBoolValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a5f32e038954256f61c21ff20fd13a09c',1,'tinyxml2::XMLAttribute']]],
|
['queryboolvalue',['QueryBoolValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a5f32e038954256f61c21ff20fd13a09c',1,'tinyxml2::XMLAttribute']]],
|
||||||
@@ -16,6 +16,7 @@ var searchData=
|
|||||||
['queryintattribute',['QueryIntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1',1,'tinyxml2::XMLElement']]],
|
['queryintattribute',['QueryIntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1',1,'tinyxml2::XMLElement']]],
|
||||||
['queryinttext',['QueryIntText',['../classtinyxml2_1_1_x_m_l_element.html#a926357996bef633cb736e1a558419632',1,'tinyxml2::XMLElement']]],
|
['queryinttext',['QueryIntText',['../classtinyxml2_1_1_x_m_l_element.html#a926357996bef633cb736e1a558419632',1,'tinyxml2::XMLElement']]],
|
||||||
['queryintvalue',['QueryIntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a6d5176260db00ea301c01af8457cd993',1,'tinyxml2::XMLAttribute']]],
|
['queryintvalue',['QueryIntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a6d5176260db00ea301c01af8457cd993',1,'tinyxml2::XMLAttribute']]],
|
||||||
|
['querystringattribute',['QueryStringAttribute',['../classtinyxml2_1_1_x_m_l_element.html#adb8ae765f98d0c5037faec48deea78bc',1,'tinyxml2::XMLElement']]],
|
||||||
['queryunsignedattribute',['QueryUnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f',1,'tinyxml2::XMLElement']]],
|
['queryunsignedattribute',['QueryUnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f',1,'tinyxml2::XMLElement']]],
|
||||||
['queryunsignedtext',['QueryUnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a14d38aa4b5e18a46274a27425188a6a1',1,'tinyxml2::XMLElement']]],
|
['queryunsignedtext',['QueryUnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a14d38aa4b5e18a46274a27425188a6a1',1,'tinyxml2::XMLElement']]],
|
||||||
['queryunsignedvalue',['QueryUnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a48a7f3496f1415832e451bd8d09c9cb9',1,'tinyxml2::XMLAttribute']]]
|
['queryunsignedvalue',['QueryUnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a48a7f3496f1415832e451bd8d09c9cb9',1,'tinyxml2::XMLAttribute']]]
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['read_20attributes_20and_20text_20information_2e',['Read attributes and text information.',['../_example-4.html',1,'']]],
|
['read_20attributes_20and_20text_20information_2e',['Read attributes and text information.',['../_example_4.html',1,'']]],
|
||||||
['rootelement',['RootElement',['../classtinyxml2_1_1_x_m_l_document.html#ad2b70320d3c2a071c2f36928edff3e1c',1,'tinyxml2::XMLDocument']]]
|
['rootelement',['RootElement',['../classtinyxml2_1_1_x_m_l_document.html#ad2b70320d3c2a071c2f36928edff3e1c',1,'tinyxml2::XMLDocument']]]
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['deepclone',['DeepClone',['../classtinyxml2_1_1_x_m_l_node.html#a62c71b6bf8734b5424063b8d9a61c266',1,'tinyxml2::XMLNode']]],
|
['deepclone',['DeepClone',['../classtinyxml2_1_1_x_m_l_node.html#a62c71b6bf8734b5424063b8d9a61c266',1,'tinyxml2::XMLNode']]],
|
||||||
['deepcopy',['DeepCopy',['../classtinyxml2_1_1_x_m_l_document.html#aab792e90adc38cdc5446616573b8b01b',1,'tinyxml2::XMLDocument']]],
|
['deepcopy',['DeepCopy',['../classtinyxml2_1_1_x_m_l_document.html#af592ffc91514e25a39664521ac83db45',1,'tinyxml2::XMLDocument']]],
|
||||||
['deleteattribute',['DeleteAttribute',['../classtinyxml2_1_1_x_m_l_element.html#aebd45aa7118964c30b32fe12e944628a',1,'tinyxml2::XMLElement']]],
|
['deleteattribute',['DeleteAttribute',['../classtinyxml2_1_1_x_m_l_element.html#aebd45aa7118964c30b32fe12e944628a',1,'tinyxml2::XMLElement']]],
|
||||||
['deletechild',['DeleteChild',['../classtinyxml2_1_1_x_m_l_node.html#a363b6edbd6ebd55f8387d2b89f2b0921',1,'tinyxml2::XMLNode']]],
|
['deletechild',['DeleteChild',['../classtinyxml2_1_1_x_m_l_node.html#a363b6edbd6ebd55f8387d2b89f2b0921',1,'tinyxml2::XMLNode']]],
|
||||||
['deletechildren',['DeleteChildren',['../classtinyxml2_1_1_x_m_l_node.html#a0360085cc54df5bff85d5c5da13afdce',1,'tinyxml2::XMLNode']]],
|
['deletechildren',['DeleteChildren',['../classtinyxml2_1_1_x_m_l_node.html#a0360085cc54df5bff85d5c5da13afdce',1,'tinyxml2::XMLNode']]],
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['error',['Error',['../classtinyxml2_1_1_x_m_l_document.html#a34e6318e182e40e3cc4f4ba5d59ed9ed',1,'tinyxml2::XMLDocument']]],
|
['error',['Error',['../classtinyxml2_1_1_x_m_l_document.html#a34e6318e182e40e3cc4f4ba5d59ed9ed',1,'tinyxml2::XMLDocument']]],
|
||||||
['errorid',['ErrorID',['../classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d',1,'tinyxml2::XMLDocument']]]
|
['errorid',['ErrorID',['../classtinyxml2_1_1_x_m_l_document.html#afa3ed33b3107f920ec2b301f805ac17d',1,'tinyxml2::XMLDocument']]],
|
||||||
|
['errorlinenum',['ErrorLineNum',['../classtinyxml2_1_1_x_m_l_document.html#a57400f816dbe7799ece33615ead9ab76',1,'tinyxml2::XMLDocument']]],
|
||||||
|
['errorstr',['ErrorStr',['../classtinyxml2_1_1_x_m_l_document.html#ad75aa9d32c4e8b300655186808aa9abf',1,'tinyxml2::XMLDocument']]]
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['getdocument',['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()']]],
|
['getdocument',['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()']]],
|
||||||
['geterrorlinenum',['GetErrorLineNum',['../classtinyxml2_1_1_x_m_l_document.html#ad82d07e43e096e834dbdfd06312398c1',1,'tinyxml2::XMLDocument']]],
|
|
||||||
['geterrorstr1',['GetErrorStr1',['../classtinyxml2_1_1_x_m_l_document.html#a229494e30e5473237f3fa547eee4c43f',1,'tinyxml2::XMLDocument']]],
|
|
||||||
['geterrorstr2',['GetErrorStr2',['../classtinyxml2_1_1_x_m_l_document.html#a2d952f49c761bffd2903250680a8716b',1,'tinyxml2::XMLDocument']]],
|
|
||||||
['getlinenum',['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()']]],
|
['getlinenum',['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',['GetText',['../classtinyxml2_1_1_x_m_l_element.html#a6d5c8d115561ade4e4456b71d91b6f51',1,'tinyxml2::XMLElement']]],
|
['gettext',['GetText',['../classtinyxml2_1_1_x_m_l_element.html#a6d5c8d115561ade4e4456b71d91b6f51',1,'tinyxml2::XMLElement']]],
|
||||||
['getuserdata',['GetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a7f0687574afa03bc479dc44f29db0afe',1,'tinyxml2::XMLNode']]]
|
['getuserdata',['GetUserData',['../classtinyxml2_1_1_x_m_l_node.html#a7f0687574afa03bc479dc44f29db0afe',1,'tinyxml2::XMLNode']]]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['queryattribute',['QueryAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a042fc30504347b84a56cf863ad528a4f',1,'tinyxml2::XMLElement']]],
|
['queryattribute',['QueryAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a5b7df3bed2b8954eabf227fa204522eb',1,'tinyxml2::XMLElement']]],
|
||||||
['queryboolattribute',['QueryBoolAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872',1,'tinyxml2::XMLElement']]],
|
['queryboolattribute',['QueryBoolAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a14c1bb77c39689838be01838d86ca872',1,'tinyxml2::XMLElement']]],
|
||||||
['querybooltext',['QueryBoolText',['../classtinyxml2_1_1_x_m_l_element.html#a3fe5417d59eb8f5c4afe924b7d332736',1,'tinyxml2::XMLElement']]],
|
['querybooltext',['QueryBoolText',['../classtinyxml2_1_1_x_m_l_element.html#a3fe5417d59eb8f5c4afe924b7d332736',1,'tinyxml2::XMLElement']]],
|
||||||
['queryboolvalue',['QueryBoolValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a5f32e038954256f61c21ff20fd13a09c',1,'tinyxml2::XMLAttribute']]],
|
['queryboolvalue',['QueryBoolValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a5f32e038954256f61c21ff20fd13a09c',1,'tinyxml2::XMLAttribute']]],
|
||||||
@@ -16,6 +16,7 @@ var searchData=
|
|||||||
['queryintattribute',['QueryIntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1',1,'tinyxml2::XMLElement']]],
|
['queryintattribute',['QueryIntAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a8a78bc1187c1c45ad89f2690eab567b1',1,'tinyxml2::XMLElement']]],
|
||||||
['queryinttext',['QueryIntText',['../classtinyxml2_1_1_x_m_l_element.html#a926357996bef633cb736e1a558419632',1,'tinyxml2::XMLElement']]],
|
['queryinttext',['QueryIntText',['../classtinyxml2_1_1_x_m_l_element.html#a926357996bef633cb736e1a558419632',1,'tinyxml2::XMLElement']]],
|
||||||
['queryintvalue',['QueryIntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a6d5176260db00ea301c01af8457cd993',1,'tinyxml2::XMLAttribute']]],
|
['queryintvalue',['QueryIntValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a6d5176260db00ea301c01af8457cd993',1,'tinyxml2::XMLAttribute']]],
|
||||||
|
['querystringattribute',['QueryStringAttribute',['../classtinyxml2_1_1_x_m_l_element.html#adb8ae765f98d0c5037faec48deea78bc',1,'tinyxml2::XMLElement']]],
|
||||||
['queryunsignedattribute',['QueryUnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f',1,'tinyxml2::XMLElement']]],
|
['queryunsignedattribute',['QueryUnsignedAttribute',['../classtinyxml2_1_1_x_m_l_element.html#a26fc84cbfba6769dafcfbf256c05e22f',1,'tinyxml2::XMLElement']]],
|
||||||
['queryunsignedtext',['QueryUnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a14d38aa4b5e18a46274a27425188a6a1',1,'tinyxml2::XMLElement']]],
|
['queryunsignedtext',['QueryUnsignedText',['../classtinyxml2_1_1_x_m_l_element.html#a14d38aa4b5e18a46274a27425188a6a1',1,'tinyxml2::XMLElement']]],
|
||||||
['queryunsignedvalue',['QueryUnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a48a7f3496f1415832e451bd8d09c9cb9',1,'tinyxml2::XMLAttribute']]]
|
['queryunsignedvalue',['QueryUnsignedValue',['../classtinyxml2_1_1_x_m_l_attribute.html#a48a7f3496f1415832e451bd8d09c9cb9',1,'tinyxml2::XMLAttribute']]]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['get_20information_20out_20of_20xml',['Get information out of XML',['../_example-3.html',1,'']]]
|
['get_20information_20out_20of_20xml',['Get information out of XML',['../_example_3.html',1,'']]]
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['load_20an_20xml_20file',['Load an XML File',['../_example-1.html',1,'']]]
|
['load_20an_20xml_20file',['Load an XML File',['../_example_1.html',1,'']]]
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['parse_20an_20xml_20from_20char_20buffer',['Parse an XML from char buffer',['../_example-2.html',1,'']]]
|
['parse_20an_20xml_20from_20char_20buffer',['Parse an XML from char buffer',['../_example_2.html',1,'']]]
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
var searchData=
|
var searchData=
|
||||||
[
|
[
|
||||||
['read_20attributes_20and_20text_20information_2e',['Read attributes and text information.',['../_example-4.html',1,'']]]
|
['read_20attributes_20and_20text_20information_2e',['Read attributes and text information.',['../_example_4.html',1,'']]]
|
||||||
];
|
];
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
2
dox
2
dox
@@ -38,7 +38,7 @@ PROJECT_NAME = "TinyXML-2"
|
|||||||
# could be handy for archiving the generated documentation or if some version
|
# could be handy for archiving the generated documentation or if some version
|
||||||
# control system is used.
|
# control system is used.
|
||||||
|
|
||||||
PROJECT_NUMBER = 6.0.0
|
PROJECT_NUMBER = 8.0.0
|
||||||
|
|
||||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
# 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
|
# for a project that appears at the top of each page and should give viewer a
|
||||||
|
|||||||
95
premake5.lua
Normal file
95
premake5.lua
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
--
|
||||||
|
-- Requires: Premake 5 (https://premake.github.io/)
|
||||||
|
-- Usage: premake5 --file=premake5.lua [project / makefile format, refer to premake5 --help] --target=[target from below]
|
||||||
|
--
|
||||||
|
|
||||||
|
-- target option
|
||||||
|
tbl_target_values =
|
||||||
|
{
|
||||||
|
{ "windows", "VS2015 projects targeting Windows 32/64 bits" },
|
||||||
|
{ "macosx", "Xcode4 projects targeting OS X" },
|
||||||
|
}
|
||||||
|
|
||||||
|
newoption
|
||||||
|
{
|
||||||
|
trigger = "target",
|
||||||
|
description = "Build environment and target to generate projects for.",
|
||||||
|
allowed = tbl_target_values
|
||||||
|
}
|
||||||
|
|
||||||
|
-- validation
|
||||||
|
target_env = _OPTIONS["target"]
|
||||||
|
if not target_env then
|
||||||
|
print "Command-line option --target is required with one of the following values:"
|
||||||
|
for _, v in ipairs(tbl_target_values) do
|
||||||
|
print(v[1])
|
||||||
|
end
|
||||||
|
os.exit(1)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- solution
|
||||||
|
workspace "tinyxml2"
|
||||||
|
|
||||||
|
tbl_platforms = {}
|
||||||
|
if target_env == "windows" then
|
||||||
|
tbl_platforms = {
|
||||||
|
"x86",
|
||||||
|
"x64",
|
||||||
|
}
|
||||||
|
elseif target_env == "macosx" then
|
||||||
|
tbl_platforms = {
|
||||||
|
"Universal64"
|
||||||
|
}
|
||||||
|
end
|
||||||
|
platforms(tbl_platforms)
|
||||||
|
|
||||||
|
tbl_configurations = {
|
||||||
|
"Debug",
|
||||||
|
"Release",
|
||||||
|
}
|
||||||
|
configurations(tbl_configurations)
|
||||||
|
|
||||||
|
sln_location = ".projects/"..target_env
|
||||||
|
location(sln_location)
|
||||||
|
|
||||||
|
bin_location = ".artifacts/"..target_env
|
||||||
|
obj_location = ".intermediate/"..target_env
|
||||||
|
|
||||||
|
for _, p in ipairs(tbl_platforms) do
|
||||||
|
for _, c in ipairs(tbl_configurations) do
|
||||||
|
local pc = p.."-"..c
|
||||||
|
filter{ "platforms:"..p, c }
|
||||||
|
targetdir(bin_location.."/"..pc)
|
||||||
|
libdirs(bin_location.."/"..pc)
|
||||||
|
objdir(obj_location.."/"..pc)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
filter("not Release")
|
||||||
|
optimize "Debug"
|
||||||
|
symbols "On"
|
||||||
|
filter{ "Release" }
|
||||||
|
optimize "Full"
|
||||||
|
filter{}
|
||||||
|
|
||||||
|
-- projects
|
||||||
|
project "tinyxml2"
|
||||||
|
|
||||||
|
kind "staticlib"
|
||||||
|
|
||||||
|
files {
|
||||||
|
"tinyxml2.h",
|
||||||
|
"tinyxml2.cpp"
|
||||||
|
}
|
||||||
|
|
||||||
|
project "xmltest"
|
||||||
|
|
||||||
|
kind "consoleapp"
|
||||||
|
|
||||||
|
links {
|
||||||
|
"tinyxml2"
|
||||||
|
}
|
||||||
|
|
||||||
|
files {
|
||||||
|
"xmltest.cpp"
|
||||||
|
}
|
||||||
64
readme.md
64
readme.md
@@ -54,49 +54,36 @@ What it doesn't do.
|
|||||||
|
|
||||||
TinyXML-2 doesn't parse or use DTDs (Document Type Definitions) or XSLs
|
TinyXML-2 doesn't parse or use DTDs (Document Type Definitions) or XSLs
|
||||||
(eXtensible Stylesheet Language.) There are other parsers out there
|
(eXtensible Stylesheet Language.) There are other parsers out there
|
||||||
that are much more fully featured. But they are also much bigger,
|
that are much more fully featured. But they are generally bigger and
|
||||||
take longer to set up in your project, have a higher learning curve,
|
more difficult to use. If you are working with
|
||||||
and often have a more restrictive license. If you are working with
|
|
||||||
browsers or have more complete XML needs, TinyXML-2 is not the parser for you.
|
browsers or have more complete XML needs, TinyXML-2 is not the parser for you.
|
||||||
|
|
||||||
TinyXML-1 vs. TinyXML-2
|
TinyXML-1 vs. TinyXML-2
|
||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
TinyXML-2 is now the focus of all development, well tested, and your
|
TinyXML-2 is now the focus of all development, well tested, and your
|
||||||
best choice unless you have a requirement to maintain TinyXML-1 code.
|
best choice between the two APIs. At this point, unless you are maintaining
|
||||||
|
legacy code, you should choose TinyXML-2.
|
||||||
|
|
||||||
TinyXML-2 uses a similar API to TinyXML-1 and the same
|
TinyXML-2 uses a similar API to TinyXML-1 and the same
|
||||||
rich test cases. But the implementation of the parser is completely re-written
|
rich test cases. But the implementation of the parser is completely re-written
|
||||||
to make it more appropriate for use in a game. It uses less memory, is faster,
|
to make it more appropriate for use in a game. It uses less memory, is faster,
|
||||||
and uses far fewer memory allocations.
|
and uses far fewer memory allocations.
|
||||||
|
|
||||||
TinyXML-2 has no requirement for STL, but has also dropped all STL support. All
|
TinyXML-2 has no requirement or support for STL. By returning `const char*`
|
||||||
strings are query and set as 'const char*'. This allows the use of internal
|
TinyXML-2 can be much more efficient with memory usage. (TinyXML-1 did support
|
||||||
allocators, and keeps the code much simpler.
|
and use STL, but consumed much more memory for the DOM representation.)
|
||||||
|
|
||||||
Both parsers:
|
|
||||||
|
|
||||||
1. Simple to use with similar APIs.
|
|
||||||
2. DOM based parser.
|
|
||||||
3. UTF-8 Unicode support. http://en.wikipedia.org/wiki/UTF-8
|
|
||||||
|
|
||||||
Advantages of TinyXML-2
|
|
||||||
|
|
||||||
1. The focus of all future dev.
|
|
||||||
2. Many fewer memory allocation (1/10th to 1/100th), uses less memory
|
|
||||||
(about 40% of TinyXML-1), and faster.
|
|
||||||
3. No STL requirement.
|
|
||||||
4. More modern C++, including a proper namespace.
|
|
||||||
5. Proper and useful handling of whitespace
|
|
||||||
|
|
||||||
Advantages of TinyXML-1
|
|
||||||
|
|
||||||
1. Support for some C++ STL conventions: streams and strings
|
|
||||||
2. Very mature and well debugged code base.
|
|
||||||
|
|
||||||
Features
|
Features
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
### Code Page
|
||||||
|
|
||||||
|
TinyXML-2 uses UTF-8 exclusively when interpreting XML. All XML is assumed to
|
||||||
|
be UTF-8.
|
||||||
|
|
||||||
|
Filenames for loading / saving are passed unchanged to the underlying OS.
|
||||||
|
|
||||||
### Memory Model
|
### Memory Model
|
||||||
|
|
||||||
An XMLDocument is a C++ object like any other, that can be on the stack, or
|
An XMLDocument is a C++ object like any other, that can be on the stack, or
|
||||||
@@ -166,7 +153,7 @@ cannot be parsed correctly. In addition, all nodes (elements, declarations,
|
|||||||
text, comments etc.) and attributes have a line number recorded as they are parsed.
|
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
|
This allows an application that performs additional validation of the parsed
|
||||||
XML document (e.g. application-implemented DTD validation) to report
|
XML document (e.g. application-implemented DTD validation) to report
|
||||||
line number information in it's errors.
|
line number information for error messages.
|
||||||
|
|
||||||
### Entities
|
### Entities
|
||||||
|
|
||||||
@@ -275,10 +262,23 @@ There are 2 files in TinyXML-2:
|
|||||||
And additionally a test file:
|
And additionally a test file:
|
||||||
* xmltest.cpp
|
* xmltest.cpp
|
||||||
|
|
||||||
Simply compile and run. There is a visual studio 2015 project included, a simple Makefile,
|
Simply compile and run. There is a visual studio 2019 project included, a simple Makefile,
|
||||||
an Xcode project, a Code::Blocks project, and a cmake CMakeLists.txt included to help you.
|
an Xcode project, a Code::Blocks project, and a cmake CMakeLists.txt included to help you.
|
||||||
The top of tinyxml.h even has a simple g++ command line if you are are *nix and don't want
|
The top of tinyxml.h even has a simple g++ command line if you are using Unix/Linux/BSD and
|
||||||
to use a build system.
|
don't want to use a build system.
|
||||||
|
|
||||||
|
Building TinyXML-2 - Using vcpkg
|
||||||
|
--------------------------------
|
||||||
|
|
||||||
|
You can download and install TinyXML-2 using the [vcpkg](https://github.com/Microsoft/vcpkg) dependency manager:
|
||||||
|
|
||||||
|
git clone https://github.com/Microsoft/vcpkg.git
|
||||||
|
cd vcpkg
|
||||||
|
./bootstrap-vcpkg.sh
|
||||||
|
./vcpkg integrate install
|
||||||
|
./vcpkg install tinyxml2
|
||||||
|
|
||||||
|
The TinyXML-2 port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.
|
||||||
|
|
||||||
Versioning
|
Versioning
|
||||||
----------
|
----------
|
||||||
@@ -291,7 +291,7 @@ common.
|
|||||||
Documentation
|
Documentation
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
The documentation is build with Doxygen, using the 'dox'
|
The documentation is built with Doxygen, using the 'dox'
|
||||||
configuration file.
|
configuration file.
|
||||||
|
|
||||||
License
|
License
|
||||||
|
|||||||
1
resources/xmltest-4636783552757760.xml
Normal file
1
resources/xmltest-4636783552757760.xml
Normal file
File diff suppressed because one or more lines are too long
1
resources/xmltest-5330.xml
Normal file
1
resources/xmltest-5330.xml
Normal file
File diff suppressed because one or more lines are too long
1
resources/xmltest-5662204197076992.xml
Normal file
1
resources/xmltest-5662204197076992.xml
Normal file
File diff suppressed because one or more lines are too long
1
resources/xmltest-5720541257269248.xml
Normal file
1
resources/xmltest-5720541257269248.xml
Normal file
File diff suppressed because one or more lines are too long
@@ -67,6 +67,28 @@ def engineRule( line ):
|
|||||||
|
|
||||||
fileProcess( "tinyxml2.h", engineRule )
|
fileProcess( "tinyxml2.h", engineRule )
|
||||||
|
|
||||||
|
def macroVersionRule( line ):
|
||||||
|
|
||||||
|
matchMajor = "#define TINYXML2_MAJOR_VERSION"
|
||||||
|
matchMinor = "#define TINYXML2_MINOR_VERSION"
|
||||||
|
matchBuild = "#define TINYXML2_PATCH_VERSION"
|
||||||
|
|
||||||
|
if line[0:len(matchMajor)] == matchMajor:
|
||||||
|
print( "1)macro Major found" )
|
||||||
|
return matchMajor + " " + major + "\n"
|
||||||
|
|
||||||
|
elif line[0:len(matchMinor)] == matchMinor:
|
||||||
|
print( "2)macro Minor found" )
|
||||||
|
return matchMinor + " " + minor + "\n"
|
||||||
|
|
||||||
|
elif line[0:len(matchBuild)] == matchBuild:
|
||||||
|
print( "3)macro Build found" )
|
||||||
|
return matchBuild + " " + build + "\n"
|
||||||
|
|
||||||
|
else:
|
||||||
|
return line;
|
||||||
|
|
||||||
|
fileProcess("tinyxml2.h", macroVersionRule)
|
||||||
|
|
||||||
#### Write the dox ####
|
#### Write the dox ####
|
||||||
|
|
||||||
@@ -113,7 +135,7 @@ def cmakeRule2( line ):
|
|||||||
fileProcess( "CMakeLists.txt", cmakeRule2 )
|
fileProcess( "CMakeLists.txt", cmakeRule2 )
|
||||||
|
|
||||||
print( "Release note:" )
|
print( "Release note:" )
|
||||||
print( '1. Build. g++ -Wall -DDEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe' )
|
print( '1. Build. g++ -Wall -DTINYXML2_DEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe' )
|
||||||
print( '2. Commit. git commit -am"setting the version to ' + versionStr + '"' )
|
print( '2. Commit. git commit -am"setting the version to ' + versionStr + '"' )
|
||||||
print( '3. Tag. git tag ' + versionStr )
|
print( '3. Tag. git tag ' + versionStr )
|
||||||
print( ' OR git tag -a ' + versionStr + ' -m [tag message]' )
|
print( ' OR git tag -a ' + versionStr + ' -m [tag message]' )
|
||||||
|
|||||||
275
tinyxml2.cpp
275
tinyxml2.cpp
@@ -45,14 +45,14 @@ distribution.
|
|||||||
{
|
{
|
||||||
va_list va;
|
va_list va;
|
||||||
va_start( va, format );
|
va_start( va, format );
|
||||||
int result = vsnprintf_s( buffer, size, _TRUNCATE, format, va );
|
const int result = vsnprintf_s( buffer, size, _TRUNCATE, format, va );
|
||||||
va_end( va );
|
va_end( va );
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int TIXML_VSNPRINTF( char* buffer, size_t size, const char* format, va_list va )
|
static inline int TIXML_VSNPRINTF( char* buffer, size_t size, const char* format, va_list va )
|
||||||
{
|
{
|
||||||
int result = vsnprintf_s( buffer, size, _TRUNCATE, format, va );
|
const int result = vsnprintf_s( buffer, size, _TRUNCATE, format, va );
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,9 +101,9 @@ distribution.
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
static const char LINE_FEED = (char)0x0a; // all line endings are normalized to LF
|
static const char LINE_FEED = static_cast<char>(0x0a); // all line endings are normalized to LF
|
||||||
static const char LF = LINE_FEED;
|
static const char LF = LINE_FEED;
|
||||||
static const char CARRIAGE_RETURN = (char)0x0d; // CR gets filtered out
|
static const char CARRIAGE_RETURN = static_cast<char>(0x0d); // CR gets filtered out
|
||||||
static const char CR = CARRIAGE_RETURN;
|
static const char CR = CARRIAGE_RETURN;
|
||||||
static const char SINGLE_QUOTE = '\'';
|
static const char SINGLE_QUOTE = '\'';
|
||||||
static const char DOUBLE_QUOTE = '\"';
|
static const char DOUBLE_QUOTE = '\"';
|
||||||
@@ -197,7 +197,7 @@ char* StrPair::ParseText( char* p, const char* endTag, int strFlags, int* curLin
|
|||||||
TIXMLASSERT(curLineNumPtr);
|
TIXMLASSERT(curLineNumPtr);
|
||||||
|
|
||||||
char* start = p;
|
char* start = p;
|
||||||
char endChar = *endTag;
|
const char endChar = *endTag;
|
||||||
size_t length = strlen( endTag );
|
size_t length = strlen( endTag );
|
||||||
|
|
||||||
// Inner loop of text parsing.
|
// Inner loop of text parsing.
|
||||||
@@ -310,7 +310,7 @@ const char* StrPair::GetStr()
|
|||||||
const int buflen = 10;
|
const int buflen = 10;
|
||||||
char buf[buflen] = { 0 };
|
char buf[buflen] = { 0 };
|
||||||
int len = 0;
|
int len = 0;
|
||||||
char* adjusted = const_cast<char*>( XMLUtil::GetCharacterRef( p, buf, &len ) );
|
const char* adjusted = const_cast<char*>( XMLUtil::GetCharacterRef( p, buf, &len ) );
|
||||||
if ( adjusted == 0 ) {
|
if ( adjusted == 0 ) {
|
||||||
*q = *p;
|
*q = *p;
|
||||||
++p;
|
++p;
|
||||||
@@ -430,22 +430,22 @@ void XMLUtil::ConvertUTF32ToUTF8( unsigned long input, char* output, int* length
|
|||||||
switch (*length) {
|
switch (*length) {
|
||||||
case 4:
|
case 4:
|
||||||
--output;
|
--output;
|
||||||
*output = (char)((input | BYTE_MARK) & BYTE_MASK);
|
*output = static_cast<char>((input | BYTE_MARK) & BYTE_MASK);
|
||||||
input >>= 6;
|
input >>= 6;
|
||||||
//fall through
|
//fall through
|
||||||
case 3:
|
case 3:
|
||||||
--output;
|
--output;
|
||||||
*output = (char)((input | BYTE_MARK) & BYTE_MASK);
|
*output = static_cast<char>((input | BYTE_MARK) & BYTE_MASK);
|
||||||
input >>= 6;
|
input >>= 6;
|
||||||
//fall through
|
//fall through
|
||||||
case 2:
|
case 2:
|
||||||
--output;
|
--output;
|
||||||
*output = (char)((input | BYTE_MARK) & BYTE_MASK);
|
*output = static_cast<char>((input | BYTE_MARK) & BYTE_MASK);
|
||||||
input >>= 6;
|
input >>= 6;
|
||||||
//fall through
|
//fall through
|
||||||
case 1:
|
case 1:
|
||||||
--output;
|
--output;
|
||||||
*output = (char)(input | FIRST_BYTE_MARK[*length]);
|
*output = static_cast<char>(input | FIRST_BYTE_MARK[*length]);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
TIXMLASSERT( false );
|
TIXMLASSERT( false );
|
||||||
@@ -585,9 +585,14 @@ void XMLUtil::ToStr( double v, char* buffer, int bufferSize )
|
|||||||
void XMLUtil::ToStr( int64_t v, char* buffer, int bufferSize )
|
void XMLUtil::ToStr( int64_t v, char* buffer, int bufferSize )
|
||||||
{
|
{
|
||||||
// horrible syntax trick to make the compiler happy about %lld
|
// horrible syntax trick to make the compiler happy about %lld
|
||||||
TIXML_SNPRINTF(buffer, bufferSize, "%lld", (long long)v);
|
TIXML_SNPRINTF(buffer, bufferSize, "%lld", static_cast<long long>(v));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void XMLUtil::ToStr( uint64_t v, char* buffer, int bufferSize )
|
||||||
|
{
|
||||||
|
// horrible syntax trick to make the compiler happy about %llu
|
||||||
|
TIXML_SNPRINTF(buffer, bufferSize, "%llu", (long long)v);
|
||||||
|
}
|
||||||
|
|
||||||
bool XMLUtil::ToInt( const char* str, int* value )
|
bool XMLUtil::ToInt( const char* str, int* value )
|
||||||
{
|
{
|
||||||
@@ -612,14 +617,21 @@ bool XMLUtil::ToBool( const char* str, bool* value )
|
|||||||
*value = (ival==0) ? false : true;
|
*value = (ival==0) ? false : true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if ( StringEqual( str, "true" ) ) {
|
static const char* TRUE_VALS[] = { "true", "True", "TRUE", 0 };
|
||||||
|
static const char* FALSE_VALS[] = { "false", "False", "FALSE", 0 };
|
||||||
|
|
||||||
|
for (int i = 0; TRUE_VALS[i]; ++i) {
|
||||||
|
if (StringEqual(str, TRUE_VALS[i])) {
|
||||||
*value = true;
|
*value = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if ( StringEqual( str, "false" ) ) {
|
}
|
||||||
|
for (int i = 0; FALSE_VALS[i]; ++i) {
|
||||||
|
if (StringEqual(str, FALSE_VALS[i])) {
|
||||||
*value = false;
|
*value = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -646,7 +658,17 @@ bool XMLUtil::ToInt64(const char* str, int64_t* value)
|
|||||||
{
|
{
|
||||||
long long v = 0; // horrible syntax trick to make the compiler happy about %lld
|
long long v = 0; // horrible syntax trick to make the compiler happy about %lld
|
||||||
if (TIXML_SSCANF(str, "%lld", &v) == 1) {
|
if (TIXML_SSCANF(str, "%lld", &v) == 1) {
|
||||||
*value = (int64_t)v;
|
*value = static_cast<int64_t>(v);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool XMLUtil::ToUnsigned64(const char* str, uint64_t* value) {
|
||||||
|
unsigned long long v = 0; // horrible syntax trick to make the compiler happy about %llu
|
||||||
|
if(TIXML_SSCANF(str, "%llu", &v) == 1) {
|
||||||
|
*value = (uint64_t)v;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@@ -1004,6 +1026,10 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr )
|
|||||||
// 'endTag' is the end tag for this node, it is returned by a call to a child.
|
// 'endTag' is the end tag for this node, it is returned by a call to a child.
|
||||||
// 'parentEnd' is the end tag for the parent, which is filled in and returned.
|
// 'parentEnd' is the end tag for the parent, which is filled in and returned.
|
||||||
|
|
||||||
|
XMLDocument::DepthTracker tracker(_document);
|
||||||
|
if (_document->Error())
|
||||||
|
return 0;
|
||||||
|
|
||||||
while( p && *p ) {
|
while( p && *p ) {
|
||||||
XMLNode* node = 0;
|
XMLNode* node = 0;
|
||||||
|
|
||||||
@@ -1013,7 +1039,7 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
int initialLineNum = node->_parseLineNum;
|
const int initialLineNum = node->_parseLineNum;
|
||||||
|
|
||||||
StrPair endTag;
|
StrPair endTag;
|
||||||
p = node->ParseDeep( p, &endTag, curLineNumPtr );
|
p = node->ParseDeep( p, &endTag, curLineNumPtr );
|
||||||
@@ -1025,18 +1051,28 @@ char* XMLNode::ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
XMLDeclaration* decl = node->ToDeclaration();
|
const XMLDeclaration* const decl = node->ToDeclaration();
|
||||||
if ( decl ) {
|
if ( decl ) {
|
||||||
// Declarations are only allowed at document level
|
// Declarations are only allowed at document level
|
||||||
bool wellLocated = ( ToDocument() != 0 );
|
//
|
||||||
if ( wellLocated ) {
|
|
||||||
// Multiple declarations are allowed but all declarations
|
// Multiple declarations are allowed but all declarations
|
||||||
// must occur before anything else
|
// must occur before anything else.
|
||||||
for ( const XMLNode* existingNode = _document->FirstChild(); existingNode; existingNode = existingNode->NextSibling() ) {
|
//
|
||||||
if ( !existingNode->ToDeclaration() ) {
|
// Optimized due to a security test case. If the first node is
|
||||||
wellLocated = false;
|
// a declaration, and the last node is a declaration, then only
|
||||||
break;
|
// declarations have so far been added.
|
||||||
|
bool wellLocated = false;
|
||||||
|
|
||||||
|
if (ToDocument()) {
|
||||||
|
if (FirstChild()) {
|
||||||
|
wellLocated =
|
||||||
|
FirstChild() &&
|
||||||
|
FirstChild()->ToDeclaration() &&
|
||||||
|
LastChild() &&
|
||||||
|
LastChild()->ToDeclaration();
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
wellLocated = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( !wellLocated ) {
|
if ( !wellLocated ) {
|
||||||
@@ -1359,7 +1395,7 @@ char* XMLAttribute::ParseDeep( char* p, bool processEntities, int* curLineNumPtr
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
char endTag[2] = { *p, 0 };
|
const char endTag[2] = { *p, 0 };
|
||||||
++p; // move past opening quote
|
++p; // move past opening quote
|
||||||
|
|
||||||
p = _value.ParseText( p, endTag, processEntities ? StrPair::ATTRIBUTE_VALUE : StrPair::ATTRIBUTE_VALUE_LEAVE_ENTITIES, curLineNumPtr );
|
p = _value.ParseText( p, endTag, processEntities ? StrPair::ATTRIBUTE_VALUE : StrPair::ATTRIBUTE_VALUE_LEAVE_ENTITIES, curLineNumPtr );
|
||||||
@@ -1400,6 +1436,15 @@ XMLError XMLAttribute::QueryInt64Value(int64_t* value) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
XMLError XMLAttribute::QueryUnsigned64Value(uint64_t* value) const
|
||||||
|
{
|
||||||
|
if(XMLUtil::ToUnsigned64(Value(), value)) {
|
||||||
|
return XML_SUCCESS;
|
||||||
|
}
|
||||||
|
return XML_WRONG_ATTRIBUTE_TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
XMLError XMLAttribute::QueryBoolValue( bool* value ) const
|
XMLError XMLAttribute::QueryBoolValue( bool* value ) const
|
||||||
{
|
{
|
||||||
if ( XMLUtil::ToBool( Value(), value )) {
|
if ( XMLUtil::ToBool( Value(), value )) {
|
||||||
@@ -1456,6 +1501,12 @@ void XMLAttribute::SetAttribute(int64_t v)
|
|||||||
_value.SetStr(buf);
|
_value.SetStr(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void XMLAttribute::SetAttribute(uint64_t v)
|
||||||
|
{
|
||||||
|
char buf[BUF_SIZE];
|
||||||
|
XMLUtil::ToStr(v, buf, BUF_SIZE);
|
||||||
|
_value.SetStr(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void XMLAttribute::SetAttribute( bool v )
|
void XMLAttribute::SetAttribute( bool v )
|
||||||
@@ -1542,6 +1593,13 @@ int64_t XMLElement::Int64Attribute(const char* name, int64_t defaultValue) const
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint64_t XMLElement::Unsigned64Attribute(const char* name, uint64_t defaultValue) const
|
||||||
|
{
|
||||||
|
uint64_t i = defaultValue;
|
||||||
|
QueryUnsigned64Attribute(name, &i);
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
bool XMLElement::BoolAttribute(const char* name, bool defaultValue) const
|
bool XMLElement::BoolAttribute(const char* name, bool defaultValue) const
|
||||||
{
|
{
|
||||||
bool b = defaultValue;
|
bool b = defaultValue;
|
||||||
@@ -1606,6 +1664,12 @@ void XMLElement::SetText(int64_t v)
|
|||||||
SetText(buf);
|
SetText(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void XMLElement::SetText(uint64_t v) {
|
||||||
|
char buf[BUF_SIZE];
|
||||||
|
XMLUtil::ToStr(v, buf, BUF_SIZE);
|
||||||
|
SetText(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void XMLElement::SetText( bool v )
|
void XMLElement::SetText( bool v )
|
||||||
{
|
{
|
||||||
@@ -1670,6 +1734,19 @@ XMLError XMLElement::QueryInt64Text(int64_t* ival) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
XMLError XMLElement::QueryUnsigned64Text(uint64_t* ival) const
|
||||||
|
{
|
||||||
|
if(FirstChild() && FirstChild()->ToText()) {
|
||||||
|
const char* t = FirstChild()->Value();
|
||||||
|
if(XMLUtil::ToUnsigned64(t, ival)) {
|
||||||
|
return XML_SUCCESS;
|
||||||
|
}
|
||||||
|
return XML_CAN_NOT_CONVERT_TEXT;
|
||||||
|
}
|
||||||
|
return XML_NO_TEXT_NODE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
XMLError XMLElement::QueryBoolText( bool* bval ) const
|
XMLError XMLElement::QueryBoolText( bool* bval ) const
|
||||||
{
|
{
|
||||||
if ( FirstChild() && FirstChild()->ToText() ) {
|
if ( FirstChild() && FirstChild()->ToText() ) {
|
||||||
@@ -1729,6 +1806,13 @@ int64_t XMLElement::Int64Text(int64_t defaultValue) const
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint64_t XMLElement::Unsigned64Text(uint64_t defaultValue) const
|
||||||
|
{
|
||||||
|
uint64_t i = defaultValue;
|
||||||
|
QueryUnsigned64Text(&i);
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
bool XMLElement::BoolText(bool defaultValue) const
|
bool XMLElement::BoolText(bool defaultValue) const
|
||||||
{
|
{
|
||||||
bool b = defaultValue;
|
bool b = defaultValue;
|
||||||
@@ -1816,7 +1900,7 @@ char* XMLElement::ParseAttributes( char* p, int* curLineNumPtr )
|
|||||||
TIXMLASSERT( attrib );
|
TIXMLASSERT( attrib );
|
||||||
attrib->_parseLineNum = _document->_parseCurLineNum;
|
attrib->_parseLineNum = _document->_parseCurLineNum;
|
||||||
|
|
||||||
int attrLineNum = attrib->_parseLineNum;
|
const int attrLineNum = attrib->_parseLineNum;
|
||||||
|
|
||||||
p = attrib->ParseDeep( p, _document->ProcessEntities(), curLineNumPtr );
|
p = attrib->ParseDeep( p, _document->ProcessEntities(), curLineNumPtr );
|
||||||
if ( !p || Attribute( attrib->Name() ) ) {
|
if ( !p || Attribute( attrib->Name() ) ) {
|
||||||
@@ -1877,6 +1961,39 @@ XMLAttribute* XMLElement::CreateAttribute()
|
|||||||
return attrib;
|
return attrib;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
XMLElement* XMLElement::InsertNewChildElement(const char* name)
|
||||||
|
{
|
||||||
|
XMLElement* node = _document->NewElement(name);
|
||||||
|
return InsertEndChild(node) ? node : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLComment* XMLElement::InsertNewComment(const char* comment)
|
||||||
|
{
|
||||||
|
XMLComment* node = _document->NewComment(comment);
|
||||||
|
return InsertEndChild(node) ? node : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLText* XMLElement::InsertNewText(const char* text)
|
||||||
|
{
|
||||||
|
XMLText* node = _document->NewText(text);
|
||||||
|
return InsertEndChild(node) ? node : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLDeclaration* XMLElement::InsertNewDeclaration(const char* text)
|
||||||
|
{
|
||||||
|
XMLDeclaration* node = _document->NewDeclaration(text);
|
||||||
|
return InsertEndChild(node) ? node : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLUnknown* XMLElement::InsertNewUnknown(const char* text)
|
||||||
|
{
|
||||||
|
XMLUnknown* node = _document->NewUnknown(text);
|
||||||
|
return InsertEndChild(node) ? node : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// <ele></ele>
|
// <ele></ele>
|
||||||
// <ele>foo<b>bar</b></ele>
|
// <ele>foo<b>bar</b></ele>
|
||||||
@@ -1973,10 +2090,8 @@ const char* XMLDocument::_errorNames[XML_ERROR_COUNT] = {
|
|||||||
"XML_ERROR_FILE_NOT_FOUND",
|
"XML_ERROR_FILE_NOT_FOUND",
|
||||||
"XML_ERROR_FILE_COULD_NOT_BE_OPENED",
|
"XML_ERROR_FILE_COULD_NOT_BE_OPENED",
|
||||||
"XML_ERROR_FILE_READ_ERROR",
|
"XML_ERROR_FILE_READ_ERROR",
|
||||||
"UNUSED_XML_ERROR_ELEMENT_MISMATCH",
|
|
||||||
"XML_ERROR_PARSING_ELEMENT",
|
"XML_ERROR_PARSING_ELEMENT",
|
||||||
"XML_ERROR_PARSING_ATTRIBUTE",
|
"XML_ERROR_PARSING_ATTRIBUTE",
|
||||||
"UNUSED_XML_ERROR_IDENTIFYING_TAG",
|
|
||||||
"XML_ERROR_PARSING_TEXT",
|
"XML_ERROR_PARSING_TEXT",
|
||||||
"XML_ERROR_PARSING_CDATA",
|
"XML_ERROR_PARSING_CDATA",
|
||||||
"XML_ERROR_PARSING_COMMENT",
|
"XML_ERROR_PARSING_COMMENT",
|
||||||
@@ -1986,7 +2101,8 @@ const char* XMLDocument::_errorNames[XML_ERROR_COUNT] = {
|
|||||||
"XML_ERROR_MISMATCHED_ELEMENT",
|
"XML_ERROR_MISMATCHED_ELEMENT",
|
||||||
"XML_ERROR_PARSING",
|
"XML_ERROR_PARSING",
|
||||||
"XML_CAN_NOT_CONVERT_TEXT",
|
"XML_CAN_NOT_CONVERT_TEXT",
|
||||||
"XML_NO_TEXT_NODE"
|
"XML_NO_TEXT_NODE",
|
||||||
|
"XML_ELEMENT_DEPTH_EXCEEDED"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -2000,6 +2116,7 @@ XMLDocument::XMLDocument( bool processEntities, Whitespace whitespaceMode ) :
|
|||||||
_errorLineNum( 0 ),
|
_errorLineNum( 0 ),
|
||||||
_charBuffer( 0 ),
|
_charBuffer( 0 ),
|
||||||
_parseCurLineNum( 0 ),
|
_parseCurLineNum( 0 ),
|
||||||
|
_parsingDepth(0),
|
||||||
_unlinked(),
|
_unlinked(),
|
||||||
_elementPool(),
|
_elementPool(),
|
||||||
_attributePool(),
|
_attributePool(),
|
||||||
@@ -2017,7 +2134,7 @@ XMLDocument::~XMLDocument()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void XMLDocument::MarkInUse(XMLNode* node)
|
void XMLDocument::MarkInUse(const XMLNode* const node)
|
||||||
{
|
{
|
||||||
TIXMLASSERT(node);
|
TIXMLASSERT(node);
|
||||||
TIXMLASSERT(node->_parent == 0);
|
TIXMLASSERT(node->_parent == 0);
|
||||||
@@ -2037,13 +2154,14 @@ void XMLDocument::Clear()
|
|||||||
DeleteNode(_unlinked[0]); // Will remove from _unlinked as part of delete.
|
DeleteNode(_unlinked[0]); // Will remove from _unlinked as part of delete.
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef TINYXML2_DEBUG
|
||||||
const bool hadError = Error();
|
const bool hadError = Error();
|
||||||
#endif
|
#endif
|
||||||
ClearError();
|
ClearError();
|
||||||
|
|
||||||
delete [] _charBuffer;
|
delete [] _charBuffer;
|
||||||
_charBuffer = 0;
|
_charBuffer = 0;
|
||||||
|
_parsingDepth = 0;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
_textPool.Trace( "text" );
|
_textPool.Trace( "text" );
|
||||||
@@ -2052,7 +2170,7 @@ void XMLDocument::Clear()
|
|||||||
_attributePool.Trace( "attribute" );
|
_attributePool.Trace( "attribute" );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef TINYXML2_DEBUG
|
||||||
if ( !hadError ) {
|
if ( !hadError ) {
|
||||||
TIXMLASSERT( _elementPool.CurrentAllocs() == _elementPool.Untracked() );
|
TIXMLASSERT( _elementPool.CurrentAllocs() == _elementPool.Untracked() );
|
||||||
TIXMLASSERT( _attributePool.CurrentAllocs() == _attributePool.Untracked() );
|
TIXMLASSERT( _attributePool.CurrentAllocs() == _attributePool.Untracked() );
|
||||||
@@ -2121,7 +2239,7 @@ static FILE* callfopen( const char* filepath, const char* mode )
|
|||||||
TIXMLASSERT( mode );
|
TIXMLASSERT( mode );
|
||||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400 ) && (!defined WINCE)
|
#if defined(_MSC_VER) && (_MSC_VER >= 1400 ) && (!defined WINCE)
|
||||||
FILE* fp = 0;
|
FILE* fp = 0;
|
||||||
errno_t err = fopen_s( &fp, filepath, mode );
|
const errno_t err = fopen_s( &fp, filepath, mode );
|
||||||
if ( err ) {
|
if ( err ) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -2151,10 +2269,16 @@ void XMLDocument::DeleteNode( XMLNode* node ) {
|
|||||||
|
|
||||||
XMLError XMLDocument::LoadFile( const char* filename )
|
XMLError XMLDocument::LoadFile( const char* filename )
|
||||||
{
|
{
|
||||||
|
if ( !filename ) {
|
||||||
|
TIXMLASSERT( false );
|
||||||
|
SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, "filename=<null>" );
|
||||||
|
return _errorID;
|
||||||
|
}
|
||||||
|
|
||||||
Clear();
|
Clear();
|
||||||
FILE* fp = callfopen( filename, "rb" );
|
FILE* fp = callfopen( filename, "rb" );
|
||||||
if ( !fp ) {
|
if ( !fp ) {
|
||||||
SetError( XML_ERROR_FILE_NOT_FOUND, 0, "filename=%s", filename ? filename : "<null>");
|
SetError( XML_ERROR_FILE_NOT_FOUND, 0, "filename=%s", filename );
|
||||||
return _errorID;
|
return _errorID;
|
||||||
}
|
}
|
||||||
LoadFile( fp );
|
LoadFile( fp );
|
||||||
@@ -2173,7 +2297,7 @@ template
|
|||||||
struct LongFitsIntoSizeTMinusOne {
|
struct LongFitsIntoSizeTMinusOne {
|
||||||
static bool Fits( unsigned long value )
|
static bool Fits( unsigned long value )
|
||||||
{
|
{
|
||||||
return value < (size_t)-1;
|
return value < static_cast<size_t>(-1);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -2218,7 +2342,7 @@ XMLError XMLDocument::LoadFile( FILE* fp )
|
|||||||
const size_t size = filelength;
|
const size_t size = filelength;
|
||||||
TIXMLASSERT( _charBuffer == 0 );
|
TIXMLASSERT( _charBuffer == 0 );
|
||||||
_charBuffer = new char[size+1];
|
_charBuffer = new char[size+1];
|
||||||
size_t read = fread( _charBuffer, 1, size, fp );
|
const size_t read = fread( _charBuffer, 1, size, fp );
|
||||||
if ( read != size ) {
|
if ( read != size ) {
|
||||||
SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 );
|
SetError( XML_ERROR_FILE_READ_ERROR, 0, 0 );
|
||||||
return _errorID;
|
return _errorID;
|
||||||
@@ -2233,9 +2357,15 @@ XMLError XMLDocument::LoadFile( FILE* fp )
|
|||||||
|
|
||||||
XMLError XMLDocument::SaveFile( const char* filename, bool compact )
|
XMLError XMLDocument::SaveFile( const char* filename, bool compact )
|
||||||
{
|
{
|
||||||
|
if ( !filename ) {
|
||||||
|
TIXMLASSERT( false );
|
||||||
|
SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, "filename=<null>" );
|
||||||
|
return _errorID;
|
||||||
|
}
|
||||||
|
|
||||||
FILE* fp = callfopen( filename, "w" );
|
FILE* fp = callfopen( filename, "w" );
|
||||||
if ( !fp ) {
|
if ( !fp ) {
|
||||||
SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, "filename=%s", filename ? filename : "<null>");
|
SetError( XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, "filename=%s", filename );
|
||||||
return _errorID;
|
return _errorID;
|
||||||
}
|
}
|
||||||
SaveFile(fp, compact);
|
SaveFile(fp, compact);
|
||||||
@@ -2263,7 +2393,7 @@ XMLError XMLDocument::Parse( const char* p, size_t len )
|
|||||||
SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );
|
SetError( XML_ERROR_EMPTY_DOCUMENT, 0, 0 );
|
||||||
return _errorID;
|
return _errorID;
|
||||||
}
|
}
|
||||||
if ( len == (size_t)(-1) ) {
|
if ( len == static_cast<size_t>(-1) ) {
|
||||||
len = strlen( p );
|
len = strlen( p );
|
||||||
}
|
}
|
||||||
TIXMLASSERT( _charBuffer == 0 );
|
TIXMLASSERT( _charBuffer == 0 );
|
||||||
@@ -2305,21 +2435,25 @@ void XMLDocument::SetError( XMLError error, int lineNum, const char* format, ...
|
|||||||
_errorLineNum = lineNum;
|
_errorLineNum = lineNum;
|
||||||
_errorStr.Reset();
|
_errorStr.Reset();
|
||||||
|
|
||||||
if (format) {
|
const size_t BUFFER_SIZE = 1000;
|
||||||
size_t BUFFER_SIZE = 1000;
|
|
||||||
char* buffer = new char[BUFFER_SIZE];
|
char* buffer = new char[BUFFER_SIZE];
|
||||||
TIXML_SNPRINTF(buffer, BUFFER_SIZE, "Error=%s ErrorID=%d (0x%x) Line number=%d: ", ErrorIDToName(error), int(error), int(error), lineNum);
|
|
||||||
|
TIXMLASSERT(sizeof(error) <= sizeof(int));
|
||||||
|
TIXML_SNPRINTF(buffer, BUFFER_SIZE, "Error=%s ErrorID=%d (0x%x) Line number=%d", ErrorIDToName(error), int(error), int(error), lineNum);
|
||||||
|
|
||||||
|
if (format) {
|
||||||
size_t len = strlen(buffer);
|
size_t len = strlen(buffer);
|
||||||
|
TIXML_SNPRINTF(buffer + len, BUFFER_SIZE - len, ": ");
|
||||||
|
len = strlen(buffer);
|
||||||
|
|
||||||
va_list va;
|
va_list va;
|
||||||
va_start(va, format);
|
va_start(va, format);
|
||||||
TIXML_VSNPRINTF(buffer + len, BUFFER_SIZE - len, format, va);
|
TIXML_VSNPRINTF(buffer + len, BUFFER_SIZE - len, format, va);
|
||||||
va_end(va);
|
va_end(va);
|
||||||
|
}
|
||||||
_errorStr.SetStr(buffer);
|
_errorStr.SetStr(buffer);
|
||||||
delete[] buffer;
|
delete[] buffer;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*static*/ const char* XMLDocument::ErrorIDToName(XMLError errorID)
|
/*static*/ const char* XMLDocument::ErrorIDToName(XMLError errorID)
|
||||||
@@ -2362,6 +2496,20 @@ void XMLDocument::Parse()
|
|||||||
ParseDeep(p, 0, &_parseCurLineNum );
|
ParseDeep(p, 0, &_parseCurLineNum );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void XMLDocument::PushDepth()
|
||||||
|
{
|
||||||
|
_parsingDepth++;
|
||||||
|
if (_parsingDepth == TINYXML2_MAX_ELEMENT_DEPTH) {
|
||||||
|
SetError(XML_ELEMENT_DEPTH_EXCEEDED, _parseCurLineNum, "Element nesting is too deep." );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void XMLDocument::PopDepth()
|
||||||
|
{
|
||||||
|
TIXMLASSERT(_parsingDepth > 0);
|
||||||
|
--_parsingDepth;
|
||||||
|
}
|
||||||
|
|
||||||
XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) :
|
XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) :
|
||||||
_elementJustOpened( false ),
|
_elementJustOpened( false ),
|
||||||
_stack(),
|
_stack(),
|
||||||
@@ -2379,13 +2527,13 @@ XMLPrinter::XMLPrinter( FILE* file, bool compact, int depth ) :
|
|||||||
}
|
}
|
||||||
for( int i=0; i<NUM_ENTITIES; ++i ) {
|
for( int i=0; i<NUM_ENTITIES; ++i ) {
|
||||||
const char entityValue = entities[i].value;
|
const char entityValue = entities[i].value;
|
||||||
const unsigned char flagIndex = (unsigned char)entityValue;
|
const unsigned char flagIndex = static_cast<unsigned char>(entityValue);
|
||||||
TIXMLASSERT( flagIndex < ENTITY_RANGE );
|
TIXMLASSERT( flagIndex < ENTITY_RANGE );
|
||||||
_entityFlag[flagIndex] = true;
|
_entityFlag[flagIndex] = true;
|
||||||
}
|
}
|
||||||
_restrictedEntityFlag[(unsigned char)'&'] = true;
|
_restrictedEntityFlag[static_cast<unsigned char>('&')] = true;
|
||||||
_restrictedEntityFlag[(unsigned char)'<'] = true;
|
_restrictedEntityFlag[static_cast<unsigned char>('<')] = true;
|
||||||
_restrictedEntityFlag[(unsigned char)'>'] = true; // not required, but consistency is nice
|
_restrictedEntityFlag[static_cast<unsigned char>('>')] = true; // not required, but consistency is nice
|
||||||
_buffer.Push( 0 );
|
_buffer.Push( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2460,10 +2608,10 @@ void XMLPrinter::PrintString( const char* p, bool restricted )
|
|||||||
// Check for entities. If one is found, flush
|
// Check for entities. If one is found, flush
|
||||||
// the stream up until the entity, write the
|
// the stream up until the entity, write the
|
||||||
// entity, and keep looking.
|
// entity, and keep looking.
|
||||||
if ( flag[(unsigned char)(*q)] ) {
|
if ( flag[static_cast<unsigned char>(*q)] ) {
|
||||||
while ( p < q ) {
|
while ( p < q ) {
|
||||||
const size_t delta = q - p;
|
const size_t delta = q - p;
|
||||||
const int toPrint = ( INT_MAX < delta ) ? INT_MAX : (int)delta;
|
const int toPrint = ( INT_MAX < delta ) ? INT_MAX : static_cast<int>(delta);
|
||||||
Write( p, toPrint );
|
Write( p, toPrint );
|
||||||
p += toPrint;
|
p += toPrint;
|
||||||
}
|
}
|
||||||
@@ -2487,16 +2635,18 @@ void XMLPrinter::PrintString( const char* p, bool restricted )
|
|||||||
++q;
|
++q;
|
||||||
TIXMLASSERT( p <= q );
|
TIXMLASSERT( p <= q );
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// Flush the remaining string. This will be the entire
|
// Flush the remaining string. This will be the entire
|
||||||
// string if an entity wasn't found.
|
// string if an entity wasn't found.
|
||||||
TIXMLASSERT( p <= q );
|
if ( p < q ) {
|
||||||
if ( !_processEntities || ( p < q ) ) {
|
|
||||||
const size_t delta = q - p;
|
const size_t delta = q - p;
|
||||||
const int toPrint = ( INT_MAX < delta ) ? INT_MAX : (int)delta;
|
const int toPrint = ( INT_MAX < delta ) ? INT_MAX : static_cast<int>(delta);
|
||||||
Write( p, toPrint );
|
Write( p, toPrint );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
Write( p );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void XMLPrinter::PushHeader( bool writeBOM, bool writeDec )
|
void XMLPrinter::PushHeader( bool writeBOM, bool writeDec )
|
||||||
@@ -2518,8 +2668,6 @@ void XMLPrinter::OpenElement( const char* name, bool compactMode )
|
|||||||
|
|
||||||
if ( _textDepth < 0 && !_firstElement && !compactMode ) {
|
if ( _textDepth < 0 && !_firstElement && !compactMode ) {
|
||||||
Putc( '\n' );
|
Putc( '\n' );
|
||||||
}
|
|
||||||
if ( !compactMode ) {
|
|
||||||
PrintSpace( _depth );
|
PrintSpace( _depth );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2567,6 +2715,14 @@ void XMLPrinter::PushAttribute(const char* name, int64_t v)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void XMLPrinter::PushAttribute(const char* name, uint64_t v)
|
||||||
|
{
|
||||||
|
char buf[BUF_SIZE];
|
||||||
|
XMLUtil::ToStr(v, buf, BUF_SIZE);
|
||||||
|
PushAttribute(name, buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void XMLPrinter::PushAttribute( const char* name, bool v )
|
void XMLPrinter::PushAttribute( const char* name, bool v )
|
||||||
{
|
{
|
||||||
char buf[BUF_SIZE];
|
char buf[BUF_SIZE];
|
||||||
@@ -2636,6 +2792,7 @@ void XMLPrinter::PushText( const char* text, bool cdata )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void XMLPrinter::PushText( int64_t value )
|
void XMLPrinter::PushText( int64_t value )
|
||||||
{
|
{
|
||||||
char buf[BUF_SIZE];
|
char buf[BUF_SIZE];
|
||||||
@@ -2643,6 +2800,15 @@ void XMLPrinter::PushText( int64_t value )
|
|||||||
PushText( buf, false );
|
PushText( buf, false );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void XMLPrinter::PushText( uint64_t value )
|
||||||
|
{
|
||||||
|
char buf[BUF_SIZE];
|
||||||
|
XMLUtil::ToStr(value, buf, BUF_SIZE);
|
||||||
|
PushText(buf, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void XMLPrinter::PushText( int value )
|
void XMLPrinter::PushText( int value )
|
||||||
{
|
{
|
||||||
char buf[BUF_SIZE];
|
char buf[BUF_SIZE];
|
||||||
@@ -2788,4 +2954,3 @@ bool XMLPrinter::Visit( const XMLUnknown& unknown )
|
|||||||
}
|
}
|
||||||
|
|
||||||
} // namespace tinyxml2
|
} // namespace tinyxml2
|
||||||
|
|
||||||
|
|||||||
177
tinyxml2.h
177
tinyxml2.h
@@ -47,15 +47,15 @@ distribution.
|
|||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
gcc:
|
gcc:
|
||||||
g++ -Wall -DDEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe
|
g++ -Wall -DTINYXML2_DEBUG tinyxml2.cpp xmltest.cpp -o gccxmltest.exe
|
||||||
|
|
||||||
Formatting, Artistic Style:
|
Formatting, Artistic Style:
|
||||||
AStyle.exe --style=1tbs --indent-switches --break-closing-brackets --indent-preprocessor tinyxml2.cpp tinyxml2.h
|
AStyle.exe --style=1tbs --indent-switches --break-closing-brackets --indent-preprocessor tinyxml2.cpp tinyxml2.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined( _DEBUG ) || defined (__DEBUG__)
|
#if defined( _DEBUG ) || defined (__DEBUG__)
|
||||||
# ifndef DEBUG
|
# ifndef TINYXML2_DEBUG
|
||||||
# define DEBUG
|
# define TINYXML2_DEBUG
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ distribution.
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if defined(DEBUG)
|
#if defined(TINYXML2_DEBUG)
|
||||||
# if defined(_MSC_VER)
|
# if defined(_MSC_VER)
|
||||||
# // "(void)0," is for suppressing C4127 warning in "assert(false)", "assert(true)" and the like
|
# // "(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 ) if ( !((void)0,(x))) { __debugbreak(); }
|
||||||
@@ -98,10 +98,21 @@ distribution.
|
|||||||
/* Versioning, past 1.0.14:
|
/* Versioning, past 1.0.14:
|
||||||
http://semver.org/
|
http://semver.org/
|
||||||
*/
|
*/
|
||||||
static const int TIXML2_MAJOR_VERSION = 6;
|
static const int TIXML2_MAJOR_VERSION = 8;
|
||||||
static const int TIXML2_MINOR_VERSION = 0;
|
static const int TIXML2_MINOR_VERSION = 0;
|
||||||
static const int TIXML2_PATCH_VERSION = 0;
|
static const int TIXML2_PATCH_VERSION = 0;
|
||||||
|
|
||||||
|
#define TINYXML2_MAJOR_VERSION 8
|
||||||
|
#define TINYXML2_MINOR_VERSION 0
|
||||||
|
#define TINYXML2_PATCH_VERSION 0
|
||||||
|
|
||||||
|
// A fixed element depth limit is problematic. There needs to be a
|
||||||
|
// limit to avoid a stack overflow. However, that limit varies per
|
||||||
|
// 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;
|
||||||
|
|
||||||
namespace tinyxml2
|
namespace tinyxml2
|
||||||
{
|
{
|
||||||
class XMLDocument;
|
class XMLDocument;
|
||||||
@@ -118,8 +129,10 @@ class XMLPrinter;
|
|||||||
pointers into the XML file itself, and will apply normalization
|
pointers into the XML file itself, and will apply normalization
|
||||||
and entity translation if actually read. Can also store (and memory
|
and entity translation if actually read. Can also store (and memory
|
||||||
manage) a traditional char[]
|
manage) a traditional char[]
|
||||||
|
|
||||||
|
Isn't clear why TINYXML2_LIB is needed; but seems to fix #719
|
||||||
*/
|
*/
|
||||||
class StrPair
|
class TINYXML2_LIB StrPair
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum {
|
enum {
|
||||||
@@ -179,7 +192,7 @@ private:
|
|||||||
char* _end;
|
char* _end;
|
||||||
|
|
||||||
StrPair( const StrPair& other ); // not supported
|
StrPair( const StrPair& other ); // not supported
|
||||||
void operator=( StrPair& other ); // not supported, use TransferTo()
|
void operator=( const StrPair& other ); // not supported, use TransferTo()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -290,7 +303,7 @@ private:
|
|||||||
TIXMLASSERT( cap > 0 );
|
TIXMLASSERT( cap > 0 );
|
||||||
if ( cap > _allocated ) {
|
if ( cap > _allocated ) {
|
||||||
TIXMLASSERT( cap <= INT_MAX / 2 );
|
TIXMLASSERT( cap <= INT_MAX / 2 );
|
||||||
int newAllocated = cap * 2;
|
const int newAllocated = cap * 2;
|
||||||
T* newMem = new T[newAllocated];
|
T* newMem = new T[newAllocated];
|
||||||
TIXMLASSERT( newAllocated >= _size );
|
TIXMLASSERT( newAllocated >= _size );
|
||||||
memcpy( newMem, _mem, sizeof(T)*_size ); // warning: not using constructors, only works for PODs
|
memcpy( newMem, _mem, sizeof(T)*_size ); // warning: not using constructors, only works for PODs
|
||||||
@@ -323,7 +336,6 @@ public:
|
|||||||
virtual void* Alloc() = 0;
|
virtual void* Alloc() = 0;
|
||||||
virtual void Free( void* ) = 0;
|
virtual void Free( void* ) = 0;
|
||||||
virtual void SetTracked() = 0;
|
virtual void SetTracked() = 0;
|
||||||
virtual void Clear() = 0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -336,7 +348,7 @@ class MemPoolT : public MemPool
|
|||||||
public:
|
public:
|
||||||
MemPoolT() : _blockPtrs(), _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0) {}
|
MemPoolT() : _blockPtrs(), _root(0), _currentAllocs(0), _nAllocs(0), _maxAllocs(0), _nUntracked(0) {}
|
||||||
~MemPoolT() {
|
~MemPoolT() {
|
||||||
Clear();
|
MemPoolT< ITEM_SIZE >::Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Clear() {
|
void Clear() {
|
||||||
@@ -391,7 +403,7 @@ public:
|
|||||||
}
|
}
|
||||||
--_currentAllocs;
|
--_currentAllocs;
|
||||||
Item* item = static_cast<Item*>( mem );
|
Item* item = static_cast<Item*>( mem );
|
||||||
#ifdef DEBUG
|
#ifdef TINYXML2_DEBUG
|
||||||
memset( item, 0xfe, sizeof( *item ) );
|
memset( item, 0xfe, sizeof( *item ) );
|
||||||
#endif
|
#endif
|
||||||
item->next = _root;
|
item->next = _root;
|
||||||
@@ -514,10 +526,8 @@ enum XMLError {
|
|||||||
XML_ERROR_FILE_NOT_FOUND,
|
XML_ERROR_FILE_NOT_FOUND,
|
||||||
XML_ERROR_FILE_COULD_NOT_BE_OPENED,
|
XML_ERROR_FILE_COULD_NOT_BE_OPENED,
|
||||||
XML_ERROR_FILE_READ_ERROR,
|
XML_ERROR_FILE_READ_ERROR,
|
||||||
UNUSED_XML_ERROR_ELEMENT_MISMATCH, // remove at next major version
|
|
||||||
XML_ERROR_PARSING_ELEMENT,
|
XML_ERROR_PARSING_ELEMENT,
|
||||||
XML_ERROR_PARSING_ATTRIBUTE,
|
XML_ERROR_PARSING_ATTRIBUTE,
|
||||||
UNUSED_XML_ERROR_IDENTIFYING_TAG, // remove at next major version
|
|
||||||
XML_ERROR_PARSING_TEXT,
|
XML_ERROR_PARSING_TEXT,
|
||||||
XML_ERROR_PARSING_CDATA,
|
XML_ERROR_PARSING_CDATA,
|
||||||
XML_ERROR_PARSING_COMMENT,
|
XML_ERROR_PARSING_COMMENT,
|
||||||
@@ -528,6 +538,7 @@ enum XMLError {
|
|||||||
XML_ERROR_PARSING,
|
XML_ERROR_PARSING,
|
||||||
XML_CAN_NOT_CONVERT_TEXT,
|
XML_CAN_NOT_CONVERT_TEXT,
|
||||||
XML_NO_TEXT_NODE,
|
XML_NO_TEXT_NODE,
|
||||||
|
XML_ELEMENT_DEPTH_EXCEEDED,
|
||||||
|
|
||||||
XML_ERROR_COUNT
|
XML_ERROR_COUNT
|
||||||
};
|
};
|
||||||
@@ -551,7 +562,7 @@ public:
|
|||||||
TIXMLASSERT( p );
|
TIXMLASSERT( p );
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
static char* SkipWhiteSpace( char* p, int* curLineNumPtr ) {
|
static char* SkipWhiteSpace( char* const p, int* curLineNumPtr ) {
|
||||||
return const_cast<char*>( SkipWhiteSpace( const_cast<const char*>(p), curLineNumPtr ) );
|
return const_cast<char*>( SkipWhiteSpace( const_cast<const char*>(p), curLineNumPtr ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -589,7 +600,7 @@ public:
|
|||||||
return strncmp( p, q, nChar ) == 0;
|
return strncmp( p, q, nChar ) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static bool IsUTF8Continuation( char p ) {
|
inline static bool IsUTF8Continuation( const char p ) {
|
||||||
return ( p & 0x80 ) != 0;
|
return ( p & 0x80 ) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -606,6 +617,7 @@ public:
|
|||||||
static void ToStr( float v, char* buffer, int bufferSize );
|
static void ToStr( float v, char* buffer, int bufferSize );
|
||||||
static void ToStr( double v, char* buffer, int bufferSize );
|
static void ToStr( double v, char* buffer, int bufferSize );
|
||||||
static void ToStr(int64_t v, char* buffer, int bufferSize);
|
static void ToStr(int64_t v, char* buffer, int bufferSize);
|
||||||
|
static void ToStr(uint64_t v, char* buffer, int bufferSize);
|
||||||
|
|
||||||
// converts strings to primitive types
|
// converts strings to primitive types
|
||||||
static bool ToInt( const char* str, int* value );
|
static bool ToInt( const char* str, int* value );
|
||||||
@@ -614,7 +626,7 @@ public:
|
|||||||
static bool ToFloat( const char* str, float* value );
|
static bool ToFloat( const char* str, float* value );
|
||||||
static bool ToDouble( const char* str, double* value );
|
static bool ToDouble( const char* str, double* value );
|
||||||
static bool ToInt64(const char* str, int64_t* value);
|
static bool ToInt64(const char* str, int64_t* value);
|
||||||
|
static bool ToUnsigned64(const char* str, uint64_t* value);
|
||||||
// Changes what is serialized for a boolean value.
|
// Changes what is serialized for a boolean value.
|
||||||
// Default to "true" and "false". Shouldn't be changed
|
// Default to "true" and "false". Shouldn't be changed
|
||||||
// unless you have a special testing or compatibility need.
|
// unless you have a special testing or compatibility need.
|
||||||
@@ -928,7 +940,7 @@ public:
|
|||||||
void* GetUserData() const { return _userData; }
|
void* GetUserData() const { return _userData; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
XMLNode( XMLDocument* );
|
explicit XMLNode( XMLDocument* );
|
||||||
virtual ~XMLNode();
|
virtual ~XMLNode();
|
||||||
|
|
||||||
virtual char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr);
|
virtual char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr);
|
||||||
@@ -996,7 +1008,7 @@ public:
|
|||||||
virtual bool ShallowEqual( const XMLNode* compare ) const;
|
virtual bool ShallowEqual( const XMLNode* compare ) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
XMLText( XMLDocument* doc ) : XMLNode( doc ), _isCData( false ) {}
|
explicit XMLText( XMLDocument* doc ) : XMLNode( doc ), _isCData( false ) {}
|
||||||
virtual ~XMLText() {}
|
virtual ~XMLText() {}
|
||||||
|
|
||||||
char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
|
char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
|
||||||
@@ -1027,7 +1039,7 @@ public:
|
|||||||
virtual bool ShallowEqual( const XMLNode* compare ) const;
|
virtual bool ShallowEqual( const XMLNode* compare ) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
XMLComment( XMLDocument* doc );
|
explicit XMLComment( XMLDocument* doc );
|
||||||
virtual ~XMLComment();
|
virtual ~XMLComment();
|
||||||
|
|
||||||
char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr);
|
char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr);
|
||||||
@@ -1066,7 +1078,7 @@ public:
|
|||||||
virtual bool ShallowEqual( const XMLNode* compare ) const;
|
virtual bool ShallowEqual( const XMLNode* compare ) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
XMLDeclaration( XMLDocument* doc );
|
explicit XMLDeclaration( XMLDocument* doc );
|
||||||
virtual ~XMLDeclaration();
|
virtual ~XMLDeclaration();
|
||||||
|
|
||||||
char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
|
char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
|
||||||
@@ -1101,7 +1113,7 @@ public:
|
|||||||
virtual bool ShallowEqual( const XMLNode* compare ) const;
|
virtual bool ShallowEqual( const XMLNode* compare ) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
XMLUnknown( XMLDocument* doc );
|
explicit XMLUnknown( XMLDocument* doc );
|
||||||
virtual ~XMLUnknown();
|
virtual ~XMLUnknown();
|
||||||
|
|
||||||
char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
|
char* ParseDeep( char* p, StrPair* parentEndTag, int* curLineNumPtr );
|
||||||
@@ -1153,6 +1165,12 @@ public:
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint64_t Unsigned64Value() const {
|
||||||
|
uint64_t i = 0;
|
||||||
|
QueryUnsigned64Value(&i);
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
/// Query as an unsigned integer. See IntValue()
|
/// Query as an unsigned integer. See IntValue()
|
||||||
unsigned UnsignedValue() const {
|
unsigned UnsignedValue() const {
|
||||||
unsigned i=0;
|
unsigned i=0;
|
||||||
@@ -1188,6 +1206,8 @@ public:
|
|||||||
/// See QueryIntValue
|
/// See QueryIntValue
|
||||||
XMLError QueryInt64Value(int64_t* value) const;
|
XMLError QueryInt64Value(int64_t* value) const;
|
||||||
/// See QueryIntValue
|
/// See QueryIntValue
|
||||||
|
XMLError QueryUnsigned64Value(uint64_t* value) const;
|
||||||
|
/// See QueryIntValue
|
||||||
XMLError QueryBoolValue( bool* value ) const;
|
XMLError QueryBoolValue( bool* value ) const;
|
||||||
/// See QueryIntValue
|
/// See QueryIntValue
|
||||||
XMLError QueryDoubleValue( double* value ) const;
|
XMLError QueryDoubleValue( double* value ) const;
|
||||||
@@ -1203,6 +1223,8 @@ public:
|
|||||||
/// Set the attribute to value.
|
/// Set the attribute to value.
|
||||||
void SetAttribute(int64_t value);
|
void SetAttribute(int64_t value);
|
||||||
/// Set the attribute to value.
|
/// Set the attribute to value.
|
||||||
|
void SetAttribute(uint64_t value);
|
||||||
|
/// Set the attribute to value.
|
||||||
void SetAttribute( bool value );
|
void SetAttribute( bool value );
|
||||||
/// Set the attribute to value.
|
/// Set the attribute to value.
|
||||||
void SetAttribute( double value );
|
void SetAttribute( double value );
|
||||||
@@ -1291,6 +1313,8 @@ public:
|
|||||||
/// See IntAttribute()
|
/// See IntAttribute()
|
||||||
int64_t Int64Attribute(const char* name, int64_t defaultValue = 0) const;
|
int64_t Int64Attribute(const char* name, int64_t defaultValue = 0) const;
|
||||||
/// See IntAttribute()
|
/// See IntAttribute()
|
||||||
|
uint64_t Unsigned64Attribute(const char* name, uint64_t defaultValue = 0) const;
|
||||||
|
/// See IntAttribute()
|
||||||
bool BoolAttribute(const char* name, bool defaultValue = false) const;
|
bool BoolAttribute(const char* name, bool defaultValue = false) const;
|
||||||
/// See IntAttribute()
|
/// See IntAttribute()
|
||||||
double DoubleAttribute(const char* name, double defaultValue = 0) const;
|
double DoubleAttribute(const char* name, double defaultValue = 0) const;
|
||||||
@@ -1337,6 +1361,15 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// See QueryIntAttribute()
|
/// See QueryIntAttribute()
|
||||||
|
XMLError QueryUnsigned64Attribute(const char* name, uint64_t* value) const {
|
||||||
|
const XMLAttribute* a = FindAttribute(name);
|
||||||
|
if(!a) {
|
||||||
|
return XML_NO_ATTRIBUTE;
|
||||||
|
}
|
||||||
|
return a->QueryUnsigned64Value(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// See QueryIntAttribute()
|
||||||
XMLError QueryBoolAttribute( const char* name, bool* value ) const {
|
XMLError QueryBoolAttribute( const char* name, bool* value ) const {
|
||||||
const XMLAttribute* a = FindAttribute( name );
|
const XMLAttribute* a = FindAttribute( name );
|
||||||
if ( !a ) {
|
if ( !a ) {
|
||||||
@@ -1361,6 +1394,17 @@ public:
|
|||||||
return a->QueryFloatValue( value );
|
return a->QueryFloatValue( value );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// See QueryIntAttribute()
|
||||||
|
XMLError QueryStringAttribute(const char* name, const char** value) const {
|
||||||
|
const XMLAttribute* a = FindAttribute(name);
|
||||||
|
if (!a) {
|
||||||
|
return XML_NO_ATTRIBUTE;
|
||||||
|
}
|
||||||
|
*value = a->Value();
|
||||||
|
return XML_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** Given an attribute name, QueryAttribute() returns
|
/** Given an attribute name, QueryAttribute() returns
|
||||||
XML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion
|
XML_SUCCESS, XML_WRONG_ATTRIBUTE_TYPE if the conversion
|
||||||
@@ -1379,27 +1423,31 @@ public:
|
|||||||
QueryAttribute( "foo", &value ); // if "foo" isn't found, value will still be 10
|
QueryAttribute( "foo", &value ); // if "foo" isn't found, value will still be 10
|
||||||
@endverbatim
|
@endverbatim
|
||||||
*/
|
*/
|
||||||
int QueryAttribute( const char* name, int* value ) const {
|
XMLError QueryAttribute( const char* name, int* value ) const {
|
||||||
return QueryIntAttribute( name, value );
|
return QueryIntAttribute( name, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
int QueryAttribute( const char* name, unsigned int* value ) const {
|
XMLError QueryAttribute( const char* name, unsigned int* value ) const {
|
||||||
return QueryUnsignedAttribute( name, value );
|
return QueryUnsignedAttribute( name, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
int QueryAttribute(const char* name, int64_t* value) const {
|
XMLError QueryAttribute(const char* name, int64_t* value) const {
|
||||||
return QueryInt64Attribute(name, value);
|
return QueryInt64Attribute(name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
int QueryAttribute( const char* name, bool* value ) const {
|
XMLError QueryAttribute(const char* name, uint64_t* value) const {
|
||||||
|
return QueryUnsigned64Attribute(name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
XMLError QueryAttribute( const char* name, bool* value ) const {
|
||||||
return QueryBoolAttribute( name, value );
|
return QueryBoolAttribute( name, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
int QueryAttribute( const char* name, double* value ) const {
|
XMLError QueryAttribute( const char* name, double* value ) const {
|
||||||
return QueryDoubleAttribute( name, value );
|
return QueryDoubleAttribute( name, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
int QueryAttribute( const char* name, float* value ) const {
|
XMLError QueryAttribute( const char* name, float* value ) const {
|
||||||
return QueryFloatAttribute( name, value );
|
return QueryFloatAttribute( name, value );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1425,6 +1473,12 @@ public:
|
|||||||
a->SetAttribute(value);
|
a->SetAttribute(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Sets the named attribute to value.
|
||||||
|
void SetAttribute(const char* name, uint64_t value) {
|
||||||
|
XMLAttribute* a = FindOrCreateAttribute(name);
|
||||||
|
a->SetAttribute(value);
|
||||||
|
}
|
||||||
|
|
||||||
/// Sets the named attribute to value.
|
/// Sets the named attribute to value.
|
||||||
void SetAttribute( const char* name, bool value ) {
|
void SetAttribute( const char* name, bool value ) {
|
||||||
XMLAttribute* a = FindOrCreateAttribute( name );
|
XMLAttribute* a = FindOrCreateAttribute( name );
|
||||||
@@ -1525,6 +1579,8 @@ public:
|
|||||||
/// Convenience method for setting text inside an element. See SetText() for important limitations.
|
/// Convenience method for setting text inside an element. See SetText() for important limitations.
|
||||||
void SetText(int64_t value);
|
void SetText(int64_t value);
|
||||||
/// Convenience method for setting text inside an element. See SetText() for important limitations.
|
/// 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 );
|
void SetText( bool value );
|
||||||
/// Convenience method for setting text inside an element. See SetText() for important limitations.
|
/// Convenience method for setting text inside an element. See SetText() for important limitations.
|
||||||
void SetText( double value );
|
void SetText( double value );
|
||||||
@@ -1563,6 +1619,8 @@ public:
|
|||||||
/// See QueryIntText()
|
/// See QueryIntText()
|
||||||
XMLError QueryInt64Text(int64_t* uval) const;
|
XMLError QueryInt64Text(int64_t* uval) const;
|
||||||
/// See QueryIntText()
|
/// See QueryIntText()
|
||||||
|
XMLError QueryUnsigned64Text(uint64_t* uval) const;
|
||||||
|
/// See QueryIntText()
|
||||||
XMLError QueryBoolText( bool* bval ) const;
|
XMLError QueryBoolText( bool* bval ) const;
|
||||||
/// See QueryIntText()
|
/// See QueryIntText()
|
||||||
XMLError QueryDoubleText( double* dval ) const;
|
XMLError QueryDoubleText( double* dval ) const;
|
||||||
@@ -1576,12 +1634,29 @@ public:
|
|||||||
/// See QueryIntText()
|
/// See QueryIntText()
|
||||||
int64_t Int64Text(int64_t defaultValue = 0) const;
|
int64_t Int64Text(int64_t defaultValue = 0) const;
|
||||||
/// See QueryIntText()
|
/// See QueryIntText()
|
||||||
|
uint64_t Unsigned64Text(uint64_t defaultValue = 0) const;
|
||||||
|
/// See QueryIntText()
|
||||||
bool BoolText(bool defaultValue = false) const;
|
bool BoolText(bool defaultValue = false) const;
|
||||||
/// See QueryIntText()
|
/// See QueryIntText()
|
||||||
double DoubleText(double defaultValue = 0) const;
|
double DoubleText(double defaultValue = 0) const;
|
||||||
/// See QueryIntText()
|
/// See QueryIntText()
|
||||||
float FloatText(float defaultValue = 0) const;
|
float FloatText(float defaultValue = 0) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Convenience method to create a new XMLElement and add it as last (right)
|
||||||
|
child of this node. Returns the created and inserted element.
|
||||||
|
*/
|
||||||
|
XMLElement* InsertNewChildElement(const char* name);
|
||||||
|
/// See InsertNewChildElement()
|
||||||
|
XMLComment* InsertNewComment(const char* comment);
|
||||||
|
/// See InsertNewChildElement()
|
||||||
|
XMLText* InsertNewText(const char* text);
|
||||||
|
/// See InsertNewChildElement()
|
||||||
|
XMLDeclaration* InsertNewDeclaration(const char* text);
|
||||||
|
/// See InsertNewChildElement()
|
||||||
|
XMLUnknown* InsertNewUnknown(const char* text);
|
||||||
|
|
||||||
|
|
||||||
// internal:
|
// internal:
|
||||||
enum ElementClosingType {
|
enum ElementClosingType {
|
||||||
OPEN, // <foo>
|
OPEN, // <foo>
|
||||||
@@ -1603,11 +1678,7 @@ private:
|
|||||||
XMLElement( const XMLElement& ); // not supported
|
XMLElement( const XMLElement& ); // not supported
|
||||||
void operator=( const XMLElement& ); // not supported
|
void operator=( const XMLElement& ); // not supported
|
||||||
|
|
||||||
XMLAttribute* FindAttribute( const char* name ) {
|
|
||||||
return const_cast<XMLAttribute*>(const_cast<const XMLElement*>(this)->FindAttribute( name ));
|
|
||||||
}
|
|
||||||
XMLAttribute* FindOrCreateAttribute( const char* name );
|
XMLAttribute* FindOrCreateAttribute( const char* name );
|
||||||
//void LinkAttribute( XMLAttribute* attrib );
|
|
||||||
char* ParseAttributes( char* p, int* curLineNumPtr );
|
char* ParseAttributes( char* p, int* curLineNumPtr );
|
||||||
static void DeleteAttribute( XMLAttribute* attribute );
|
static void DeleteAttribute( XMLAttribute* attribute );
|
||||||
XMLAttribute* CreateAttribute();
|
XMLAttribute* CreateAttribute();
|
||||||
@@ -1635,7 +1706,7 @@ enum Whitespace {
|
|||||||
class TINYXML2_LIB XMLDocument : public XMLNode
|
class TINYXML2_LIB XMLDocument : public XMLNode
|
||||||
{
|
{
|
||||||
friend class XMLElement;
|
friend class XMLElement;
|
||||||
// Gives access to SetError, but over-access for everything else.
|
// Gives access to SetError and Push/PopDepth, but over-access for everything else.
|
||||||
// Wishing C++ had "internal" scope.
|
// Wishing C++ had "internal" scope.
|
||||||
friend class XMLNode;
|
friend class XMLNode;
|
||||||
friend class XMLText;
|
friend class XMLText;
|
||||||
@@ -1666,7 +1737,7 @@ public:
|
|||||||
specified, TinyXML-2 will assume 'xml' points to a
|
specified, TinyXML-2 will assume 'xml' points to a
|
||||||
null terminated string.
|
null terminated string.
|
||||||
*/
|
*/
|
||||||
XMLError Parse( const char* xml, size_t nBytes=(size_t)(-1) );
|
XMLError Parse( const char* xml, size_t nBytes=static_cast<size_t>(-1) );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Load an XML file from disk.
|
Load an XML file from disk.
|
||||||
@@ -1816,7 +1887,7 @@ public:
|
|||||||
/// A (trivial) utility function that prints the ErrorStr() to stdout.
|
/// A (trivial) utility function that prints the ErrorStr() to stdout.
|
||||||
void PrintError() const;
|
void PrintError() const;
|
||||||
|
|
||||||
/// Return the line where the error occured, or zero if unknown.
|
/// Return the line where the error occurred, or zero if unknown.
|
||||||
int ErrorLineNum() const
|
int ErrorLineNum() const
|
||||||
{
|
{
|
||||||
return _errorLineNum;
|
return _errorLineNum;
|
||||||
@@ -1838,7 +1909,7 @@ public:
|
|||||||
char* Identify( char* p, XMLNode** node );
|
char* Identify( char* p, XMLNode** node );
|
||||||
|
|
||||||
// internal
|
// internal
|
||||||
void MarkInUse(XMLNode*);
|
void MarkInUse(const XMLNode* const);
|
||||||
|
|
||||||
virtual XMLNode* ShallowClone( XMLDocument* /*document*/ ) const {
|
virtual XMLNode* ShallowClone( XMLDocument* /*document*/ ) const {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1859,6 +1930,7 @@ private:
|
|||||||
int _errorLineNum;
|
int _errorLineNum;
|
||||||
char* _charBuffer;
|
char* _charBuffer;
|
||||||
int _parseCurLineNum;
|
int _parseCurLineNum;
|
||||||
|
int _parsingDepth;
|
||||||
// Memory tracking does add some overhead.
|
// Memory tracking does add some overhead.
|
||||||
// However, the code assumes that you don't
|
// However, the code assumes that you don't
|
||||||
// have a bunch of unlinked nodes around.
|
// have a bunch of unlinked nodes around.
|
||||||
@@ -1878,6 +1950,24 @@ private:
|
|||||||
|
|
||||||
void SetError( XMLError error, int lineNum, const char* format, ... );
|
void SetError( XMLError error, int lineNum, const char* format, ... );
|
||||||
|
|
||||||
|
// Something of an obvious security hole, once it was discovered.
|
||||||
|
// Either an ill-formed XML or an excessively deep one can overflow
|
||||||
|
// the stack. Track stack depth, and error out if needed.
|
||||||
|
class DepthTracker {
|
||||||
|
public:
|
||||||
|
explicit DepthTracker(XMLDocument * document) {
|
||||||
|
this->_document = document;
|
||||||
|
document->PushDepth();
|
||||||
|
}
|
||||||
|
~DepthTracker() {
|
||||||
|
_document->PopDepth();
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
XMLDocument * _document;
|
||||||
|
};
|
||||||
|
void PushDepth();
|
||||||
|
void PopDepth();
|
||||||
|
|
||||||
template<class NodeType, int PoolElementSize>
|
template<class NodeType, int PoolElementSize>
|
||||||
NodeType* CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool );
|
NodeType* CreateUnlinkedNode( MemPoolT<PoolElementSize>& pool );
|
||||||
};
|
};
|
||||||
@@ -1954,10 +2044,10 @@ class TINYXML2_LIB XMLHandle
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/// Create a handle from any node (at any depth of the tree.) This can be a null pointer.
|
/// Create a handle from any node (at any depth of the tree.) This can be a null pointer.
|
||||||
XMLHandle( XMLNode* node ) : _node( node ) {
|
explicit XMLHandle( XMLNode* node ) : _node( node ) {
|
||||||
}
|
}
|
||||||
/// Create a handle from a node.
|
/// Create a handle from a node.
|
||||||
XMLHandle( XMLNode& node ) : _node( &node ) {
|
explicit XMLHandle( XMLNode& node ) : _node( &node ) {
|
||||||
}
|
}
|
||||||
/// Copy constructor
|
/// Copy constructor
|
||||||
XMLHandle( const XMLHandle& ref ) : _node( ref._node ) {
|
XMLHandle( const XMLHandle& ref ) : _node( ref._node ) {
|
||||||
@@ -2034,9 +2124,9 @@ private:
|
|||||||
class TINYXML2_LIB XMLConstHandle
|
class TINYXML2_LIB XMLConstHandle
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
XMLConstHandle( const XMLNode* node ) : _node( node ) {
|
explicit XMLConstHandle( const XMLNode* node ) : _node( node ) {
|
||||||
}
|
}
|
||||||
XMLConstHandle( const XMLNode& node ) : _node( &node ) {
|
explicit XMLConstHandle( const XMLNode& node ) : _node( &node ) {
|
||||||
}
|
}
|
||||||
XMLConstHandle( const XMLConstHandle& ref ) : _node( ref._node ) {
|
XMLConstHandle( const XMLConstHandle& ref ) : _node( ref._node ) {
|
||||||
}
|
}
|
||||||
@@ -2158,6 +2248,7 @@ public:
|
|||||||
void PushAttribute( const char* name, int value );
|
void PushAttribute( const char* name, int value );
|
||||||
void PushAttribute( const char* name, unsigned value );
|
void PushAttribute( const char* name, unsigned value );
|
||||||
void PushAttribute( const char* name, int64_t value );
|
void PushAttribute( const char* name, int64_t value );
|
||||||
|
void PushAttribute( const char* name, uint64_t value );
|
||||||
void PushAttribute( const char* name, bool value );
|
void PushAttribute( const char* name, bool value );
|
||||||
void PushAttribute( const char* name, double value );
|
void PushAttribute( const char* name, double value );
|
||||||
/// If streaming, close the Element.
|
/// If streaming, close the Element.
|
||||||
@@ -2169,8 +2260,10 @@ public:
|
|||||||
void PushText( int value );
|
void PushText( int value );
|
||||||
/// Add a text node from an unsigned.
|
/// Add a text node from an unsigned.
|
||||||
void PushText( unsigned value );
|
void PushText( unsigned value );
|
||||||
/// Add a text node from an unsigned.
|
/// Add a text node from a signed 64bit integer.
|
||||||
void PushText( int64_t value );
|
void PushText( int64_t value );
|
||||||
|
/// Add a text node from an unsigned 64bit integer.
|
||||||
|
void PushText( uint64_t value );
|
||||||
/// Add a text node from a bool.
|
/// Add a text node from a bool.
|
||||||
void PushText( bool value );
|
void PushText( bool value );
|
||||||
/// Add a text node from a float.
|
/// Add a text node from a float.
|
||||||
@@ -2216,10 +2309,10 @@ public:
|
|||||||
If in print to memory mode, reset the buffer to the
|
If in print to memory mode, reset the buffer to the
|
||||||
beginning.
|
beginning.
|
||||||
*/
|
*/
|
||||||
void ClearBuffer() {
|
void ClearBuffer( bool resetToFirstElement = true ) {
|
||||||
_buffer.Clear();
|
_buffer.Clear();
|
||||||
_buffer.Push(0);
|
_buffer.Push(0);
|
||||||
_firstElement = true;
|
_firstElement = resetToFirstElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
prefix=@CMAKE_INSTALL_PREFIX@
|
prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
exec_prefix=${prefix}
|
exec_prefix=${prefix}
|
||||||
libdir=@CMAKE_INSTALL_LIBDIR@
|
libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||||
includedir=@CMAKE_INSTALL_INCLUDEDIR@
|
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||||
|
|
||||||
Name: TinyXML2
|
Name: TinyXML2
|
||||||
Description: simple, small, C++ XML parser
|
Description: simple, small, C++ XML parser
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug-Dll|Win32">
|
<ProjectConfiguration Include="Debug-Dll|Win32">
|
||||||
<Configuration>Debug-Dll</Configuration>
|
<Configuration>Debug-Dll</Configuration>
|
||||||
@@ -37,60 +37,60 @@
|
|||||||
<PropertyGroup Label="Globals">
|
<PropertyGroup Label="Globals">
|
||||||
<ProjectGuid>{E8FB2712-8666-4662-A5B8-2B5B0FB1A260}</ProjectGuid>
|
<ProjectGuid>{E8FB2712-8666-4662-A5B8-2B5B0FB1A260}</ProjectGuid>
|
||||||
<RootNamespace>test</RootNamespace>
|
<RootNamespace>test</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
<ProjectConfiguration Include="Debug-Dll|Win32">
|
<ProjectConfiguration Include="Debug-Dll|Win32">
|
||||||
<Configuration>Debug-Dll</Configuration>
|
<Configuration>Debug-Dll</Configuration>
|
||||||
@@ -38,60 +38,60 @@
|
|||||||
<ProjectGuid>{D1C528B6-AA02-4D29-9D61-DC08E317A70D}</ProjectGuid>
|
<ProjectGuid>{D1C528B6-AA02-4D29-9D61-DC08E317A70D}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>tinyxml2</RootNamespace>
|
<RootNamespace>tinyxml2</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Lib|x64'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug-Dll|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Lib|x64'" Label="Configuration">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release-Dll|x64'" Label="Configuration">
|
||||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v140</PlatformToolset>
|
<PlatformToolset>v142</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Label="Configuration" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||||
|
|||||||
@@ -137,7 +137,7 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
CONFIGURATION_BUILD_DIR = "$(SYMROOT)/Debug";
|
CONFIGURATION_BUILD_DIR = "$(SYMROOT)/Debug";
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
"GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = DEBUG;
|
"GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = TINYXML2_DEBUG;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
SYMROOT = build;
|
SYMROOT = build;
|
||||||
};
|
};
|
||||||
|
|||||||
346
xmltest.cpp
Normal file → Executable file
346
xmltest.cpp
Normal file → Executable file
@@ -82,8 +82,15 @@ template< class T > bool XMLTest( const char* testString, T expected, T found, b
|
|||||||
|
|
||||||
if ( !echo )
|
if ( !echo )
|
||||||
printf (" %s\n", testString);
|
printf (" %s\n", testString);
|
||||||
else
|
else {
|
||||||
printf (" %s [%d][%d]\n", testString, static_cast<int>(expected), static_cast<int>(found) );
|
char expectedAsString[64];
|
||||||
|
XMLUtil::ToStr(expected, expectedAsString, sizeof(expectedAsString));
|
||||||
|
|
||||||
|
char foundAsString[64];
|
||||||
|
XMLUtil::ToStr(found, foundAsString, sizeof(foundAsString));
|
||||||
|
|
||||||
|
printf (" %s [%s][%s]\n", testString, expectedAsString, foundAsString );
|
||||||
|
}
|
||||||
|
|
||||||
if ( pass )
|
if ( pass )
|
||||||
++gPass;
|
++gPass;
|
||||||
@@ -112,7 +119,7 @@ int example_1()
|
|||||||
|
|
||||||
return doc.ErrorID();
|
return doc.ErrorID();
|
||||||
}
|
}
|
||||||
/** @page Example-1 Load an XML File
|
/** @page Example_1 Load an XML File
|
||||||
* @dontinclude ./xmltest.cpp
|
* @dontinclude ./xmltest.cpp
|
||||||
* Basic XML file loading.
|
* Basic XML file loading.
|
||||||
* The basic syntax to load an XML file from
|
* The basic syntax to load an XML file from
|
||||||
@@ -131,7 +138,7 @@ int example_2()
|
|||||||
|
|
||||||
return doc.ErrorID();
|
return doc.ErrorID();
|
||||||
}
|
}
|
||||||
/** @page Example-2 Parse an XML from char buffer
|
/** @page Example_2 Parse an XML from char buffer
|
||||||
* @dontinclude ./xmltest.cpp
|
* @dontinclude ./xmltest.cpp
|
||||||
* Basic XML string parsing.
|
* Basic XML string parsing.
|
||||||
* The basic syntax to parse an XML for
|
* The basic syntax to parse an XML for
|
||||||
@@ -164,7 +171,7 @@ int example_3()
|
|||||||
|
|
||||||
return doc.ErrorID();
|
return doc.ErrorID();
|
||||||
}
|
}
|
||||||
/** @page Example-3 Get information out of XML
|
/** @page Example_3 Get information out of XML
|
||||||
@dontinclude ./xmltest.cpp
|
@dontinclude ./xmltest.cpp
|
||||||
In this example, we navigate a simple XML
|
In this example, we navigate a simple XML
|
||||||
file, and read some interesting text. Note
|
file, and read some interesting text. Note
|
||||||
@@ -255,7 +262,7 @@ bool example_4()
|
|||||||
|
|
||||||
return !doc.Error() && ( v0 == v1 );
|
return !doc.Error() && ( v0 == v1 );
|
||||||
}
|
}
|
||||||
/** @page Example-4 Read attributes and text information.
|
/** @page Example_4 Read attributes and text information.
|
||||||
@dontinclude ./xmltest.cpp
|
@dontinclude ./xmltest.cpp
|
||||||
|
|
||||||
There are fundamentally 2 ways of writing a key-value
|
There are fundamentally 2 ways of writing a key-value
|
||||||
@@ -292,7 +299,7 @@ bool example_4()
|
|||||||
|
|
||||||
int main( int argc, const char ** argv )
|
int main( int argc, const char ** argv )
|
||||||
{
|
{
|
||||||
#if defined( _MSC_VER ) && defined( DEBUG )
|
#if defined( _MSC_VER ) && defined( TINYXML2_DEBUG )
|
||||||
_CrtMemCheckpoint( &startMemState );
|
_CrtMemCheckpoint( &startMemState );
|
||||||
// Enable MS Visual C++ debug heap memory leaks dump on exit
|
// Enable MS Visual C++ debug heap memory leaks dump on exit
|
||||||
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
|
_CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF);
|
||||||
@@ -338,10 +345,10 @@ int main( int argc, const char ** argv )
|
|||||||
}
|
}
|
||||||
fclose( fp );
|
fclose( fp );
|
||||||
|
|
||||||
XMLTest( "Example-1", 0, example_1() );
|
XMLTest( "Example_1", 0, example_1() );
|
||||||
XMLTest( "Example-2", 0, example_2() );
|
XMLTest( "Example_2", 0, example_2() );
|
||||||
XMLTest( "Example-3", 0, example_3() );
|
XMLTest( "Example_3", 0, example_3() );
|
||||||
XMLTest( "Example-4", true, example_4() );
|
XMLTest( "Example_4", true, example_4() );
|
||||||
|
|
||||||
/* ------ Example 2: Lookup information. ---- */
|
/* ------ Example 2: Lookup information. ---- */
|
||||||
|
|
||||||
@@ -454,9 +461,9 @@ int main( int argc, const char ** argv )
|
|||||||
// Build:
|
// Build:
|
||||||
// <element>
|
// <element>
|
||||||
// <!--comment-->
|
// <!--comment-->
|
||||||
|
// <sub attrib="0" />
|
||||||
// <sub attrib="1" />
|
// <sub attrib="1" />
|
||||||
// <sub attrib="2" />
|
// <sub attrib="2" >& Text!</sub>
|
||||||
// <sub attrib="3" >& Text!</sub>
|
|
||||||
// <element>
|
// <element>
|
||||||
|
|
||||||
XMLDocument* doc = new XMLDocument();
|
XMLDocument* doc = new XMLDocument();
|
||||||
@@ -535,7 +542,7 @@ int main( int argc, const char ** argv )
|
|||||||
|
|
||||||
XMLTest( "Dream", "xml version=\"1.0\"",
|
XMLTest( "Dream", "xml version=\"1.0\"",
|
||||||
doc.FirstChild()->ToDeclaration()->Value() );
|
doc.FirstChild()->ToDeclaration()->Value() );
|
||||||
XMLTest( "Dream", true, doc.FirstChild()->NextSibling()->ToUnknown() ? true : false );
|
XMLTest( "Dream", true, doc.FirstChild()->NextSibling()->ToUnknown() != 0 );
|
||||||
XMLTest( "Dream", "DOCTYPE PLAY SYSTEM \"play.dtd\"",
|
XMLTest( "Dream", "DOCTYPE PLAY SYSTEM \"play.dtd\"",
|
||||||
doc.FirstChild()->NextSibling()->ToUnknown()->Value() );
|
doc.FirstChild()->NextSibling()->ToUnknown()->Value() );
|
||||||
XMLTest( "Dream", "And Robin shall restore amends.",
|
XMLTest( "Dream", "And Robin shall restore amends.",
|
||||||
@@ -548,7 +555,7 @@ int main( int argc, const char ** argv )
|
|||||||
XMLTest( "Load dreamout.xml", false, doc2.Error() );
|
XMLTest( "Load dreamout.xml", false, doc2.Error() );
|
||||||
XMLTest( "Dream-out", "xml version=\"1.0\"",
|
XMLTest( "Dream-out", "xml version=\"1.0\"",
|
||||||
doc2.FirstChild()->ToDeclaration()->Value() );
|
doc2.FirstChild()->ToDeclaration()->Value() );
|
||||||
XMLTest( "Dream-out", true, doc2.FirstChild()->NextSibling()->ToUnknown() ? true : false );
|
XMLTest( "Dream-out", true, doc2.FirstChild()->NextSibling()->ToUnknown() != 0 );
|
||||||
XMLTest( "Dream-out", "DOCTYPE PLAY SYSTEM \"play.dtd\"",
|
XMLTest( "Dream-out", "DOCTYPE PLAY SYSTEM \"play.dtd\"",
|
||||||
doc2.FirstChild()->NextSibling()->ToUnknown()->Value() );
|
doc2.FirstChild()->NextSibling()->ToUnknown()->Value() );
|
||||||
XMLTest( "Dream-out", "And Robin shall restore amends.",
|
XMLTest( "Dream-out", "And Robin shall restore amends.",
|
||||||
@@ -567,6 +574,10 @@ int main( int argc, const char ** argv )
|
|||||||
XMLDocument doc;
|
XMLDocument doc;
|
||||||
doc.Parse( error );
|
doc.Parse( error );
|
||||||
XMLTest( "Bad XML", XML_ERROR_PARSING_ATTRIBUTE, doc.ErrorID() );
|
XMLTest( "Bad XML", XML_ERROR_PARSING_ATTRIBUTE, doc.ErrorID() );
|
||||||
|
const char* errorStr = doc.ErrorStr();
|
||||||
|
XMLTest("Formatted error string",
|
||||||
|
"Error=XML_ERROR_PARSING_ATTRIBUTE ErrorID=7 (0x7) Line number=3: XMLElement name=wrong",
|
||||||
|
errorStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -793,6 +804,7 @@ int main( int argc, const char ** argv )
|
|||||||
// ---------- Attributes ---------
|
// ---------- Attributes ---------
|
||||||
{
|
{
|
||||||
static const int64_t BIG = -123456789012345678;
|
static const int64_t BIG = -123456789012345678;
|
||||||
|
static const uint64_t BIG_POS = 123456789012345678;
|
||||||
XMLDocument doc;
|
XMLDocument doc;
|
||||||
XMLElement* element = doc.NewElement("element");
|
XMLElement* element = doc.NewElement("element");
|
||||||
doc.InsertFirstChild(element);
|
doc.InsertFirstChild(element);
|
||||||
@@ -827,6 +839,14 @@ int main( int argc, const char ** argv )
|
|||||||
XMLTest("Attribute: unsigned", (int)XML_SUCCESS, queryResult, true);
|
XMLTest("Attribute: unsigned", (int)XML_SUCCESS, queryResult, true);
|
||||||
XMLTest("Attribute: unsigned", unsigned(100), v, true);
|
XMLTest("Attribute: unsigned", unsigned(100), v, true);
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
const char* v = "failed";
|
||||||
|
XMLError queryResult = element->QueryStringAttribute("not-attrib", &v);
|
||||||
|
XMLTest("Attribute: string default", false, queryResult == XML_SUCCESS);
|
||||||
|
queryResult = element->QueryStringAttribute("attrib", &v);
|
||||||
|
XMLTest("Attribute: string", XML_SUCCESS, queryResult, true);
|
||||||
|
XMLTest("Attribute: string", "100", v);
|
||||||
|
}
|
||||||
XMLTest("Attribute: unsigned", unsigned(100), element->UnsignedAttribute("attrib"), true);
|
XMLTest("Attribute: unsigned", unsigned(100), element->UnsignedAttribute("attrib"), true);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
@@ -845,6 +865,22 @@ int main( int argc, const char ** argv )
|
|||||||
}
|
}
|
||||||
XMLTest("Attribute: int64_t", BIG, element->Int64Attribute("attrib"), true);
|
XMLTest("Attribute: int64_t", BIG, element->Int64Attribute("attrib"), true);
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
element->SetAttribute("attrib", BIG_POS);
|
||||||
|
{
|
||||||
|
uint64_t v = 0;
|
||||||
|
XMLError queryResult = element->QueryUnsigned64Attribute("attrib", &v);
|
||||||
|
XMLTest("Attribute: uint64_t", XML_SUCCESS, queryResult, true);
|
||||||
|
XMLTest("Attribute: uint64_t", BIG_POS, v, true);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
uint64_t v = 0;
|
||||||
|
int queryResult = element->QueryAttribute("attrib", &v);
|
||||||
|
XMLTest("Attribute: uint64_t", (int)XML_SUCCESS, queryResult, true);
|
||||||
|
XMLTest("Attribute: uint64_t", BIG_POS, v, true);
|
||||||
|
}
|
||||||
|
XMLTest("Attribute: uint64_t", BIG_POS, element->Unsigned64Attribute("attrib"), true);
|
||||||
|
}
|
||||||
{
|
{
|
||||||
element->SetAttribute("attrib", true);
|
element->SetAttribute("attrib", true);
|
||||||
{
|
{
|
||||||
@@ -912,6 +948,13 @@ int main( int argc, const char ** argv )
|
|||||||
XMLTest("Element: int64_t", XML_SUCCESS, queryResult, true);
|
XMLTest("Element: int64_t", XML_SUCCESS, queryResult, true);
|
||||||
XMLTest("Element: int64_t", BIG, v, true);
|
XMLTest("Element: int64_t", BIG, v, true);
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
element->SetText(BIG_POS);
|
||||||
|
uint64_t v = 0;
|
||||||
|
XMLError queryResult = element->QueryUnsigned64Text(&v);
|
||||||
|
XMLTest("Element: uint64_t", XML_SUCCESS, queryResult, true);
|
||||||
|
XMLTest("Element: uint64_t", BIG_POS, v, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------- XMLPrinter stream mode ------
|
// ---------- XMLPrinter stream mode ------
|
||||||
@@ -925,6 +968,7 @@ int main( int argc, const char ** argv )
|
|||||||
printer.PushAttribute("attrib-int", int(1));
|
printer.PushAttribute("attrib-int", int(1));
|
||||||
printer.PushAttribute("attrib-unsigned", unsigned(2));
|
printer.PushAttribute("attrib-unsigned", unsigned(2));
|
||||||
printer.PushAttribute("attrib-int64", int64_t(3));
|
printer.PushAttribute("attrib-int64", int64_t(3));
|
||||||
|
printer.PushAttribute("attrib-uint64", uint64_t(37));
|
||||||
printer.PushAttribute("attrib-bool", true);
|
printer.PushAttribute("attrib-bool", true);
|
||||||
printer.PushAttribute("attrib-double", 4.0);
|
printer.PushAttribute("attrib-double", 4.0);
|
||||||
printer.CloseElement();
|
printer.CloseElement();
|
||||||
@@ -945,12 +989,111 @@ int main( int argc, const char ** argv )
|
|||||||
XMLTest("attrib-unsigned", unsigned(2), attrib->UnsignedValue(), true);
|
XMLTest("attrib-unsigned", unsigned(2), attrib->UnsignedValue(), true);
|
||||||
attrib = cdoc.FirstChildElement("foo")->FindAttribute("attrib-int64");
|
attrib = cdoc.FirstChildElement("foo")->FindAttribute("attrib-int64");
|
||||||
XMLTest("attrib-int64", int64_t(3), attrib->Int64Value(), true);
|
XMLTest("attrib-int64", int64_t(3), attrib->Int64Value(), true);
|
||||||
|
attrib = cdoc.FirstChildElement("foo")->FindAttribute("attrib-uint64");
|
||||||
|
XMLTest("attrib-uint64", uint64_t(37), attrib->Unsigned64Value(), true);
|
||||||
attrib = cdoc.FirstChildElement("foo")->FindAttribute("attrib-bool");
|
attrib = cdoc.FirstChildElement("foo")->FindAttribute("attrib-bool");
|
||||||
XMLTest("attrib-bool", true, attrib->BoolValue(), true);
|
XMLTest("attrib-bool", true, attrib->BoolValue(), true);
|
||||||
attrib = cdoc.FirstChildElement("foo")->FindAttribute("attrib-double");
|
attrib = cdoc.FirstChildElement("foo")->FindAttribute("attrib-double");
|
||||||
XMLTest("attrib-double", 4.0, attrib->DoubleValue(), true);
|
XMLTest("attrib-double", 4.0, attrib->DoubleValue(), true);
|
||||||
}
|
}
|
||||||
|
// Add API_testcatse :PushDeclaration();PushText();PushComment()
|
||||||
|
{
|
||||||
|
FILE* fp1 = fopen("resources/out/printer_1.xml", "w");
|
||||||
|
XMLPrinter printer(fp1);
|
||||||
|
|
||||||
|
printer.PushDeclaration("version = '1.0' enconding = 'utf-8'");
|
||||||
|
|
||||||
|
printer.OpenElement("foo");
|
||||||
|
printer.PushAttribute("attrib-text", "text");
|
||||||
|
|
||||||
|
printer.OpenElement("text");
|
||||||
|
printer.PushText("Tinyxml2");
|
||||||
|
printer.CloseElement();
|
||||||
|
|
||||||
|
printer.OpenElement("int");
|
||||||
|
printer.PushText(int(11));
|
||||||
|
printer.CloseElement();
|
||||||
|
|
||||||
|
printer.OpenElement("unsigned");
|
||||||
|
printer.PushText(unsigned(12));
|
||||||
|
printer.CloseElement();
|
||||||
|
|
||||||
|
printer.OpenElement("int64_t");
|
||||||
|
printer.PushText(int64_t(13));
|
||||||
|
printer.CloseElement();
|
||||||
|
|
||||||
|
printer.OpenElement("uint64_t");
|
||||||
|
printer.PushText(uint64_t(14));
|
||||||
|
printer.CloseElement();
|
||||||
|
|
||||||
|
printer.OpenElement("bool");
|
||||||
|
printer.PushText(true);
|
||||||
|
printer.CloseElement();
|
||||||
|
|
||||||
|
printer.OpenElement("float");
|
||||||
|
printer.PushText("1.56");
|
||||||
|
printer.CloseElement();
|
||||||
|
|
||||||
|
printer.OpenElement("double");
|
||||||
|
printer.PushText("12.12");
|
||||||
|
printer.CloseElement();
|
||||||
|
|
||||||
|
printer.OpenElement("comment");
|
||||||
|
printer.PushComment("this is Tinyxml2");
|
||||||
|
printer.CloseElement();
|
||||||
|
|
||||||
|
printer.CloseElement();
|
||||||
|
fclose(fp1);
|
||||||
|
}
|
||||||
|
{
|
||||||
|
XMLDocument doc;
|
||||||
|
doc.LoadFile("resources/out/printer_1.xml");
|
||||||
|
XMLTest("XMLPrinter Stream mode: load", XML_SUCCESS, doc.ErrorID(), true);
|
||||||
|
|
||||||
|
const XMLDocument& cdoc = doc;
|
||||||
|
|
||||||
|
const XMLElement* root = cdoc.FirstChildElement("foo");
|
||||||
|
|
||||||
|
const char* text_value;
|
||||||
|
text_value = root->FirstChildElement("text")->GetText();
|
||||||
|
XMLTest("PushText( const char* text, bool cdata=false ) test", "Tinyxml2", text_value);
|
||||||
|
|
||||||
|
int int_value;
|
||||||
|
int_value = root->FirstChildElement("int")->IntText();
|
||||||
|
XMLTest("PushText( int value ) test", 11, int_value);
|
||||||
|
|
||||||
|
unsigned unsigned_value;
|
||||||
|
unsigned_value = root->FirstChildElement("unsigned")->UnsignedText();
|
||||||
|
XMLTest("PushText( unsigned value ) test", (unsigned)12, unsigned_value);
|
||||||
|
|
||||||
|
int64_t int64_t_value;
|
||||||
|
int64_t_value = root->FirstChildElement("int64_t")->Int64Text();
|
||||||
|
XMLTest("PushText( int64_t value ) test", (int64_t) 13, int64_t_value);
|
||||||
|
|
||||||
|
uint64_t uint64_t_value;
|
||||||
|
uint64_t_value = root->FirstChildElement("uint64_t")->Unsigned64Text();
|
||||||
|
XMLTest("PushText( uint64_t value ) test", (uint64_t) 14, uint64_t_value);
|
||||||
|
|
||||||
|
float float_value;
|
||||||
|
float_value = root->FirstChildElement("float")->FloatText();
|
||||||
|
XMLTest("PushText( float value ) test", 1.56f, float_value);
|
||||||
|
|
||||||
|
double double_value;
|
||||||
|
double_value = root->FirstChildElement("double")->DoubleText();
|
||||||
|
XMLTest("PushText( double value ) test", 12.12, double_value);
|
||||||
|
|
||||||
|
bool bool_value;
|
||||||
|
bool_value = root->FirstChildElement("bool")->BoolText();
|
||||||
|
XMLTest("PushText( bool value ) test", true, bool_value);
|
||||||
|
|
||||||
|
const XMLComment* comment = root->FirstChildElement("comment")->FirstChild()->ToComment();
|
||||||
|
const char* comment_value = comment->Value();
|
||||||
|
XMLTest("PushComment() test", "this is Tinyxml2", comment_value);
|
||||||
|
|
||||||
|
const XMLDeclaration* declaration = cdoc.FirstChild()->ToDeclaration();
|
||||||
|
const char* declaration_value = declaration->Value();
|
||||||
|
XMLTest("PushDeclaration() test", "version = '1.0' enconding = 'utf-8'", declaration_value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1160,6 +1303,12 @@ int main( int argc, const char ** argv )
|
|||||||
XMLDocument doc;
|
XMLDocument doc;
|
||||||
doc.Parse( str );
|
doc.Parse( str );
|
||||||
XMLTest( "Empty document error", XML_ERROR_EMPTY_DOCUMENT, doc.ErrorID() );
|
XMLTest( "Empty document error", XML_ERROR_EMPTY_DOCUMENT, doc.ErrorID() );
|
||||||
|
|
||||||
|
// But be sure there is an error string!
|
||||||
|
const char* errorStr = doc.ErrorStr();
|
||||||
|
XMLTest("Error string should be set",
|
||||||
|
"Error=XML_ERROR_EMPTY_DOCUMENT ErrorID=13 (0xd) Line number=0",
|
||||||
|
errorStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -1238,7 +1387,7 @@ int main( int argc, const char ** argv )
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
// trying to repro ]1874301]. If it doesn't go into an infinite loop, all is well.
|
// trying to repro [1874301]. If it doesn't go into an infinite loop, all is well.
|
||||||
unsigned char buf[] = "<?xml version=\"1.0\" encoding=\"utf-8\"?><feed><![CDATA[Test XMLblablablalblbl";
|
unsigned char buf[] = "<?xml version=\"1.0\" encoding=\"utf-8\"?><feed><![CDATA[Test XMLblablablalblbl";
|
||||||
buf[60] = 239;
|
buf[60] = 239;
|
||||||
buf[61] = 0;
|
buf[61] = 0;
|
||||||
@@ -1452,28 +1601,31 @@ int main( int argc, const char ** argv )
|
|||||||
static const char* xml = "<element attrib='bar'><sub>Text</sub></element>";
|
static const char* xml = "<element attrib='bar'><sub>Text</sub></element>";
|
||||||
XMLDocument doc;
|
XMLDocument doc;
|
||||||
doc.Parse( xml );
|
doc.Parse( xml );
|
||||||
XMLTest( "Parse element with attribute and nested element round 1", false, doc.Error() );
|
XMLTest( "Handle, parse element with attribute and nested element", false, doc.Error() );
|
||||||
|
|
||||||
|
{
|
||||||
XMLElement* ele = XMLHandle( doc ).FirstChildElement( "element" ).FirstChild().ToElement();
|
XMLElement* ele = XMLHandle( doc ).FirstChildElement( "element" ).FirstChild().ToElement();
|
||||||
XMLTest( "Handle, success, mutable", "sub", ele->Value() );
|
XMLTest( "Handle, non-const, element is found", true, ele != 0 );
|
||||||
|
XMLTest( "Handle, non-const, element name matches", "sub", ele->Value() );
|
||||||
XMLHandle docH( doc );
|
}
|
||||||
ele = docH.FirstChildElement( "none" ).FirstChildElement( "element" ).ToElement();
|
|
||||||
XMLTest( "Handle, dne, mutable", true, ele == 0 );
|
{
|
||||||
|
XMLHandle docH( doc );
|
||||||
|
XMLElement* ele = docH.FirstChildElement( "noSuchElement" ).FirstChildElement( "element" ).ToElement();
|
||||||
|
XMLTest( "Handle, non-const, element not found", true, ele == 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const XMLElement* ele = XMLConstHandle( doc ).FirstChildElement( "element" ).FirstChild().ToElement();
|
||||||
|
XMLTest( "Handle, const, element is found", true, ele != 0 );
|
||||||
|
XMLTest( "Handle, const, element name matches", "sub", ele->Value() );
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
static const char* xml = "<element attrib='bar'><sub>Text</sub></element>";
|
|
||||||
XMLDocument doc;
|
|
||||||
doc.Parse( xml );
|
|
||||||
XMLTest( "Parse element with attribute and nested element round 2", false, doc.Error() );
|
|
||||||
XMLConstHandle docH( doc );
|
XMLConstHandle docH( doc );
|
||||||
|
const XMLElement* ele = docH.FirstChildElement( "noSuchElement" ).FirstChildElement( "element" ).ToElement();
|
||||||
const XMLElement* ele = docH.FirstChildElement( "element" ).FirstChild().ToElement();
|
XMLTest( "Handle, const, element not found", true, ele == 0 );
|
||||||
XMLTest( "Handle, success, const", "sub", ele->Value() );
|
}
|
||||||
|
|
||||||
ele = docH.FirstChildElement( "none" ).FirstChildElement( "element" ).ToElement();
|
|
||||||
XMLTest( "Handle, dne, const", true, ele == 0 );
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
// Default Declaration & BOM
|
// Default Declaration & BOM
|
||||||
@@ -1495,6 +1647,70 @@ int main( int argc, const char ** argv )
|
|||||||
XMLTest( "Ill formed XML", true, doc.Error() );
|
XMLTest( "Ill formed XML", true, doc.Error() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
//API:IntText(),UnsignedText(),Int64Text(),DoubleText(),BoolText() and FloatText() test
|
||||||
|
const char* xml = "<point> <IntText>-24</IntText> <UnsignedText>42</UnsignedText> \
|
||||||
|
<Int64Text>38</Int64Text> <BoolText>true</BoolText> <DoubleText>2.35</DoubleText> </point>";
|
||||||
|
XMLDocument doc;
|
||||||
|
doc.Parse(xml);
|
||||||
|
|
||||||
|
const XMLElement* pointElement = doc.RootElement();
|
||||||
|
int test1 = pointElement->FirstChildElement("IntText")->IntText();
|
||||||
|
XMLTest("IntText() test", -24, test1);
|
||||||
|
|
||||||
|
unsigned test2 = pointElement->FirstChildElement("UnsignedText")->UnsignedText();
|
||||||
|
XMLTest("UnsignedText() test", static_cast<unsigned>(42), test2);
|
||||||
|
|
||||||
|
int64_t test3 = pointElement->FirstChildElement("Int64Text")->Int64Text();
|
||||||
|
XMLTest("Int64Text() test", static_cast<int64_t>(38), test3);
|
||||||
|
|
||||||
|
double test4 = pointElement->FirstChildElement("DoubleText")->DoubleText();
|
||||||
|
XMLTest("DoubleText() test", 2.35, test4);
|
||||||
|
|
||||||
|
float test5 = pointElement->FirstChildElement("DoubleText")->FloatText();
|
||||||
|
XMLTest("FloatText()) test", 2.35f, test5);
|
||||||
|
|
||||||
|
bool test6 = pointElement->FirstChildElement("BoolText")->BoolText();
|
||||||
|
XMLTest("FloatText()) test", true, test6);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
//API:ShallowEqual() test
|
||||||
|
const char* xml = "<playlist id = 'playlist'>"
|
||||||
|
"<property name = 'track_name'>voice</property>"
|
||||||
|
"</playlist>";
|
||||||
|
XMLDocument doc;
|
||||||
|
doc.Parse( xml );
|
||||||
|
const XMLNode* PlaylistNode = doc.RootElement();
|
||||||
|
const XMLNode* PropertyNode = PlaylistNode->FirstChildElement();
|
||||||
|
bool result;
|
||||||
|
result = PlaylistNode->ShallowEqual(PropertyNode);
|
||||||
|
XMLTest("ShallowEqual() test",false,result);
|
||||||
|
result = PlaylistNode->ShallowEqual(PlaylistNode);
|
||||||
|
XMLTest("ShallowEqual() test",true,result);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
//API: previousSiblingElement() and NextSiblingElement() test
|
||||||
|
const char* xml = "<playlist id = 'playlist'>"
|
||||||
|
"<property name = 'track_name'>voice</property>"
|
||||||
|
"<entry out = '946' producer = '2_playlist1' in = '0'/>"
|
||||||
|
"<blank length = '1'/>"
|
||||||
|
"</playlist>";
|
||||||
|
XMLDocument doc;
|
||||||
|
doc.Parse( xml );
|
||||||
|
XMLElement* ElementPlaylist = doc.FirstChildElement("playlist");
|
||||||
|
XMLTest("previousSiblingElement() test",true,ElementPlaylist != 0);
|
||||||
|
const XMLElement* pre = ElementPlaylist->PreviousSiblingElement();
|
||||||
|
XMLTest("previousSiblingElement() test",true,pre == 0);
|
||||||
|
const XMLElement* ElementBlank = ElementPlaylist->FirstChildElement("entry")->NextSiblingElement("blank");
|
||||||
|
XMLTest("NextSiblingElement() test",true,ElementBlank != 0);
|
||||||
|
const XMLElement* next = ElementBlank->NextSiblingElement();
|
||||||
|
XMLTest("NextSiblingElement() test",true,next == 0);
|
||||||
|
const XMLElement* ElementEntry = ElementBlank->PreviousSiblingElement("entry");
|
||||||
|
XMLTest("PreviousSiblingElement test",true,ElementEntry != 0);
|
||||||
|
}
|
||||||
|
|
||||||
// QueryXYZText
|
// QueryXYZText
|
||||||
{
|
{
|
||||||
const char* xml = "<point> <x>1.2</x> <y>1</y> <z>38</z> <valid>true</valid> </point>";
|
const char* xml = "<point> <x>1.2</x> <y>1</y> <z>38</z> <valid>true</valid> </point>";
|
||||||
@@ -1674,12 +1890,12 @@ int main( int argc, const char ** argv )
|
|||||||
doc.Print( &printer );
|
doc.Print( &printer );
|
||||||
|
|
||||||
XMLTest( "BOM preservation (compare)", xml_bom_preservation, printer.CStr(), false, true );
|
XMLTest( "BOM preservation (compare)", xml_bom_preservation, printer.CStr(), false, true );
|
||||||
doc.SaveFile( "resources/bomtest.xml" );
|
doc.SaveFile( "resources/out/bomtest.xml" );
|
||||||
XMLTest( "Save bomtest.xml", false, doc.Error() );
|
XMLTest( "Save bomtest.xml", false, doc.Error() );
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
XMLDocument doc;
|
XMLDocument doc;
|
||||||
doc.LoadFile( "resources/bomtest.xml" );
|
doc.LoadFile( "resources/out/bomtest.xml" );
|
||||||
XMLTest( "Load bomtest.xml", false, doc.Error() );
|
XMLTest( "Load bomtest.xml", false, doc.Error() );
|
||||||
XMLTest( "BOM preservation (load)", true, doc.HasBOM(), false );
|
XMLTest( "BOM preservation (load)", true, doc.HasBOM(), false );
|
||||||
|
|
||||||
@@ -1761,6 +1977,7 @@ int main( int argc, const char ** argv )
|
|||||||
XMLTest( "Insertion with removal parse round 4", false, doc.Error() );
|
XMLTest( "Insertion with removal parse round 4", false, doc.Error() );
|
||||||
subtree = doc.RootElement()->FirstChildElement("one")->FirstChildElement("subtree");
|
subtree = doc.RootElement()->FirstChildElement("one")->FirstChildElement("subtree");
|
||||||
two = doc.RootElement()->FirstChildElement("two");
|
two = doc.RootElement()->FirstChildElement("two");
|
||||||
|
XMLTest("<two> is the last child at root level", true, two == doc.RootElement()->LastChildElement());
|
||||||
doc.RootElement()->InsertEndChild(subtree);
|
doc.RootElement()->InsertEndChild(subtree);
|
||||||
XMLPrinter printer4(0, true);
|
XMLPrinter printer4(0, true);
|
||||||
acceptResult = doc.Accept(&printer4);
|
acceptResult = doc.Accept(&printer4);
|
||||||
@@ -1843,7 +2060,7 @@ int main( int argc, const char ** argv )
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
// If this doesn't assert in DEBUG, all is well.
|
// If this doesn't assert in TINYXML2_DEBUG, all is well.
|
||||||
tinyxml2::XMLDocument doc;
|
tinyxml2::XMLDocument doc;
|
||||||
tinyxml2::XMLElement *pRoot = doc.NewElement("Root");
|
tinyxml2::XMLElement *pRoot = doc.NewElement("Root");
|
||||||
doc.DeleteNode(pRoot);
|
doc.DeleteNode(pRoot);
|
||||||
@@ -1858,7 +2075,7 @@ int main( int argc, const char ** argv )
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
// If this doesn't assert in DEBUG, all is well.
|
// If this doesn't assert in TINYXML2_DEBUG, all is well.
|
||||||
XMLDocument doc;
|
XMLDocument doc;
|
||||||
XMLElement* unlinkedRoot = doc.NewElement( "Root" );
|
XMLElement* unlinkedRoot = doc.NewElement( "Root" );
|
||||||
XMLElement* linkedRoot = doc.NewElement( "Root" );
|
XMLElement* linkedRoot = doc.NewElement( "Root" );
|
||||||
@@ -1868,7 +2085,7 @@ int main( int argc, const char ** argv )
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
// Should not assert in DEBUG
|
// Should not assert in TINYXML2_DEBUG
|
||||||
XMLPrinter printer;
|
XMLPrinter printer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1936,7 +2153,7 @@ int main( int argc, const char ** argv )
|
|||||||
doc.Parse(xml1);
|
doc.Parse(xml1);
|
||||||
XMLTest("Test that the second declaration is allowed", false, doc.Error() );
|
XMLTest("Test that the second declaration is allowed", false, doc.Error() );
|
||||||
doc.Parse(xml2);
|
doc.Parse(xml2);
|
||||||
XMLTest("Test that declaration after a child is not allowed", XML_ERROR_PARSING_DECLARATION, doc.ErrorID() );
|
XMLTest("Test that declaration after self-closed child is not allowed", XML_ERROR_PARSING_DECLARATION, doc.ErrorID() );
|
||||||
doc.Parse(xml3);
|
doc.Parse(xml3);
|
||||||
XMLTest("Test that declaration after a child is not allowed", XML_ERROR_PARSING_DECLARATION, doc.ErrorID() );
|
XMLTest("Test that declaration after a child is not allowed", XML_ERROR_PARSING_DECLARATION, doc.ErrorID() );
|
||||||
doc.Parse(xml4);
|
doc.Parse(xml4);
|
||||||
@@ -1946,7 +2163,7 @@ int main( int argc, const char ** argv )
|
|||||||
{
|
{
|
||||||
// No matter - before or after successfully parsing a text -
|
// No matter - before or after successfully parsing a text -
|
||||||
// calling XMLDocument::Value() used to cause an assert in debug.
|
// calling XMLDocument::Value() used to cause an assert in debug.
|
||||||
// Null must be retured.
|
// Null must be returned.
|
||||||
const char* validXml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"
|
const char* validXml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"
|
||||||
"<first />"
|
"<first />"
|
||||||
"<second />";
|
"<second />";
|
||||||
@@ -1963,9 +2180,26 @@ int main( int argc, const char ** argv )
|
|||||||
for( int i = 0; i < XML_ERROR_COUNT; i++ ) {
|
for( int i = 0; i < XML_ERROR_COUNT; i++ ) {
|
||||||
const XMLError error = static_cast<XMLError>(i);
|
const XMLError error = static_cast<XMLError>(i);
|
||||||
const char* name = XMLDocument::ErrorIDToName(error);
|
const char* name = XMLDocument::ErrorIDToName(error);
|
||||||
XMLTest( "ErrorName() after ClearError()", true, name != 0 );
|
XMLTest( "ErrorName() not null after ClearError()", true, name != 0 );
|
||||||
XMLTest( "ErrorName() after ClearError()", true, strlen(name) > 0 );
|
if( name == 0 ) {
|
||||||
|
// passing null pointer into strlen() is undefined behavior, so
|
||||||
|
// compiler is allowed to optimise away the null test above if it's
|
||||||
|
// as reachable as the strlen() call
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
XMLTest( "ErrorName() not empty after ClearError()", true, strlen(name) > 0 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
const char* html("<!DOCTYPE html><html><body><p>test</p><p><br/></p></body></html>");
|
||||||
|
XMLDocument doc(false);
|
||||||
|
doc.Parse(html);
|
||||||
|
|
||||||
|
XMLPrinter printer(0, true);
|
||||||
|
doc.Print(&printer);
|
||||||
|
|
||||||
|
XMLTest(html, html, printer.CStr());
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -1998,6 +2232,32 @@ int main( int argc, const char ** argv )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// Bad bad crash. Parsing error results in stack overflow, if uncaught.
|
||||||
|
const char* TESTS[] = {
|
||||||
|
"./resources/xmltest-5330.xml",
|
||||||
|
"./resources/xmltest-4636783552757760.xml",
|
||||||
|
"./resources/xmltest-5720541257269248.xml",
|
||||||
|
0
|
||||||
|
};
|
||||||
|
for (int i=0; TESTS[i]; ++i) {
|
||||||
|
XMLDocument doc;
|
||||||
|
doc.LoadFile(TESTS[i]);
|
||||||
|
XMLTest("Stack overflow prevented.", XML_ELEMENT_DEPTH_EXCEEDED, doc.ErrorID());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{
|
||||||
|
const char* TESTS[] = {
|
||||||
|
"./resources/xmltest-5662204197076992.xml", // Security-level performance issue.
|
||||||
|
0
|
||||||
|
};
|
||||||
|
for (int i = 0; TESTS[i]; ++i) {
|
||||||
|
XMLDocument doc;
|
||||||
|
doc.LoadFile(TESTS[i]);
|
||||||
|
// Need only not crash / lock up.
|
||||||
|
XMLTest("Fuzz attack prevented.", true, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
{
|
{
|
||||||
// Crashing reported via email.
|
// Crashing reported via email.
|
||||||
const char* xml =
|
const char* xml =
|
||||||
@@ -2248,7 +2508,7 @@ int main( int argc, const char ** argv )
|
|||||||
delete[] mem;
|
delete[] mem;
|
||||||
|
|
||||||
static const char* note =
|
static const char* note =
|
||||||
#ifdef DEBUG
|
#ifdef TINYXML2_DEBUG
|
||||||
"DEBUG";
|
"DEBUG";
|
||||||
#else
|
#else
|
||||||
"Release";
|
"Release";
|
||||||
@@ -2262,7 +2522,7 @@ int main( int argc, const char ** argv )
|
|||||||
printf("\nParsing dream.xml (%s): %.3f milli-seconds\n", note, duration);
|
printf("\nParsing dream.xml (%s): %.3f milli-seconds\n", note, duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined( _MSC_VER ) && defined( DEBUG )
|
#if defined( _MSC_VER ) && defined( TINYXML2_DEBUG )
|
||||||
{
|
{
|
||||||
_CrtMemCheckpoint( &endMemState );
|
_CrtMemCheckpoint( &endMemState );
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user