summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Doiel <steved@usnr.com>2015-01-06 15:33:56 -0800
committerSteve Doiel <steved@usnr.com>2015-01-06 15:33:56 -0800
commit32f0a8bd3a5c9f3c454164f4d23289851b0de3e7 (patch)
treebbd2c9c1e10e264243b2c8295feda2513cb1a15f
parentff16dbdd4c63fa46cc1f38eda4cfb66f38047657 (diff)
Add xml_text::set for float
Make float/double round-trip
-rw-r--r--src/pugixml.cpp17
-rw-r--r--src/pugixml.hpp1
2 files changed, 17 insertions, 1 deletions
diff --git a/src/pugixml.cpp b/src/pugixml.cpp
index dd3f427..6608d8d 100644
--- a/src/pugixml.cpp
+++ b/src/pugixml.cpp
@@ -3954,10 +3954,18 @@ PUGI__NS_BEGIN
return set_value_buffer(dest, header, header_mask, buf);
}
+ PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintptr_t header_mask, float value)
+ {
+ char buf[128];
+ sprintf(buf, "%.9g", value);
+
+ return set_value_buffer(dest, header, header_mask, buf);
+ }
+
PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintptr_t header_mask, double value)
{
char buf[128];
- sprintf(buf, "%g", value);
+ sprintf(buf, "%.17g", value);
return set_value_buffer(dest, header, header_mask, buf);
}
@@ -5603,6 +5611,13 @@ namespace pugi
return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false;
}
+ PUGI__FN bool xml_text::set(float rhs)
+ {
+ xml_node_struct* dn = _data_new();
+
+ return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false;
+ }
+
PUGI__FN bool xml_text::set(double rhs)
{
xml_node_struct* dn = _data_new();
diff --git a/src/pugixml.hpp b/src/pugixml.hpp
index 917ef4a..8a332e1 100644
--- a/src/pugixml.hpp
+++ b/src/pugixml.hpp
@@ -693,6 +693,7 @@ namespace pugi
// Set text with type conversion (numbers are converted to strings, boolean is converted to "true"/"false")
bool set(int rhs);
bool set(unsigned int rhs);
+ bool set(float rhs);
bool set(double rhs);
bool set(bool rhs);