diff options
-rw-r--r-- | src/pugixml.cpp | 15 | ||||
-rw-r--r-- | src/pugixml.hpp | 16 |
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); /** |