18 #ifndef INCLUDED_BINARYSERIALIZER 19 #define INCLUDED_BINARYSERIALIZER 41 m_SerializerImpl(impl)
43 setp(m_Buffer, m_Buffer +
ARRAY_SIZE(m_Buffer) - 1);
51 if (ch == traits_type::eof())
52 return traits_type::not_eof(ch);
63 std::ptrdiff_t n = pptr() - pbase();
67 m_SerializerImpl.Put(
"stream", reinterpret_cast<const u8*> (pbase()), n);
72 std::streamsize
xsputn(
const char* s, std::streamsize n)
74 m_SerializerImpl.Put(
"stream", reinterpret_cast<const u8*> (s), n);
88 void ScriptString(
const char* name, JS::HandleString
string);
89 void HandleScriptVal(JS::HandleValue val);
97 u32 GetScriptBackrefTag(JS::HandleObject obj);
101 bool IsSerializablePrototype(JS::HandleObject prototype);
102 std::wstring GetPrototypeName(JS::HandleObject prototype);
109 template <
typename T>
116 m_RawStreamBuf(m_Impl),
117 m_RawStream(&m_RawStreamBuf)
121 template <
typename A>
125 m_RawStreamBuf(m_Impl),
126 m_RawStream(&m_RawStreamBuf)
132 m_ScriptImpl->SetSerializablePrototypes(prototypes);
149 m_Impl.Put(name, (
const u8*)&value,
sizeof(
uint8_t));
154 m_Impl.Put(name, (
const u8*)&value,
sizeof(
int8_t));
160 m_Impl.Put(name, (
const u8*)&v,
sizeof(
uint16_t));
166 m_Impl.Put(name, (
const u8*)&v,
sizeof(
int16_t));
172 m_Impl.Put(name, (
const u8*)&v,
sizeof(
uint32_t));
178 m_Impl.Put(name, (
const u8*)&v,
sizeof(int32_t));
183 m_Impl.Put(name, (
const u8*)&value,
sizeof(
float));
188 m_Impl.Put(name, (
const u8*)&value,
sizeof(
double));
194 m_Impl.Put(name, (
const u8*)&v,
sizeof(int32_t));
197 virtual void PutBool(
const char* name,
bool value)
199 NumberU8(name, value ? 1 : 0, 0, 1);
202 virtual void PutString(
const char* name,
const std::string& value)
205 PutNumber(
"string length", (
uint32_t)value.length());
206 m_Impl.Put(name, (
u8*)value.data(), value.length());
211 m_ScriptImpl->HandleScriptVal(value);
214 virtual void PutRaw(
const char* name,
const u8* data,
size_t len)
216 m_Impl.Put(name, data, len);
234 #endif // INCLUDED_BINARYSERIALIZER signed char int8_t
Definition: wposix_types.h:37
A simple fixed-point number class.
Definition: Fixed.h:115
int overflow(int ch)
Definition: BinarySerializer.h:49
char m_Buffer[2048]
Definition: BinarySerializer.h:38
CSerializerStreamBuf< T > m_RawStreamBuf
Definition: BinarySerializer.h:230
#define UNUSED(param)
mark a function parameter as unused and avoid the corresponding compiler warning. ...
Definition: code_annotation.h:38
ScriptInterface & m_ScriptInterface
Definition: BinarySerializer.h:92
uint16_t u16
Definition: types.h:38
Serialization interface; see serialization overview.
Definition: ISerializer.h:120
#define to_le16(x)
Definition: byte_order.h:77
shared_ptr< ObjectIdCache< std::wstring > > m_SerializablePrototypes
Definition: BinarySerializer.h:99
short int16_t
Definition: wposix_types.h:38
virtual void PutNumber(const char *name, int32_t value)
Definition: BinarySerializer.h:175
virtual void PutNumber(const char *name, fixed value)
Definition: BinarySerializer.h:191
virtual void PutNumber(const char *name, float value)
Definition: BinarySerializer.h:181
ObjectIdCache< u32 > m_ScriptBackrefs
Definition: BinarySerializer.h:95
T GetInternalValue() const
Definition: Fixed.h:131
ISerializer & m_Serializer
Definition: BinarySerializer.h:93
std::ostream m_RawStream
Definition: BinarySerializer.h:231
virtual void PutRaw(const char *name, const u8 *data, size_t len)
Definition: BinarySerializer.h:214
virtual void PutBool(const char *name, bool value)
Definition: BinarySerializer.h:197
uint8_t u8
Definition: types.h:37
#define ARRAY_SIZE(name)
Definition: code_annotation.h:336
PutScriptVal implementation details.
Definition: BinarySerializer.h:83
virtual void PutNumber(const char *name, uint32_t value)
Definition: BinarySerializer.h:169
u32 m_ScriptBackrefsNext
Definition: BinarySerializer.h:96
#define ENSURE(expr)
ensure the expression <expr> evaluates to non-zero.
Definition: debug.h:287
uint32_t u32
Definition: types.h:39
std::streamsize xsputn(const char *s, std::streamsize n)
Definition: BinarySerializer.h:72
T & m_SerializerImpl
Definition: BinarySerializer.h:37
virtual void PutString(const char *name, const std::string &value)
Definition: BinarySerializer.h:202
#define to_le32(x)
Definition: byte_order.h:78
unsigned char uint8_t
Definition: wposix_types.h:51
int sync()
Definition: BinarySerializer.h:61
virtual void SetSerializablePrototypes(shared_ptr< ObjectIdCache< std::wstring > > &prototypes)
Definition: BinarySerializer.h:130
virtual void PutNumber(const char *name, int8_t value)
Definition: BinarySerializer.h:152
CBinarySerializer(ScriptInterface &scriptInterface, A &a)
Definition: BinarySerializer.h:122
#define T(string_literal)
Definition: secure_crt.cpp:76
int32_t i32
Definition: types.h:34
NONCOPYABLE(CSerializerStreamBuf)
virtual void PutNumber(const char *name, int16_t value)
Definition: BinarySerializer.h:163
virtual std::ostream & GetStream()
Returns a stream which can be used to serialize data directly.
Definition: BinarySerializer.h:219
unsigned int uint32_t
Definition: wposix_types.h:53
T m_Impl
Definition: BinarySerializer.h:225
virtual void PutNumber(const char *name, uint16_t value)
Definition: BinarySerializer.h:157
Abstraction around a SpiderMonkey JSContext.
Definition: ScriptInterface.h:71
int16_t i16
Definition: types.h:33
Serialize to a binary stream.
Definition: BinarySerializer.h:110
unsigned short uint16_t
Definition: wposix_types.h:52
Wrapper for redirecting ostream writes to CBinarySerializer's impl.
Definition: BinarySerializer.h:34
Providing a map-like structure with JSObject pointers (actually their hash) as keys with correct garb...
Definition: ObjectToIDMap.h:29
virtual void PutNumber(const char *name, double value)
Definition: BinarySerializer.h:186
virtual void PutScriptVal(const char *name, JS::MutableHandleValue value)
Definition: BinarySerializer.h:209
CBinarySerializer(ScriptInterface &scriptInterface)
Definition: BinarySerializer.h:114
std::unique_ptr< CBinarySerializerScriptImpl > m_ScriptImpl
Definition: BinarySerializer.h:228
virtual void PutNumber(const char *name, uint8_t value)
Definition: BinarySerializer.h:147
CSerializerStreamBuf(T &impl)
Definition: BinarySerializer.h:40