| 123456789101112131415161718192021222324252627282930313233343536373839404142 | /* * 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 * */#include "StdInc.h"#include "CMemorySerializer.h"#include "../registerTypes/RegisterTypes.h"VCMI_LIB_NAMESPACE_BEGINint 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);	iser.fileVersion = SERIALIZATION_VERSION;}VCMI_LIB_NAMESPACE_END
 |