mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Shared: Include cleanup
This commit is contained in:
@@ -17,10 +17,12 @@
|
||||
*/
|
||||
|
||||
#include "ByteBuffer.h"
|
||||
#include "Errors.h"
|
||||
#include "MessageBuffer.h"
|
||||
#include "Common.h"
|
||||
#include "Log.h"
|
||||
#include "Util.h"
|
||||
#include <sstream>
|
||||
#include <ctime>
|
||||
|
||||
ByteBuffer::ByteBuffer(MessageBuffer&& buffer) : _rpos(0), _wpos(0), _bitpos(InitialBitPos), _curbitval(0), _storage(buffer.Move())
|
||||
{
|
||||
@@ -37,6 +39,80 @@ ByteBufferPositionException::ByteBufferPositionException(size_t pos, size_t size
|
||||
message().assign(ss.str());
|
||||
}
|
||||
|
||||
ByteBuffer& ByteBuffer::operator>>(float& value)
|
||||
{
|
||||
value = read<float>();
|
||||
if (!std::isfinite(value))
|
||||
throw ByteBufferException();
|
||||
return *this;
|
||||
}
|
||||
|
||||
ByteBuffer& ByteBuffer::operator>>(double& value)
|
||||
{
|
||||
value = read<double>();
|
||||
if (!std::isfinite(value))
|
||||
throw ByteBufferException();
|
||||
return *this;
|
||||
}
|
||||
|
||||
uint32 ByteBuffer::ReadPackedTime()
|
||||
{
|
||||
uint32 packedDate = read<uint32>();
|
||||
tm lt = tm();
|
||||
|
||||
lt.tm_min = packedDate & 0x3F;
|
||||
lt.tm_hour = (packedDate >> 6) & 0x1F;
|
||||
//lt.tm_wday = (packedDate >> 11) & 7;
|
||||
lt.tm_mday = ((packedDate >> 14) & 0x3F) + 1;
|
||||
lt.tm_mon = (packedDate >> 20) & 0xF;
|
||||
lt.tm_year = ((packedDate >> 24) & 0x1F) + 100;
|
||||
|
||||
return uint32(mktime(<));
|
||||
}
|
||||
|
||||
void ByteBuffer::append(const uint8 *src, size_t cnt)
|
||||
{
|
||||
ASSERT(src, "Attempted to put a NULL-pointer in ByteBuffer (pos: " SZFMTD " size: " SZFMTD ")", _wpos, size());
|
||||
ASSERT(cnt, "Attempted to put a zero-sized value in ByteBuffer (pos: " SZFMTD " size: " SZFMTD ")", _wpos, size());
|
||||
ASSERT(size() < 10000000);
|
||||
|
||||
FlushBits();
|
||||
_storage.insert(_storage.begin() + _wpos, src, src + cnt);
|
||||
_wpos += cnt;
|
||||
}
|
||||
|
||||
void ByteBuffer::AppendPackedTime(time_t time)
|
||||
{
|
||||
tm lt;
|
||||
localtime_r(&time, <);
|
||||
append<uint32>((lt.tm_year - 100) << 24 | lt.tm_mon << 20 | (lt.tm_mday - 1) << 14 | lt.tm_wday << 11 | lt.tm_hour << 6 | lt.tm_min);
|
||||
}
|
||||
|
||||
void ByteBuffer::put(size_t pos, const uint8 *src, size_t cnt)
|
||||
{
|
||||
ASSERT(pos + cnt <= size(), "Attempted to put value with size: " SZFMTD " in ByteBuffer (pos: " SZFMTD " size: " SZFMTD ")", cnt, pos, size());
|
||||
ASSERT(src, "Attempted to put a NULL-pointer in ByteBuffer (pos: " SZFMTD " size: " SZFMTD ")", pos, size());
|
||||
ASSERT(cnt, "Attempted to put a zero-sized value in ByteBuffer (pos: " SZFMTD " size: " SZFMTD ")", pos, size());
|
||||
|
||||
std::memcpy(&_storage[pos], src, cnt);
|
||||
}
|
||||
|
||||
void ByteBuffer::PutBits(std::size_t pos, std::size_t value, uint32 bitCount)
|
||||
{
|
||||
ASSERT(pos + bitCount <= size() * 8, "Attempted to put %u bits in ByteBuffer (bitpos: " SZFMTD " size: " SZFMTD ")", bitCount, pos, size());
|
||||
ASSERT(bitCount, "Attempted to put a zero bits in ByteBuffer");
|
||||
|
||||
for (uint32 i = 0; i < bitCount; ++i)
|
||||
{
|
||||
std::size_t wp = (pos + i) / 8;
|
||||
std::size_t bit = (pos + i) % 8;
|
||||
if ((value >> (bitCount - i - 1)) & 1)
|
||||
_storage[wp] |= 1 << (7 - bit);
|
||||
else
|
||||
_storage[wp] &= ~(1 << (7 - bit));
|
||||
}
|
||||
}
|
||||
|
||||
void ByteBuffer::print_storage() const
|
||||
{
|
||||
if (!sLog->ShouldLog("network", LOG_LEVEL_TRACE)) // optimize disabled trace output
|
||||
|
||||
@@ -20,11 +20,10 @@
|
||||
#define _BYTEBUFFER_H
|
||||
|
||||
#include "Define.h"
|
||||
#include "Errors.h"
|
||||
#include "ByteConverter.h"
|
||||
#include "Util.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <cstring>
|
||||
#include <ctime>
|
||||
|
||||
class MessageBuffer;
|
||||
|
||||
@@ -151,7 +150,7 @@ class TC_SHARED_API ByteBuffer
|
||||
_curbitval = 0;
|
||||
}
|
||||
|
||||
bool WriteBit(uint32 bit)
|
||||
bool WriteBit(bool bit)
|
||||
{
|
||||
--_bitpos;
|
||||
if (bit)
|
||||
@@ -164,7 +163,7 @@ class TC_SHARED_API ByteBuffer
|
||||
_curbitval = 0;
|
||||
}
|
||||
|
||||
return (bit != 0);
|
||||
return bit;
|
||||
}
|
||||
|
||||
bool ReadBit()
|
||||
@@ -179,7 +178,7 @@ class TC_SHARED_API ByteBuffer
|
||||
return ((_curbitval >> (7-_bitpos)) & 1) != 0;
|
||||
}
|
||||
|
||||
template <typename T> void WriteBits(T value, int32 bits)
|
||||
void WriteBits(std::size_t value, int32 bits)
|
||||
{
|
||||
for (int32 i = bits - 1; i >= 0; --i)
|
||||
WriteBit((value >> i) & 1);
|
||||
@@ -208,7 +207,8 @@ class TC_SHARED_API ByteBuffer
|
||||
append<uint8>(b ^ 1);
|
||||
}
|
||||
|
||||
template <typename T> void put(size_t pos, T value)
|
||||
template <typename T>
|
||||
void put(std::size_t pos, T value)
|
||||
{
|
||||
static_assert(std::is_fundamental<T>::value, "append(compound)");
|
||||
EndianConvert(value);
|
||||
@@ -227,22 +227,7 @@ class TC_SHARED_API ByteBuffer
|
||||
* @param value Data to write.
|
||||
* @param bitCount Number of bits to store the value on.
|
||||
*/
|
||||
template <typename T>
|
||||
void PutBits(size_t pos, T value, uint32 bitCount)
|
||||
{
|
||||
ASSERT(pos + bitCount <= size() * 8, "Attempted to put " SZFMTD " bits in ByteBuffer (bitpos: " SZFMTD " size: " SZFMTD ")", bitCount, pos, size());
|
||||
ASSERT(bitCount, "Attempted to put a zero bits in ByteBuffer");
|
||||
|
||||
for (uint32 i = 0; i < bitCount; ++i)
|
||||
{
|
||||
size_t wp = (pos + i) / 8;
|
||||
size_t bit = (pos + i) % 8;
|
||||
if ((value >> (bitCount - i - 1)) & 1)
|
||||
_storage[wp] |= 1 << (7 - bit);
|
||||
else
|
||||
_storage[wp] &= ~(1 << (7 - bit));
|
||||
}
|
||||
}
|
||||
void PutBits(std::size_t pos, std::size_t value, uint32 bitCount);
|
||||
|
||||
ByteBuffer &operator<<(uint8 value)
|
||||
{
|
||||
@@ -377,21 +362,8 @@ class TC_SHARED_API ByteBuffer
|
||||
return *this;
|
||||
}
|
||||
|
||||
ByteBuffer &operator>>(float &value)
|
||||
{
|
||||
value = read<float>();
|
||||
if (!std::isfinite(value))
|
||||
throw ByteBufferException();
|
||||
return *this;
|
||||
}
|
||||
|
||||
ByteBuffer &operator>>(double &value)
|
||||
{
|
||||
value = read<double>();
|
||||
if (!std::isfinite(value))
|
||||
throw ByteBufferException();
|
||||
return *this;
|
||||
}
|
||||
ByteBuffer &operator>>(float &value);
|
||||
ByteBuffer &operator>>(double &value);
|
||||
|
||||
ByteBuffer &operator>>(std::string& value)
|
||||
{
|
||||
@@ -531,26 +503,7 @@ class TC_SHARED_API ByteBuffer
|
||||
append(str, len);
|
||||
}
|
||||
|
||||
uint32 ReadPackedTime()
|
||||
{
|
||||
uint32 packedDate = read<uint32>();
|
||||
tm lt = tm();
|
||||
|
||||
lt.tm_min = packedDate & 0x3F;
|
||||
lt.tm_hour = (packedDate >> 6) & 0x1F;
|
||||
//lt.tm_wday = (packedDate >> 11) & 7;
|
||||
lt.tm_mday = ((packedDate >> 14) & 0x3F) + 1;
|
||||
lt.tm_mon = (packedDate >> 20) & 0xF;
|
||||
lt.tm_year = ((packedDate >> 24) & 0x1F) + 100;
|
||||
|
||||
return uint32(mktime(<));
|
||||
}
|
||||
|
||||
ByteBuffer& ReadPackedTime(uint32& time)
|
||||
{
|
||||
time = ReadPackedTime();
|
||||
return *this;
|
||||
}
|
||||
uint32 ReadPackedTime();
|
||||
|
||||
uint8* contents()
|
||||
{
|
||||
@@ -592,16 +545,7 @@ class TC_SHARED_API ByteBuffer
|
||||
return append((const uint8 *)src, cnt * sizeof(T));
|
||||
}
|
||||
|
||||
void append(const uint8 *src, size_t cnt)
|
||||
{
|
||||
ASSERT(src, "Attempted to put a NULL-pointer in ByteBuffer (pos: " SZFMTD " size: " SZFMTD ")", _wpos, size());
|
||||
ASSERT(cnt, "Attempted to put a zero-sized value in ByteBuffer (pos: " SZFMTD " size: " SZFMTD ")", _wpos, size());
|
||||
ASSERT(size() < 10000000);
|
||||
|
||||
FlushBits();
|
||||
_storage.insert(_storage.begin() + _wpos, src, src + cnt);
|
||||
_wpos += cnt;
|
||||
}
|
||||
void append(const uint8 *src, size_t cnt);
|
||||
|
||||
void append(const ByteBuffer& buffer)
|
||||
{
|
||||
@@ -652,21 +596,9 @@ class TC_SHARED_API ByteBuffer
|
||||
return resultSize;
|
||||
}
|
||||
|
||||
void AppendPackedTime(time_t time)
|
||||
{
|
||||
tm lt;
|
||||
localtime_r(&time, <);
|
||||
append<uint32>((lt.tm_year - 100) << 24 | lt.tm_mon << 20 | (lt.tm_mday - 1) << 14 | lt.tm_wday << 11 | lt.tm_hour << 6 | lt.tm_min);
|
||||
}
|
||||
void AppendPackedTime(time_t time);
|
||||
|
||||
void put(size_t pos, const uint8 *src, size_t cnt)
|
||||
{
|
||||
ASSERT(pos + cnt <= size(), "Attempted to put value with size: " SZFMTD " in ByteBuffer (pos: " SZFMTD " size: " SZFMTD ")", cnt, pos, size());
|
||||
ASSERT(src, "Attempted to put a NULL-pointer in ByteBuffer (pos: " SZFMTD " size: " SZFMTD ")", pos, size());
|
||||
ASSERT(cnt, "Attempted to put a zero-sized value in ByteBuffer (pos: " SZFMTD " size: " SZFMTD ")", pos, size());
|
||||
|
||||
std::memcpy(&_storage[pos], src, cnt);
|
||||
}
|
||||
void put(size_t pos, const uint8 *src, size_t cnt);
|
||||
|
||||
void print_storage() const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user