summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2018-11-19 09:37:32 +0100
committerDaniel Friesel <derf@finalrewind.org>2018-11-19 09:37:32 +0100
commit0a4a3e085f162fb3d34da3522bca7e7eeb8847e9 (patch)
treeea8af08c32c4041cf6a246d59ff267077a18c6ab
parent3b660dbb8528542354f6488f6c22519b95a49b91 (diff)
XDRStream: Support float/double
-rw-r--r--include/object/xdrstream.h2
-rw-r--r--src/os/object/xdrstream.cc12
2 files changed, 14 insertions, 0 deletions
diff --git a/include/object/xdrstream.h b/include/object/xdrstream.h
index 497e143..55bef5b 100644
--- a/include/object/xdrstream.h
+++ b/include/object/xdrstream.h
@@ -27,6 +27,8 @@ class XDRStream {
XDRStream & operator<<(int32_t number);
XDRStream & operator<<(uint64_t number);
XDRStream & operator<<(int64_t number);
+ XDRStream & operator<<(float number);
+ XDRStream & operator<<(double number);
XDRStream & operator<<(char const *text);
template<uint32_t TSize> XDRStream & operator<<(char const (&text)[TSize]);
XDRStream & operator<<(XDRStream & (*fun) (XDRStream &));
diff --git a/src/os/object/xdrstream.cc b/src/os/object/xdrstream.cc
index bc2ad89..888153b 100644
--- a/src/os/object/xdrstream.cc
+++ b/src/os/object/xdrstream.cc
@@ -68,6 +68,18 @@ XDRStream & XDRStream::operator<<(int64_t number)
return *this;
}
+XDRStream & XDRStream::operator<<(float number)
+{
+ *this << *(uint32_t*)&number;
+ return *this;
+}
+
+XDRStream & XDRStream::operator<<(double number)
+{
+ *this << *(uint64_t*)&number;
+ return *this;
+}
+
XDRStream & XDRStream::operator<<(char const *data){
if (!is_fixed_length) {
*this << next_array_len;