Example #1
0
	HeapString SerializeScript(const ScriptObject& obj, const ISirenType& type, SirenCoderType coder/* = SirenCoderType::Compact*/)
	{

#ifdef MEDUSA_LUA
		SirenLuaReader reader(obj.State());
#endif

		switch (coder)
		{
		case SirenCoderType::Compact:
		{
			StringStream stream;
			SirenCompactBinaryWriter writer(stream);
			SirenReaderWriter rw(reader, writer);
			if (rw.Run(type))
			{
				return stream.CurrentBuffer();
			}
			return HeapString::Empty;
		}
		case SirenCoderType::Fast:
		{
			StringStream stream;
			SirenFastBinaryWriter writer(stream);
			SirenReaderWriter rw(reader, writer);
			if (rw.Run(type))
			{
				return stream.CurrentBuffer();
			}

			return HeapString::Empty;
		}
		case SirenCoderType::Json:
		{
			StringStream stream;
			SirenJsonWriter writer(stream);
			SirenReaderWriter rw(reader, writer);
			if (rw.Run(type))
			{
				return stream.CurrentBuffer();
			}

			return HeapString::Empty;
		}
		}

		return HeapString::Empty;
	}