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"
2022-07-26 15:07:42 +02:00
VCMI_LIB_NAMESPACE_BEGIN
2024-02-02 02:36:57 +02:00
int CMemorySerializer : : read ( std : : byte * data , unsigned size )
2016-09-10 02:28:11 +02:00
{
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 ( ) ) ) ;
2024-02-02 15:32:06 +02:00
std : : copy_n ( buffer . data ( ) + readPos , size , data ) ;
2016-09-10 02:28:11 +02:00
readPos + = size ;
return size ;
}
2024-02-02 02:36:57 +02:00
int CMemorySerializer : : write ( const std : : byte * data , unsigned size )
2016-09-10 02:28:11 +02:00
{
auto oldSize = buffer . size ( ) ; //and the pos to write from
buffer . resize ( oldSize + size ) ;
2024-02-02 15:32:06 +02:00
std : : copy_n ( data , size , buffer . data ( ) + oldSize ) ;
2016-09-10 02:28:11 +02:00
return size ;
}
2023-02-11 17:13:21 +02:00
CMemorySerializer : : CMemorySerializer ( ) : iser ( this ) , oser ( this ) , readPos ( 0 )
2016-09-10 02:28:11 +02:00
{
2024-01-20 20:34:51 +02:00
iser . version = ESerializationVersion : : CURRENT ;
2016-09-10 02:28:11 +02:00
}
2022-07-26 15:07:42 +02:00
VCMI_LIB_NAMESPACE_END