Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/source/simulation2/serialization/BinarySerializer.h
Show All 14 Lines | |||||
* along with 0 A.D. If not, see <http://www.gnu.org/licenses/>. | * along with 0 A.D. If not, see <http://www.gnu.org/licenses/>. | ||||
*/ | */ | ||||
#ifndef INCLUDED_BINARYSERIALIZER | #ifndef INCLUDED_BINARYSERIALIZER | ||||
#define INCLUDED_BINARYSERIALIZER | #define INCLUDED_BINARYSERIALIZER | ||||
#include "ISerializer.h" | #include "ISerializer.h" | ||||
#include "scriptinterface/third_party/ObjectToIDMap.h" | |||||
#include "lib/byte_order.h" | #include "lib/byte_order.h" | ||||
#include "lib/allocators/arena.h" | #include "lib/allocators/arena.h" | ||||
#include <map> | #include <map> | ||||
/** | /** | ||||
* Wrapper for redirecting ostream writes to CBinarySerializer's impl | * Wrapper for redirecting ostream writes to CBinarySerializer's impl | ||||
*/ | */ | ||||
▲ Show 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | public: | ||||
CBinarySerializerScriptImpl(const ScriptInterface& scriptInterface, ISerializer& serializer); | CBinarySerializerScriptImpl(const ScriptInterface& scriptInterface, ISerializer& serializer); | ||||
void ScriptString(const char* name, JS::HandleString string); | void ScriptString(const char* name, JS::HandleString string); | ||||
void HandleScriptVal(JS::HandleValue val); | void HandleScriptVal(JS::HandleValue val); | ||||
private: | private: | ||||
const ScriptInterface& m_ScriptInterface; | const ScriptInterface& m_ScriptInterface; | ||||
ISerializer& m_Serializer; | ISerializer& m_Serializer; | ||||
ObjectIdCache<u32> m_ScriptBackrefs; | JS::PersistentRootedSymbol m_ScriptBackrefSymbol; | ||||
u32 m_ScriptBackrefsNext; | i32 m_ScriptBackrefsNext; | ||||
u32 GetScriptBackrefTag(JS::HandleObject obj); | i32 GetScriptBackrefTag(JS::HandleObject obj); | ||||
}; | }; | ||||
/** | /** | ||||
* Serialize to a binary stream. T must just implement the Put() method. | * Serialize to a binary stream. T must just implement the Put() method. | ||||
* (We use this templated approach to allow compiler inlining.) | * (We use this templated approach to allow compiler inlining.) | ||||
*/ | */ | ||||
template <typename T> | template <typename T> | ||||
class CBinarySerializer : public ISerializer | class CBinarySerializer : public ISerializer | ||||
▲ Show 20 Lines • Show All 119 Lines • Show Last 20 Lines |
Wildfire Games · Phabricator