summaryrefslogtreecommitdiff
path: root/Runtime/Serialize/WriteTypeToBuffer.h
blob: 3065f2366cd822678e76069ef3d0d132f3937553 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef WRITE_TYPE_TO_BUFFER_H
#define WRITE_TYPE_TO_BUFFER_H

#include "Runtime/Allocator/MemoryManager.h"
#include "Runtime/Utilities/dynamic_array.h"
#include "Runtime/Serialize/TransferFunctions/StreamedBinaryWrite.h"

template <typename TYPE> void WriteTypeToVector (TYPE& object, dynamic_array<UInt8>* data, int options = 0)
{
	data->clear ();
	MemoryCacheWriter memoryCache (*data);
	StreamedBinaryWrite<false> writeStream;
	CachedWriter& writeCache = writeStream.Init (0, BuildTargetSelection::NoTarget());
	
	writeCache.InitWrite(memoryCache);
	writeStream.Transfer(object, "Base");
	
	if (!writeCache.CompleteWriting () || writeCache.GetPosition() != data->size ())
		ErrorString ("Error while writing serialized data.");	
}
#endif