2016-09-10 03:28:11 +03:00
/*
* 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
*
*/
2017-07-13 11:26:03 +03:00
#include "StdInc.h"
#include "CMemorySerializer.h"
#include "../registerTypes/RegisterTypes.h"
2016-09-10 03:28:11 +03:00
2022-07-26 16:07:42 +03:00
VCMI_LIB_NAMESPACE_BEGIN
2016-09-10 03:28:11 +03:00
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 ;
}
2023-02-11 18:13:21 +03:00
CMemorySerializer :: CMemorySerializer () : iser ( this ), oser ( this ), readPos ( 0 )
2016-09-10 03:28:11 +03:00
{
registerTypes ( iser );
registerTypes ( oser );
2016-10-29 19:52:19 +03:00
iser . fileVersion = SERIALIZATION_VERSION ;
2016-09-10 03:28:11 +03:00
}
2022-07-26 16:07:42 +03:00
VCMI_LIB_NAMESPACE_END