diff options
-rw-r--r-- | src/CMakeLists.txt | 3 | ||||
-rw-r--r-- | src/Makefile.am | 7 | ||||
-rw-r--r-- | src/utils/xml.inc | 30 | ||||
-rw-r--r-- | src/utils/xml/libxml.h | 37 | ||||
-rw-r--r-- | src/utils/xml/libxml.inc | 62 | ||||
-rw-r--r-- | src/utils/xml/pugixml.h | 30 | ||||
-rw-r--r-- | src/utils/xml/pugixml.inc | 55 |
7 files changed, 159 insertions, 65 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7e71e7202..a8726c1a0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -816,10 +816,12 @@ SET(SRCS utils/mkdir.cpp utils/mkdir.h utils/xml.h + utils/xml.inc utils/xmlutils.cpp utils/xmlutils.h utils/xml/libxml.cpp utils/xml/libxml.h + utils/xml/libxml.inc test/testlauncher.cpp test/testlauncher.h test/testmain.cpp @@ -1412,6 +1414,7 @@ SET(DYE_CMD_SRCS utils/timer.h utils/xml.cpp utils/xml.h + utils/xml.inc utils/xmlutils.cpp utils/xmlutils.h utils/translation/podict.cpp diff --git a/src/Makefile.am b/src/Makefile.am index 3d36ed226..ce8e9ec86 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -473,6 +473,7 @@ SRC += events/actionevent.h \ utils/naclmessages.cpp \ utils/naclmessages.h \ utils/xml.h \ + utils/xml.inc \ utils/xmlutils.cpp \ utils/xmlutils.h \ test/testlauncher.cpp \ @@ -692,11 +693,13 @@ SRC += events/actionevent.h \ if ENABLE_PUGIXML SRC += utils/xml/pugixml.cpp \ - utils/xml/pugixml.h + utils/xml/pugixml.h \ + utils/xml/pugixml.inc endif if ENABLE_LIBXML SRC += utils/xml/libxml.cpp \ - utils/xml/libxml.h + utils/xml/libxml.h \ + utils/xml/libxml.inc endif dyecmd_SOURCES += ${SRC} diff --git a/src/utils/xml.inc b/src/utils/xml.inc new file mode 100644 index 000000000..8fe654649 --- /dev/null +++ b/src/utils/xml.inc @@ -0,0 +1,30 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2016 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef UTILS_XML_INC +#define UTILS_XML_INC + +#ifdef ENABLE_PUGIXML +#include "utils/xml/pugixml.inc" +#else // ENABLE_PUGIXML +#include "utils/xml/libxml.inc" +#endif // ENABLE_PUGIXML + +#endif // UTILS_XML_INC diff --git a/src/utils/xml/libxml.h b/src/utils/xml/libxml.h index 6d8c35cab..49968123e 100644 --- a/src/utils/xml/libxml.h +++ b/src/utils/xml/libxml.h @@ -28,6 +28,8 @@ #include "enums/simpletypes/skiperror.h" #include "enums/simpletypes/useresman.h" +#include "utils/xml/libxml.inc" + #include <libxml/tree.h> #include <libxml/xmlwriter.h> @@ -35,41 +37,6 @@ #include "localconsts.h" -#define XmlNodePtr xmlNodePtr -#define XmlNodePtrConst xmlNode *const -#define XmlStrEqual(str1, str2) xmlStrEqual(str1, \ - reinterpret_cast<const xmlChar*>(str2)) -#define xmlNameEqual(node, str) xmlStrEqual((node)->name, \ - reinterpret_cast<const xmlChar*>(str)) -#define XmlTextWriterPtr xmlTextWriterPtr -#define xmlTypeEqual(node, typ) ((node)->type == (typ)) -#define XmlHasProp(node, name) (xmlHasProp(node, \ - reinterpret_cast<const xmlChar*>(name)) != nullptr) -#define XmlGetProp(node, name) xmlGetProp(node, \ - reinterpret_cast<const xmlChar*>(name)) -#define XmlTextWriterStartElement(writer, name) \ - xmlTextWriterStartElement(writer, reinterpret_cast<const xmlChar*>(name)) -#define XmlTextWriterEndElement(writer) xmlTextWriterEndElement(writer) -#define XmlTextWriterWriteAttribute(writer, name, content) \ - xmlTextWriterWriteAttribute(writer, \ - reinterpret_cast<const xmlChar*>(name), \ - reinterpret_cast<const xmlChar*>(content)) -#define XmlNodeGetContent(node) xmlNodeGetContent(node) -#define XmlNewTextWriterFilename(name, flags) \ - xmlNewTextWriterFilename(name, flags) -#define XmlTextWriterSetIndent(writer, flags) \ - xmlTextWriterSetIndent(writer, flags) -#define XmlTextWriterStartDocument(writer, p1, p2, p3) \ - xmlTextWriterStartDocument(writer, p1, p2, p3) -#define XmlTextWriterEndDocument(writer) xmlTextWriterEndDocument(writer) -#define XmlFreeTextWriter(writer) xmlFreeTextWriter(writer) -#define XmlHaveChildContent(node) ((node)->xmlChildrenNode != nullptr && \ - (node)->xmlChildrenNode->content != nullptr) -#define XmlChildContent(node) reinterpret_cast<const char*>(\ - (node)->xmlChildrenNode->content) -#define XmlFree(ptr) xmlFree(ptr) -#define XmlNodeDefault nullptr - /** * XML helper functions. */ diff --git a/src/utils/xml/libxml.inc b/src/utils/xml/libxml.inc new file mode 100644 index 000000000..238eafec9 --- /dev/null +++ b/src/utils/xml/libxml.inc @@ -0,0 +1,62 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2015 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef UTILS_XML_LIBXML_INC +#define UTILS_XML_LIBXML_INC + +#ifdef ENABLE_LIBXML + +#define XmlNodePtr xmlNodePtr +#define XmlNodePtrConst xmlNode *const +#define XmlStrEqual(str1, str2) xmlStrEqual(str1, \ + reinterpret_cast<const xmlChar*>(str2)) +#define xmlNameEqual(node, str) xmlStrEqual((node)->name, \ + reinterpret_cast<const xmlChar*>(str)) +#define XmlTextWriterPtr xmlTextWriterPtr +#define xmlTypeEqual(node, typ) ((node)->type == (typ)) +#define XmlHasProp(node, name) (xmlHasProp(node, \ + reinterpret_cast<const xmlChar*>(name)) != nullptr) +#define XmlGetProp(node, name) xmlGetProp(node, \ + reinterpret_cast<const xmlChar*>(name)) +#define XmlTextWriterStartElement(writer, name) \ + xmlTextWriterStartElement(writer, reinterpret_cast<const xmlChar*>(name)) +#define XmlTextWriterEndElement(writer) xmlTextWriterEndElement(writer) +#define XmlTextWriterWriteAttribute(writer, name, content) \ + xmlTextWriterWriteAttribute(writer, \ + reinterpret_cast<const xmlChar*>(name), \ + reinterpret_cast<const xmlChar*>(content)) +#define XmlNodeGetContent(node) xmlNodeGetContent(node) +#define XmlNewTextWriterFilename(name, flags) \ + xmlNewTextWriterFilename(name, flags) +#define XmlTextWriterSetIndent(writer, flags) \ + xmlTextWriterSetIndent(writer, flags) +#define XmlTextWriterStartDocument(writer, p1, p2, p3) \ + xmlTextWriterStartDocument(writer, p1, p2, p3) +#define XmlTextWriterEndDocument(writer) xmlTextWriterEndDocument(writer) +#define XmlFreeTextWriter(writer) xmlFreeTextWriter(writer) +#define XmlHaveChildContent(node) ((node)->xmlChildrenNode != nullptr && \ + (node)->xmlChildrenNode->content != nullptr) +#define XmlChildContent(node) reinterpret_cast<const char*>(\ + (node)->xmlChildrenNode->content) +#define XmlFree(ptr) xmlFree(ptr) +#define XmlNodeDefault nullptr + +#endif // ENABLE_LIBXML +#endif // UTILS_XML_LIBXML_INC diff --git a/src/utils/xml/pugixml.h b/src/utils/xml/pugixml.h index 57e0cccd3..105f56959 100644 --- a/src/utils/xml/pugixml.h +++ b/src/utils/xml/pugixml.h @@ -28,40 +28,14 @@ #include "enums/simpletypes/skiperror.h" #include "enums/simpletypes/useresman.h" +#include "utils/xml/pugixml.inc" + #include <pugixml.hpp> #include <string> #include "localconsts.h" -#define XML_ELEMENT_NODE pugi::node_element - -#define XmlNodePtr pugi::xml_node -#define XmlNodePtrConst pugi::xml_node -#define xmlNameEqual(node, str) !strcmp((node).name(), str) -#define xmlTypeEqual(node, typ) ((node).type() == (typ)) -#define XmlHasProp(node, name) (!((node).attribute(name).empty())) -#define XmlHaveChildContent(node) ((node).child_value() != nullptr && \ - *(node).child_value()) -#define XmlChildContent(node) (node).child_value() -#define xmlChar char -#define XmlFree(ptr) -#define XmlNodeDefault pugi::xml_node() - -// +++ need impliment get context -#define XmlNodeGetContent(node) (node).child_value() - -// +++ need impliment writing code -#define XmlTextWriterPtr pugi::xml_writer* -#define XmlTextWriterStartElement(writer, name) -#define XmlTextWriterEndElement(writer) -#define XmlTextWriterWriteAttribute(writer, name, content) -#define XmlNewTextWriterFilename(name, flags) nullptr; -#define XmlTextWriterSetIndent(writer, flags) -#define XmlTextWriterStartDocument(writer, p1, p2, p3) -#define XmlTextWriterEndDocument(writer) -#define XmlFreeTextWriter(writer) - /** * XML helper functions. */ diff --git a/src/utils/xml/pugixml.inc b/src/utils/xml/pugixml.inc new file mode 100644 index 000000000..4350a8e71 --- /dev/null +++ b/src/utils/xml/pugixml.inc @@ -0,0 +1,55 @@ +/* + * The ManaPlus Client + * Copyright (C) 2011-2015 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef UTILS_XML_PUGIXML_INC +#define UTILS_XML_PUGIXML_INC + +#ifdef ENABLE_PUGIXML + +#define XML_ELEMENT_NODE pugi::node_element + +#define XmlNodePtr pugi::xml_node +#define XmlNodePtrConst pugi::xml_node +#define xmlNameEqual(node, str) !strcmp((node).name(), str) +#define xmlTypeEqual(node, typ) ((node).type() == (typ)) +#define XmlHasProp(node, name) (!((node).attribute(name).empty())) +#define XmlHaveChildContent(node) ((node).child_value() != nullptr && \ + *(node).child_value()) +#define XmlChildContent(node) (node).child_value() +#define xmlChar char +#define XmlFree(ptr) +#define XmlNodeDefault pugi::xml_node() + +// +++ need impliment get context +#define XmlNodeGetContent(node) (node).child_value() + +// +++ need impliment writing code +#define XmlTextWriterPtr pugi::xml_writer* +#define XmlTextWriterStartElement(writer, name) +#define XmlTextWriterEndElement(writer) +#define XmlTextWriterWriteAttribute(writer, name, content) +#define XmlNewTextWriterFilename(name, flags) nullptr; +#define XmlTextWriterSetIndent(writer, flags) +#define XmlTextWriterStartDocument(writer, p1, p2, p3) +#define XmlTextWriterEndDocument(writer) +#define XmlFreeTextWriter(writer) + +#endif // ENABLE_PUGIXML +#endif // UTILS_XML_PUGIXML_INC |