add a couple of serialization/deserialization methods
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Thu, 24 Apr 2008 15:44:15 -0700
changeset 3037 b0f12f3a75b3
parent 3036 8e29fb88ad26
child 3038 5962e2962fa9
add a couple of serialization/deserialization methods
src/common/mtag-buffer.cc
src/common/mtag-buffer.h
--- a/src/common/mtag-buffer.cc	Thu Apr 24 14:58:17 2008 -0700
+++ b/src/common/mtag-buffer.cc	Thu Apr 24 15:44:15 2008 -0700
@@ -36,6 +36,23 @@
   WriteU8 ((data >> 48) & 0xff);
   WriteU8 ((data >> 54) & 0xff);
 }
+void
+MtagBuffer::WriteDouble (double v)
+{
+  uint8_t *buf = (uint8_t *)&v;
+  for (uint32_t i = 0; i < sizeof (double); ++i, ++buf)
+    {
+      WriteU8 (*buf);
+    }
+}
+void 
+MtagBuffer::Write (const uint8_t *buffer, uint32_t size)
+{
+  for (uint32_t i = 0; i < size; ++i, ++buffer)
+    {
+      WriteU8 (*buffer);
+    }
+}
 uint8_t  
 MtagBuffer::ReadU8 (void)
 {
@@ -100,6 +117,25 @@
 
   return data;
 }
+double
+MtagBuffer::ReadDouble (void)
+{
+  double v;
+  uint8_t *buf = (uint8_t *)&v;
+  for (uint32_t i = 0; i < sizeof (double); ++i, ++buf)
+    {
+      *buf = ReadU8 ();
+    }
+  return v;
+}
+void 
+MtagBuffer::Read (uint8_t *buffer, uint32_t size)
+{
+  for (uint32_t i = 0; i < size; ++i, ++buffer)
+    {
+      *buffer = ReadU8 ();
+    }
+}
 MtagBuffer::MtagBuffer (uint8_t *start, uint8_t *end)
   : m_current (start),
     m_end (end)
--- a/src/common/mtag-buffer.h	Thu Apr 24 14:58:17 2008 -0700
+++ b/src/common/mtag-buffer.h	Thu Apr 24 15:44:15 2008 -0700
@@ -15,10 +15,14 @@
   void WriteU16 (uint16_t v);
   void WriteU32 (uint32_t v);
   void WriteU64 (uint64_t v);
+  void WriteDouble (double v);
+  void Write (const uint8_t *buffer, uint32_t size);
   uint8_t  ReadU8 (void);
   uint16_t ReadU16 (void);
   uint32_t ReadU32 (void);
   uint64_t ReadU64 (void);
+  double ReadDouble (void);
+  void Read (uint8_t *buffer, uint32_t size);
 
   void CopyFrom (MtagBuffer o);
 private: