mirror of
https://github.com/vcmi/vcmi.git
synced 2025-06-15 00:05:02 +02:00
Add files for rebased serializer refactoring done by Ivan
This commit is contained in:
committed by
Arseniy Shestakov
parent
15b4774076
commit
3d1b1f4ba8
40
lib/serializer/CMemorySerializer.cpp
Normal file
40
lib/serializer/CMemorySerializer.cpp
Normal file
@ -0,0 +1,40 @@
|
||||
#include "StdInc.h"
|
||||
#include "CMemorySerializer.h"
|
||||
|
||||
#include "../registerTypes/RegisterTypes.h"
|
||||
|
||||
/*
|
||||
* CMemorySerializer.cpp, part of VCMI engine
|
||||
*
|
||||
* Authors: listed in file AUTHORS in main folder
|
||||
*
|
||||
* License: GNU General Public License v2.0 or later
|
||||
* Full text of license available in license.txt file, in main folder
|
||||
*
|
||||
*/
|
||||
|
||||
int CMemorySerializer::read(void * data, unsigned size)
|
||||
{
|
||||
if(buffer.size() < readPos + size)
|
||||
throw std::runtime_error(boost::str(boost::format("Cannot read past the buffer (accessing index %d, while size is %d)!") % (readPos + size - 1) % buffer.size()));
|
||||
|
||||
std::memcpy(data, buffer.data() + readPos, size);
|
||||
readPos += size;
|
||||
return size;
|
||||
}
|
||||
|
||||
int CMemorySerializer::write(const void * data, unsigned size)
|
||||
{
|
||||
auto oldSize = buffer.size(); //and the pos to write from
|
||||
buffer.resize(oldSize + size);
|
||||
std::memcpy(buffer.data() + oldSize, data, size);
|
||||
return size;
|
||||
}
|
||||
|
||||
CMemorySerializer::CMemorySerializer(): iser(this), oser(this)
|
||||
{
|
||||
readPos = 0;
|
||||
registerTypes(iser);
|
||||
registerTypes(oser);
|
||||
}
|
||||
|
Reference in New Issue
Block a user