Xml: Prepare replacement of irrXml.
parent
5b6fe80883
commit
db3bb22933
|
@ -2,3 +2,5 @@
|
||||||
if( NOT SYSTEM_IRRXML )
|
if( NOT SYSTEM_IRRXML )
|
||||||
add_subdirectory(irrXML)
|
add_subdirectory(irrXML)
|
||||||
endif( NOT SYSTEM_IRRXML )
|
endif( NOT SYSTEM_IRRXML )
|
||||||
|
|
||||||
|
add_subdirectory( pugixml-1.9 )
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
cmake_minimum_required(VERSION 2.8.12)
|
||||||
|
|
||||||
|
project(pugixml)
|
||||||
|
|
||||||
|
option(BUILD_SHARED_LIBS "Build shared instead of static library" OFF)
|
||||||
|
option(BUILD_TESTS "Build tests" OFF)
|
||||||
|
option(BUILD_PKGCONFIG "Build in PKGCONFIG mode" OFF)
|
||||||
|
|
||||||
|
set(BUILD_DEFINES "" CACHE STRING "Build defines")
|
||||||
|
|
||||||
|
if(MSVC)
|
||||||
|
option(STATIC_CRT "Use static CRT libraries" OFF)
|
||||||
|
|
||||||
|
# Rewrite command line flags to use /MT if necessary
|
||||||
|
if(STATIC_CRT)
|
||||||
|
foreach(flag_var
|
||||||
|
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
||||||
|
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
||||||
|
if(${flag_var} MATCHES "/MD")
|
||||||
|
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
|
||||||
|
endif(${flag_var} MATCHES "/MD")
|
||||||
|
endforeach(flag_var)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Pre-defines standard install locations on *nix systems.
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
mark_as_advanced(CLEAR CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR)
|
||||||
|
|
||||||
|
set(HEADERS src/pugixml.hpp src/pugiconfig.hpp)
|
||||||
|
set(SOURCES src/pugixml.cpp)
|
||||||
|
|
||||||
|
if(DEFINED BUILD_DEFINES)
|
||||||
|
foreach(DEFINE ${BUILD_DEFINES})
|
||||||
|
add_definitions("-D" ${DEFINE})
|
||||||
|
endforeach()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BUILD_SHARED_LIBS)
|
||||||
|
add_library(pugixml SHARED ${HEADERS} ${SOURCES})
|
||||||
|
else()
|
||||||
|
add_library(pugixml STATIC ${HEADERS} ${SOURCES})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Export symbols for shared library builds
|
||||||
|
if(BUILD_SHARED_LIBS AND MSVC)
|
||||||
|
target_compile_definitions(pugixml PRIVATE "PUGIXML_API=__declspec(dllexport)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Enable C++11 long long for compilers that are capable of it
|
||||||
|
if(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} STRLESS 3.1 AND ";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";cxx_long_long_type;")
|
||||||
|
target_compile_features(pugixml PUBLIC cxx_long_long_type)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_target_properties(pugixml PROPERTIES VERSION 1.9 SOVERSION 1)
|
||||||
|
get_target_property(PUGIXML_VERSION_STRING pugixml VERSION)
|
||||||
|
|
||||||
|
if(BUILD_PKGCONFIG)
|
||||||
|
# Install library into its own directory under LIBDIR
|
||||||
|
set(INSTALL_SUFFIX /pugixml-${PUGIXML_VERSION_STRING})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_include_directories(pugixml PUBLIC
|
||||||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src>
|
||||||
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}${INSTALL_SUFFIX}>)
|
||||||
|
|
||||||
|
install(TARGETS pugixml EXPORT pugixml-config
|
||||||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}${INSTALL_SUFFIX}
|
||||||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}${INSTALL_SUFFIX}
|
||||||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}${INSTALL_SUFFIX})
|
||||||
|
install(EXPORT pugixml-config DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pugixml)
|
||||||
|
|
||||||
|
if(BUILD_PKGCONFIG)
|
||||||
|
configure_file(scripts/pugixml.pc.in ${PROJECT_BINARY_DIR}/pugixml.pc @ONLY)
|
||||||
|
install(FILES ${PROJECT_BINARY_DIR}/pugixml.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BUILD_TESTS)
|
||||||
|
file(GLOB TEST_SOURCES tests/*.cpp)
|
||||||
|
file(GLOB FUZZ_SOURCES tests/fuzz_*.cpp)
|
||||||
|
list(REMOVE_ITEM TEST_SOURCES ${FUZZ_SOURCES})
|
||||||
|
|
||||||
|
add_executable(check ${TEST_SOURCES})
|
||||||
|
target_link_libraries(check pugixml)
|
||||||
|
add_custom_command(TARGET check POST_BUILD COMMAND check WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
endif()
|
|
@ -0,0 +1,63 @@
|
||||||
|
/*
|
||||||
|
* Boost.Foreach support for pugixml classes.
|
||||||
|
* This file is provided to the public domain.
|
||||||
|
* Written by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef HEADER_PUGIXML_FOREACH_HPP
|
||||||
|
#define HEADER_PUGIXML_FOREACH_HPP
|
||||||
|
|
||||||
|
#include <boost/range/iterator.hpp>
|
||||||
|
|
||||||
|
#include "pugixml.hpp"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These types add support for BOOST_FOREACH macro to xml_node and xml_document classes (child iteration only).
|
||||||
|
* Example usage:
|
||||||
|
* BOOST_FOREACH(xml_node n, doc) {}
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace boost
|
||||||
|
{
|
||||||
|
template<> struct range_mutable_iterator<pugi::xml_node>
|
||||||
|
{
|
||||||
|
typedef pugi::xml_node::iterator type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<> struct range_const_iterator<pugi::xml_node>
|
||||||
|
{
|
||||||
|
typedef pugi::xml_node::iterator type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<> struct range_mutable_iterator<pugi::xml_document>
|
||||||
|
{
|
||||||
|
typedef pugi::xml_document::iterator type;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<> struct range_const_iterator<pugi::xml_document>
|
||||||
|
{
|
||||||
|
typedef pugi::xml_document::iterator type;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* These types add support for BOOST_FOREACH macro to xml_node and xml_document classes (child/attribute iteration).
|
||||||
|
* Example usage:
|
||||||
|
* BOOST_FOREACH(xml_node n, children(doc)) {}
|
||||||
|
* BOOST_FOREACH(xml_node n, attributes(doc)) {}
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace pugi
|
||||||
|
{
|
||||||
|
inline xml_object_range<xml_node_iterator> children(const pugi::xml_node& node)
|
||||||
|
{
|
||||||
|
return node.children();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline xml_object_range<xml_attribute_iterator> attributes(const pugi::xml_node& node)
|
||||||
|
{
|
||||||
|
return node.attributes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,52 @@
|
||||||
|
pugixml 1.9 - an XML processing library
|
||||||
|
|
||||||
|
Copyright (C) 2006-2018, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
||||||
|
Report bugs and download new versions at http://pugixml.org/
|
||||||
|
|
||||||
|
This is the distribution of pugixml, which is a C++ XML processing library,
|
||||||
|
which consists of a DOM-like interface with rich traversal/modification
|
||||||
|
capabilities, an extremely fast XML parser which constructs the DOM tree from
|
||||||
|
an XML file/buffer, and an XPath 1.0 implementation for complex data-driven
|
||||||
|
tree queries. Full Unicode support is also available, with Unicode interface
|
||||||
|
variants and conversions between different Unicode encodings (which happen
|
||||||
|
automatically during parsing/saving).
|
||||||
|
|
||||||
|
The distribution contains the following folders:
|
||||||
|
|
||||||
|
contrib/ - various contributions to pugixml
|
||||||
|
|
||||||
|
docs/ - documentation
|
||||||
|
docs/samples - pugixml usage examples
|
||||||
|
docs/quickstart.html - quick start guide
|
||||||
|
docs/manual.html - complete manual
|
||||||
|
|
||||||
|
scripts/ - project files for IDE/build systems
|
||||||
|
|
||||||
|
src/ - header and source files
|
||||||
|
|
||||||
|
readme.txt - this file.
|
||||||
|
|
||||||
|
This library is distributed under the MIT License:
|
||||||
|
|
||||||
|
Copyright (c) 2006-2018 Arseny Kapoulkine
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person
|
||||||
|
obtaining a copy of this software and associated documentation
|
||||||
|
files (the "Software"), to deal in the Software without
|
||||||
|
restriction, including without limitation the rights to use,
|
||||||
|
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following
|
||||||
|
conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be
|
||||||
|
included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -0,0 +1,74 @@
|
||||||
|
/**
|
||||||
|
* pugixml parser - version 1.9
|
||||||
|
* --------------------------------------------------------
|
||||||
|
* Copyright (C) 2006-2018, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)
|
||||||
|
* Report bugs and download new versions at http://pugixml.org/
|
||||||
|
*
|
||||||
|
* This library is distributed under the MIT License. See notice at the end
|
||||||
|
* of this file.
|
||||||
|
*
|
||||||
|
* This work is based on the pugxml parser, which is:
|
||||||
|
* Copyright (C) 2003, by Kristen Wegner (kristen@tima.net)
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef HEADER_PUGICONFIG_HPP
|
||||||
|
#define HEADER_PUGICONFIG_HPP
|
||||||
|
|
||||||
|
// Uncomment this to enable wchar_t mode
|
||||||
|
// #define PUGIXML_WCHAR_MODE
|
||||||
|
|
||||||
|
// Uncomment this to enable compact mode
|
||||||
|
// #define PUGIXML_COMPACT
|
||||||
|
|
||||||
|
// Uncomment this to disable XPath
|
||||||
|
// #define PUGIXML_NO_XPATH
|
||||||
|
|
||||||
|
// Uncomment this to disable STL
|
||||||
|
// #define PUGIXML_NO_STL
|
||||||
|
|
||||||
|
// Uncomment this to disable exceptions
|
||||||
|
// #define PUGIXML_NO_EXCEPTIONS
|
||||||
|
|
||||||
|
// Set this to control attributes for public classes/functions, i.e.:
|
||||||
|
// #define PUGIXML_API __declspec(dllexport) // to export all public symbols from DLL
|
||||||
|
// #define PUGIXML_CLASS __declspec(dllimport) // to import all classes from DLL
|
||||||
|
// #define PUGIXML_FUNCTION __fastcall // to set calling conventions to all public functions to fastcall
|
||||||
|
// In absence of PUGIXML_CLASS/PUGIXML_FUNCTION definitions PUGIXML_API is used instead
|
||||||
|
|
||||||
|
// Tune these constants to adjust memory-related behavior
|
||||||
|
// #define PUGIXML_MEMORY_PAGE_SIZE 32768
|
||||||
|
// #define PUGIXML_MEMORY_OUTPUT_STACK 10240
|
||||||
|
// #define PUGIXML_MEMORY_XPATH_PAGE_SIZE 4096
|
||||||
|
|
||||||
|
// Uncomment this to switch to header-only version
|
||||||
|
// #define PUGIXML_HEADER_ONLY
|
||||||
|
|
||||||
|
// Uncomment this to enable long long support
|
||||||
|
// #define PUGIXML_HAS_LONG_LONG
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2006-2018 Arseny Kapoulkine
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person
|
||||||
|
* obtaining a copy of this software and associated documentation
|
||||||
|
* files (the "Software"), to deal in the Software without
|
||||||
|
* restriction, including without limitation the rights to use,
|
||||||
|
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the
|
||||||
|
* Software is furnished to do so, subject to the following
|
||||||
|
* conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be
|
||||||
|
* included in all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||||
|
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||||
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||||
|
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
|
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
|
* OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*/
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue