summaryrefslogtreecommitdiff
path: root/src/utils/xml
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2017-08-20 00:34:20 +0300
committerAndrei Karas <akaras@inbox.ru>2017-08-20 00:34:20 +0300
commit899d3b925ccb249de881bbc957f6e4ddc754cbbd (patch)
tree4c35a6f21d909f9bc07ed091f0c8e3cb5f700105 /src/utils/xml
parent1049de4c76ac6fc85c9f7f2bd35fb62ca787aa4c (diff)
downloadmv-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.cpp22
-rw-r--r--src/utils/xml/libxml.h9
-rw-r--r--src/utils/xml/pugixml.cpp21
-rw-r--r--src/utils/xml/pugixml.h9
-rw-r--r--src/utils/xml/tinyxml2.cpp21
-rw-r--r--src/utils/xml/tinyxml2.h9
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;