diff options
Diffstat (limited to 'src/ByteBuffer.cpp')
-rw-r--r-- | src/ByteBuffer.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/ByteBuffer.cpp b/src/ByteBuffer.cpp index b5f862a73..6cfb66f9a 100644 --- a/src/ByteBuffer.cpp +++ b/src/ByteBuffer.cpp @@ -53,6 +53,16 @@ Unfortunately it is very slow, so it is disabled even for regular DEBUG builds. +static char ValueToHexDigit(UInt8 digit) +{ + ASSERT(digit < 16); + return "0123456789abcdef"[digit]; +} + + + + + #ifdef DEBUG_SINGLE_THREAD_ACCESS /** Simple RAII class that is used for checking that no two threads are using an object simultanously. @@ -517,6 +527,29 @@ bool cByteBuffer::ReadPosition64(int & a_BlockX, int & a_BlockY, int & a_BlockZ) +bool cByteBuffer::ReadUUID(AString & a_Value) +{ + CHECK_THREAD + + if (!ReadString(a_Value, 16)) + { + return false; + } + + a_Value.resize(32); + for (unsigned int i = 15; i < 16; i--) + { + a_Value[i * 2 + 1] = ValueToHexDigit(a_Value[i] & 0xf); + a_Value[i * 2] = ValueToHexDigit(static_cast<UInt8>(a_Value[i]) >> 4); + } + + return true; +} + + + + + bool cByteBuffer::WriteBEInt8(Int8 a_Value) { CHECK_THREAD |