summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pugixml.cpp15
-rw-r--r--src/pugixml.hpp16
2 files changed, 31 insertions, 0 deletions
diff --git a/src/pugixml.cpp b/src/pugixml.cpp
index fbb95f1..e0d74aa 100644
--- a/src/pugixml.cpp
+++ b/src/pugixml.cpp
@@ -1676,6 +1676,13 @@ namespace pugi
return atoi(_attr->value);
}
+ unsigned int xml_attribute::as_uint() const
+ {
+ if(empty() || !_attr->value) return 0;
+ int result = atoi(_attr->value);
+ return result < 0 ? 0 : static_cast<unsigned int>(result);
+ }
+
double xml_attribute::as_double() const
{
if(empty() || !_attr->value) return 0.0;
@@ -1740,6 +1747,14 @@ namespace pugi
return *this;
}
+ xml_attribute& xml_attribute::operator=(unsigned int rhs)
+ {
+ char buf[128];
+ sprintf(buf, "%u", rhs);
+ set_value(buf);
+ return *this;
+ }
+
xml_attribute& xml_attribute::operator=(double rhs)
{
char buf[128];
diff --git a/src/pugixml.hpp b/src/pugixml.hpp
index 6adbeca..5b317e2 100644
--- a/src/pugixml.hpp
+++ b/src/pugixml.hpp
@@ -459,6 +459,14 @@ namespace pugi
int as_int() const;
/**
+ * Cast attribute value as unsigned int.
+ *
+ * \return attribute value as unsigned int, or 0 if conversion did not succeed or attribute is empty
+ * \note values out of non-negative int range (usually [0, 2^31-1]) get clamped to range boundaries
+ */
+ unsigned int as_uint() const;
+
+ /**
* Cast attribute value as double.
*
* \return attribute value as double, or 0.0 if conversion did not succeed or attribute is empty
@@ -506,6 +514,14 @@ namespace pugi
* \param rhs - new attribute value
* \return self
*/
+ xml_attribute& operator=(unsigned int rhs);
+
+ /**
+ * Set attribute value to \a rhs.
+ *
+ * \param rhs - new attribute value
+ * \return self
+ */
xml_attribute& operator=(double rhs);
/**