Changeset View
Changeset View
Standalone View
Standalone View
source/simulation2/serialization/StdDeserializer.h
Show All 15 Lines | |||||
*/ | */ | ||||
#ifndef INCLUDED_STDDESERIALIZER | #ifndef INCLUDED_STDDESERIALIZER | ||||
#define INCLUDED_STDDESERIALIZER | #define INCLUDED_STDDESERIALIZER | ||||
#include "IDeserializer.h" | #include "IDeserializer.h" | ||||
#include "ps/utf16string.h" | #include "ps/utf16string.h" | ||||
#include "scriptinterface/third_party/ObjectToIDMap.h" | |||||
#include <map> | #include <map> | ||||
class CStdDeserializer : public IDeserializer | class CStdDeserializer : public IDeserializer | ||||
{ | { | ||||
NONCOPYABLE(CStdDeserializer); | NONCOPYABLE(CStdDeserializer); | ||||
public: | public: | ||||
CStdDeserializer(const ScriptInterface& scriptInterface, std::istream& stream); | CStdDeserializer(const ScriptInterface& scriptInterface, std::istream& stream); | ||||
virtual ~CStdDeserializer(); | virtual ~CStdDeserializer(); | ||||
virtual void ScriptVal(const char* name, JS::MutableHandleValue out); | virtual void ScriptVal(const char* name, JS::MutableHandleValue out); | ||||
virtual void ScriptObjectAppend(const char* name, JS::HandleValue objVal); | // | ||||
virtual void ScriptObjectAppendProperties(const char* name, JS::MutableHandleValue objToAppendTo); | |||||
virtual void ScriptString(const char* name, JS::MutableHandleString out); | virtual void ScriptString(const char* name, JS::MutableHandleString out); | ||||
virtual std::istream& GetStream(); | virtual std::istream& GetStream(); | ||||
virtual void RequireBytesInStream(size_t numBytes); | virtual void RequireBytesInStream(size_t numBytes); | ||||
virtual void SetSerializablePrototypes(std::map<std::wstring, JS::Heap<JSObject*> >& prototypes); | |||||
static void Trace(JSTracer *trc, void *data); | static void Trace(JSTracer *trc, void *data); | ||||
void TraceMember(JSTracer *trc); | void TraceMember(JSTracer *trc); | ||||
protected: | protected: | ||||
virtual void Get(const char* name, u8* data, size_t len); | virtual void Get(const char* name, u8* data, size_t len); | ||||
private: | private: | ||||
JS::Value ReadScriptVal(const char* name, JS::HandleObject appendParent); | JS::Value ReadScriptVal(const char* name, JS::HandleObject customObject = nullptr); | ||||
void ReadStringLatin1(const char* name, std::vector<JS::Latin1Char>& str); | void ReadStringLatin1(const char* name, std::vector<JS::Latin1Char>& str); | ||||
void ReadStringUTF16(const char* name, utf16string& str); | void ReadStringUTF16(const char* name, utf16string& str); | ||||
virtual void AddScriptBackref(JS::HandleObject obj); | virtual void AddScriptBackref(JS::HandleObject obj); | ||||
virtual void GetScriptBackref(u32 tag, JS::MutableHandleObject ret); | virtual void GetScriptBackref(u32 tag, JS::MutableHandleObject ret); | ||||
std::vector<JS::Heap<JSObject*> > m_ScriptBackrefs; | std::vector<JS::Heap<JSObject*> > m_ScriptBackrefs; | ||||
JS::PersistentRooted<JSObject*> m_dummyObject; | JS::PersistentRooted<JSObject*> m_dummyObject; | ||||
const ScriptInterface& m_ScriptInterface; | const ScriptInterface& m_ScriptInterface; | ||||
std::istream& m_Stream; | std::istream& m_Stream; | ||||
std::map<std::wstring, JS::Heap<JSObject*> > m_SerializablePrototypes; | struct SPrototypeInfo | ||||
{ | |||||
bool IsSerializablePrototype(const std::wstring& name); | bool hasCustomDeserialize = false; | ||||
void GetSerializablePrototype(const std::wstring& name, JS::MutableHandleObject ret); | bool hasNullSerialize = false; | ||||
}; | |||||
ObjectIdCache<SPrototypeInfo> m_PrototypeInfo; | |||||
SPrototypeInfo GetPrototypeInfo(JS::HandleObject prototype); | |||||
}; | }; | ||||
#endif // INCLUDED_STDDESERIALIZER | #endif // INCLUDED_STDDESERIALIZER |
Wildfire Games · Phabricator