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