This commit is contained in:
@@ -21,33 +21,33 @@ DataBuffer::DataBuffer(const DataBuffer& other, Data::difference_type offset) :
|
||||
std::copy(other.m_Buffer.begin() + offset, other.m_Buffer.end(), std::back_inserter(m_Buffer));
|
||||
}
|
||||
|
||||
DataBuffer& DataBuffer::operator<<(const std::string& str) {
|
||||
DataBuffer& operator<<(DataBuffer& a_Buffer, const std::string& str) {
|
||||
std::size_t strlen = str.length() + 1; // including null character
|
||||
Resize(GetSize() + strlen);
|
||||
std::memcpy(m_Buffer.data() + GetSize() - strlen, str.data(), strlen);
|
||||
return *this;
|
||||
a_Buffer.Resize(a_Buffer.GetSize() + strlen);
|
||||
std::memcpy(a_Buffer.data() + a_Buffer.GetSize() - strlen, str.data(), strlen);
|
||||
return a_Buffer;
|
||||
}
|
||||
|
||||
DataBuffer& DataBuffer::operator<<(const DataBuffer& data) {
|
||||
m_Buffer.insert(m_Buffer.end(), data.begin(), data.end());
|
||||
return *this;
|
||||
DataBuffer& operator<<(DataBuffer& a_Buffer, const DataBuffer& data) {
|
||||
a_Buffer.insert(a_Buffer.end(), data.begin(), data.end());
|
||||
return a_Buffer;
|
||||
}
|
||||
|
||||
DataBuffer& DataBuffer::operator>>(std::string& str) {
|
||||
std::size_t stringSize = strlen(reinterpret_cast<const char*>(m_Buffer.data()) + m_ReadOffset) + 1; // including null character
|
||||
DataBuffer& operator>>(DataBuffer& a_Buffer, std::string& str) {
|
||||
std::size_t stringSize = strlen(reinterpret_cast<const char*>(a_Buffer.data()) + a_Buffer.GetReadOffset()) + 1; // including null character
|
||||
str.resize(stringSize);
|
||||
std::copy(m_Buffer.begin() + static_cast<difference_type>(m_ReadOffset),
|
||||
m_Buffer.begin() + static_cast<difference_type>(m_ReadOffset + stringSize), str.begin());
|
||||
m_ReadOffset += stringSize;
|
||||
std::copy(a_Buffer.begin() + static_cast<DataBuffer::difference_type>(a_Buffer.GetReadOffset()),
|
||||
a_Buffer.begin() + static_cast<DataBuffer::difference_type>(a_Buffer.GetReadOffset() + stringSize), str.begin());
|
||||
a_Buffer.SetReadOffset(a_Buffer.GetReadOffset() + stringSize);
|
||||
str.resize(stringSize - 1);
|
||||
return *this;
|
||||
return a_Buffer;
|
||||
}
|
||||
|
||||
DataBuffer& DataBuffer::operator>>(DataBuffer& data) {
|
||||
data.Resize(GetSize() - m_ReadOffset);
|
||||
std::copy(m_Buffer.begin() + static_cast<difference_type>(m_ReadOffset), m_Buffer.end(), data.begin());
|
||||
m_ReadOffset = m_Buffer.size();
|
||||
return *this;
|
||||
DataBuffer& operator>>(DataBuffer& a_Buffer, DataBuffer& data) {
|
||||
data.Resize(a_Buffer.GetSize() - a_Buffer.GetReadOffset());
|
||||
std::copy(a_Buffer.begin() + static_cast<DataBuffer::difference_type>(a_Buffer.GetReadOffset()), a_Buffer.end(), data.begin());
|
||||
a_Buffer.SetReadOffset(a_Buffer.GetSize());
|
||||
return a_Buffer;
|
||||
}
|
||||
|
||||
void DataBuffer::WriteSome(const char* buffer, std::size_t amount) {
|
||||
@@ -147,4 +147,8 @@ void DataBuffer::WriteFile(const std::string& fileName) const {
|
||||
file.flush();
|
||||
}
|
||||
|
||||
void DataBuffer::insert(iterator a_DestBegin, const_iterator a_SrcBegin, const_iterator a_SrcEnd) {
|
||||
m_Buffer.insert(a_DestBegin, a_SrcBegin, a_SrcEnd);
|
||||
}
|
||||
|
||||
} // namespace sp
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include <sp/common/VarInt.h>
|
||||
|
||||
#include <sp/common/DataBuffer.h>
|
||||
#include <sp/common/DataBufferOperators.h>
|
||||
#include <stdexcept>
|
||||
|
||||
namespace sp {
|
||||
|
||||
Reference in New Issue
Block a user