add a couple of serialization/deserialization methods
This commit is contained in:
@@ -36,6 +36,23 @@ MtagBuffer::WriteU64 (uint64_t data)
|
||||
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 @@ MtagBuffer::ReadU64 (void)
|
||||
|
||||
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)
|
||||
|
||||
@@ -15,10 +15,14 @@ public:
|
||||
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:
|
||||
|
||||
Reference in New Issue
Block a user