Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5b6fe80
commit db3bb22
Showing
7 changed files
with
14,535 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,3 +2,5 @@ | |
if( NOT SYSTEM_IRRXML ) | ||
add_subdirectory(irrXML) | ||
endif( NOT SYSTEM_IRRXML ) | ||
|
||
add_subdirectory( pugixml-1.9 ) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. | ||
*/ |
Oops, something went wrong.