diff options
author | Andrei Karas <akaras@inbox.ru> | 2017-08-20 00:34:20 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2017-08-20 00:34:20 +0300 |
commit | 899d3b925ccb249de881bbc957f6e4ddc754cbbd (patch) | |
tree | 4c35a6f21d909f9bc07ed091f0c8e3cb5f700105 /src/utils/xml | |
parent | 1049de4c76ac6fc85c9f7f2bd35fb62ca787aa4c (diff) | |
download | mv-899d3b925ccb249de881bbc957f6e4ddc754cbbd.tar.gz mv-899d3b925ccb249de881bbc957f6e4ddc754cbbd.tar.bz2 mv-899d3b925ccb249de881bbc957f6e4ddc754cbbd.tar.xz mv-899d3b925ccb249de881bbc957f6e4ddc754cbbd.zip |
Add function for read float and double number from xml.
Diffstat (limited to 'src/utils/xml')
-rw-r--r-- | src/utils/xml/libxml.cpp | 22 | ||||
-rw-r--r-- | src/utils/xml/libxml.h | 9 | ||||
-rw-r--r-- | src/utils/xml/pugixml.cpp | 21 | ||||
-rw-r--r-- | src/utils/xml/pugixml.h | 9 | ||||
-rw-r--r-- | src/utils/xml/tinyxml2.cpp | 21 | ||||
-rw-r--r-- | src/utils/xml/tinyxml2.h | 9 |
6 files changed, 79 insertions, 12 deletions
diff --git a/src/utils/xml/libxml.cpp b/src/utils/xml/libxml.cpp index 90204fb49..251f994d5 100644 --- a/src/utils/xml/libxml.cpp +++ b/src/utils/xml/libxml.cpp @@ -205,9 +205,25 @@ namespace XML return ret; } - double getFloatProperty(XmlNodeConstPtr node, - const char *const name, - double def) + float getFloatProperty(XmlNodeConstPtr node, + const char *const name, + float def) + { + float &ret = def; + + xmlChar *const prop = XmlGetProp(node, name); + if (prop != nullptr) + { + ret = atof(reinterpret_cast<char*>(prop)); + xmlFree(prop); + } + + return ret; + } + + double getDoubleProperty(XmlNodeConstPtr node, + const char *const name, + double def) { double &ret = def; diff --git a/src/utils/xml/libxml.h b/src/utils/xml/libxml.h index d9f707a5e..6ec0ce08d 100644 --- a/src/utils/xml/libxml.h +++ b/src/utils/xml/libxml.h @@ -98,7 +98,14 @@ namespace XML /** * Gets an floating point property from an XmlNodePtr. */ - double getFloatProperty(XmlNodeConstPtr node, + float getFloatProperty(XmlNodeConstPtr node, + const char *const name, + float def) A_WARN_UNUSED; + + /** + * Gets an double point property from an XmlNodePtr. + */ + double getDoubleProperty(XmlNodeConstPtr node, const char *const name, double def) A_WARN_UNUSED; diff --git a/src/utils/xml/pugixml.cpp b/src/utils/xml/pugixml.cpp index 12ae1d794..12d885a4f 100644 --- a/src/utils/xml/pugixml.cpp +++ b/src/utils/xml/pugixml.cpp @@ -212,9 +212,24 @@ namespace XML return ret; } - double getFloatProperty(XmlNodeConstPtr node, - const char *const name, - double def) + float getFloatProperty(XmlNodeConstPtr node, + const char *const name, + float def) + { + float &ret = def; + + if (!node) + return ret; + const pugi::xml_attribute &attr = node.attribute(name); + if (!attr.empty()) + ret = atof(attr.value()); + + return ret; + } + + double getDoubleProperty(XmlNodeConstPtr node, + const char *const name, + double def) { double &ret = def; diff --git a/src/utils/xml/pugixml.h b/src/utils/xml/pugixml.h index 14a3bdbdf..e4337140e 100644 --- a/src/utils/xml/pugixml.h +++ b/src/utils/xml/pugixml.h @@ -99,7 +99,14 @@ namespace XML /** * Gets an floating point property from an XmlNodePtr. */ - double getFloatProperty(XmlNodeConstPtr node, + float getFloatProperty(XmlNodeConstPtr node, + const char *const name, + float def) A_WARN_UNUSED; + + /** + * Gets an double point property from an XmlNodePtr. + */ + double getDoubleProperty(XmlNodeConstPtr node, const char *const name, double def) A_WARN_UNUSED; diff --git a/src/utils/xml/tinyxml2.cpp b/src/utils/xml/tinyxml2.cpp index 3a1646168..a7275b7f1 100644 --- a/src/utils/xml/tinyxml2.cpp +++ b/src/utils/xml/tinyxml2.cpp @@ -198,9 +198,24 @@ namespace XML return ret; } - double getFloatProperty(XmlNodeConstPtr node, - const char *const name, - double def) + float getFloatProperty(XmlNodeConstPtr node, + const char *const name, + float def) + { + float &ret = def; + + if (!node) + return ret; + const char *attr = node->Attribute(name); + if (attr != nullptr) + ret = atof(attr); + + return ret; + } + + double getDoubleProperty(XmlNodeConstPtr node, + const char *const name, + double def) { double &ret = def; diff --git a/src/utils/xml/tinyxml2.h b/src/utils/xml/tinyxml2.h index e817f7276..f056dc43a 100644 --- a/src/utils/xml/tinyxml2.h +++ b/src/utils/xml/tinyxml2.h @@ -99,7 +99,14 @@ namespace XML /** * Gets an floating point property from an XmlNodePtr. */ - double getFloatProperty(XmlNodeConstPtr node, + float getFloatProperty(XmlNodeConstPtr node, + const char *const name, + float def) A_WARN_UNUSED; + + /** + * Gets an double point property from an XmlNodePtr. + */ + double getDoubleProperty(XmlNodeConstPtr node, const char *const name, double def) A_WARN_UNUSED; |