From adf3b3a56944dfa3a0204707e2ccc94c3a0d043c Mon Sep 17 00:00:00 2001 From: Matyas Dolak Date: Wed, 21 Jan 2015 12:12:22 +0100 Subject: ByteBuffer: Added support for reading unsigned shorts and ints. --- src/ByteBuffer.cpp | 32 +++++++++++++++++++++++++++++++- src/ByteBuffer.h | 2 ++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/ByteBuffer.cpp b/src/ByteBuffer.cpp index e1e5867a9..f3dc44d91 100644 --- a/src/ByteBuffer.cpp +++ b/src/ByteBuffer.cpp @@ -344,12 +344,28 @@ bool cByteBuffer::ReadByte(unsigned char & a_Value) bool cByteBuffer::ReadBEShort(short & a_Value) +{ + CHECK_THREAD + CheckValid(); + NEEDBYTES(2); + Int16 val; + ReadBuf(&val, 2); + val = ntohs(val); + a_Value = *(reinterpret_cast(&val)); + return true; +} + + + + + +bool cByteBuffer::ReadBEUInt16(UInt16 & a_Value) { CHECK_THREAD CheckValid(); NEEDBYTES(2); ReadBuf(&a_Value, 2); - a_Value = (short)ntohs((u_short)a_Value); + a_Value = ntohs(a_Value); return true; } @@ -371,6 +387,20 @@ bool cByteBuffer::ReadBEInt(int & a_Value) +bool cByteBuffer::ReadBEUInt32(UInt32 & a_Value) +{ + CHECK_THREAD + CheckValid(); + NEEDBYTES(4); + ReadBuf(&a_Value, 4); + a_Value = ntohl(a_Value); + return true; +} + + + + + bool cByteBuffer::ReadBEInt64(Int64 & a_Value) { CHECK_THREAD diff --git a/src/ByteBuffer.h b/src/ByteBuffer.h index 2a316fa32..f480ad557 100644 --- a/src/ByteBuffer.h +++ b/src/ByteBuffer.h @@ -55,7 +55,9 @@ public: bool ReadChar (char & a_Value); bool ReadByte (unsigned char & a_Value); bool ReadBEShort (short & a_Value); + bool ReadBEUInt16 (UInt16 & a_Value); bool ReadBEInt (int & a_Value); + bool ReadBEUInt32 (UInt32 & a_Value); bool ReadBEInt64 (Int64 & a_Value); bool ReadBEFloat (float & a_Value); bool ReadBEDouble (double & a_Value); -- cgit v1.2.3