Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
CBinarySerializer< T > Class Template Reference

Serialize to a binary stream. More...

#include <BinarySerializer.h>

Inheritance diagram for CBinarySerializer< T >:
Collaboration diagram for CBinarySerializer< T >:

Public Member Functions

 CBinarySerializer (const ScriptInterface &scriptInterface)
 
template<typename A >
 CBinarySerializer (const ScriptInterface &scriptInterface, A &a)
 
- Public Member Functions inherited from ISerializer
virtual ~ISerializer ()
 
void NumberU8 (const char *name, uint8_t value, uint8_t lower, uint8_t upper)
 Serialize a number, which must be lower <= value <= upper. More...
 
void NumberI8 (const char *name, int8_t value, int8_t lower, int8_t upper)
 
void NumberU16 (const char *name, uint16_t value, uint16_t lower, uint16_t upper)
 Serialize a number, which must be lower <= value <= upper. More...
 
void NumberI16 (const char *name, int16_t value, int16_t lower, int16_t upper)
 Serialize a number, which must be lower <= value <= upper. More...
 
void NumberU32 (const char *name, uint32_t value, uint32_t lower, uint32_t upper)
 Serialize a number, which must be lower <= value <= upper. More...
 
void NumberI32 (const char *name, int32_t value, int32_t lower, int32_t upper)
 Serialize a number, which must be lower <= value <= upper. More...
 
void NumberU8_Unbounded (const char *name, uint8_t value)
 Serialize a number. More...
 
void NumberI8_Unbounded (const char *name, int8_t value)
 Serialize a number. More...
 
void NumberU16_Unbounded (const char *name, uint16_t value)
 Serialize a number. More...
 
void NumberI16_Unbounded (const char *name, int16_t value)
 Serialize a number. More...
 
void NumberU32_Unbounded (const char *name, uint32_t value)
 Serialize a number. More...
 
void NumberI32_Unbounded (const char *name, int32_t value)
 Serialize a number. More...
 
void NumberFloat_Unbounded (const char *name, float value)
 Serialize a number. More...
 
void NumberDouble_Unbounded (const char *name, double value)
 Serialize a number. More...
 
void NumberFixed_Unbounded (const char *name, fixed value)
 Serialize a number. More...
 
void Bool (const char *name, bool value)
 Serialize a boolean. More...
 
void StringASCII (const char *name, const std::string &value, uint32_t minlength, uint32_t maxlength)
 Serialize an ASCII string. More...
 
void String (const char *name, const std::wstring &value, uint32_t minlength, uint32_t maxlength)
 Serialize a Unicode string. More...
 
void ScriptVal (const char *name, JS::MutableHandleValue value)
 Serialize a JS::MutableHandleValue. More...
 
void RawBytes (const char *name, const u8 *data, size_t len)
 Serialize a stream of bytes. More...
 
virtual bool IsDebug () const
 Returns true if the serializer is being used in debug mode. More...
 
virtual std::ostream & GetStream ()=0
 Returns a stream which can be used to serialize data directly. More...
 

Protected Member Functions

virtual void PutNumber (const char *name, uint8_t value)
 
virtual void PutNumber (const char *name, int8_t value)
 
virtual void PutNumber (const char *name, uint16_t value)
 
virtual void PutNumber (const char *name, int16_t value)
 
virtual void PutNumber (const char *name, uint32_t value)
 
virtual void PutNumber (const char *name, int32_t value)
 
virtual void PutNumber (const char *name, float value)
 
virtual void PutNumber (const char *name, double value)
 
virtual void PutNumber (const char *name, fixed value)
 
virtual void PutBool (const char *name, bool value)
 
virtual void PutString (const char *name, const std::string &value)
 
virtual void PutScriptVal (const char *name, JS::MutableHandleValue value)
 
virtual void PutRaw (const char *name, const u8 *data, size_t len)
 
virtual std::ostream & GetStream ()
 Returns a stream which can be used to serialize data directly. More...
 
virtual void PutNumber (const char *name, uint8_t value)=0
 
virtual void PutNumber (const char *name, int8_t value)=0
 
virtual void PutNumber (const char *name, uint16_t value)=0
 
virtual void PutNumber (const char *name, int16_t value)=0
 
virtual void PutNumber (const char *name, uint32_t value)=0
 
virtual void PutNumber (const char *name, int32_t value)=0
 
virtual void PutNumber (const char *name, float value)=0
 
virtual void PutNumber (const char *name, double value)=0
 
virtual void PutNumber (const char *name, fixed value)=0
 
virtual void PutBool (const char *name, bool value)=0
 
virtual void PutString (const char *name, const std::string &value)=0
 
virtual void PutScriptVal (const char *name, JS::MutableHandleValue value)=0
 
virtual void PutRaw (const char *name, const u8 *data, size_t len)=0
 

Protected Attributes

T m_Impl
 

Private Member Functions

 NONCOPYABLE (CBinarySerializer)
 

Private Attributes

std::unique_ptr< CBinarySerializerScriptImplm_ScriptImpl
 
CSerializerStreamBuf< Tm_RawStreamBuf
 
std::ostream m_RawStream
 

Detailed Description

template<typename T>
class CBinarySerializer< T >

Serialize to a binary stream.

T must just implement the Put() method. (We use this templated approach to allow compiler inlining.)

Constructor & Destructor Documentation

◆ CBinarySerializer() [1/2]

template<typename T >
CBinarySerializer< T >::CBinarySerializer ( const ScriptInterface scriptInterface)
inline

◆ CBinarySerializer() [2/2]

template<typename T >
template<typename A >
CBinarySerializer< T >::CBinarySerializer ( const ScriptInterface scriptInterface,
A &  a 
)
inline

Member Function Documentation

◆ GetStream()

template<typename T >
virtual std::ostream & CBinarySerializer< T >::GetStream ( )
inlineprotectedvirtual

Returns a stream which can be used to serialize data directly.

(This is particularly useful for chaining multiple serializers together.)

Implements ISerializer.

Reimplemented in CStdSerializer.

◆ NONCOPYABLE()

template<typename T >
CBinarySerializer< T >::NONCOPYABLE ( CBinarySerializer< T )
private

◆ PutBool()

template<typename T >
virtual void CBinarySerializer< T >::PutBool ( const char *  name,
bool  value 
)
inlineprotectedvirtual

Implements ISerializer.

◆ PutNumber() [1/9]

template<typename T >
virtual void CBinarySerializer< T >::PutNumber ( const char *  name,
double  value 
)
inlineprotectedvirtual

Implements ISerializer.

◆ PutNumber() [2/9]

template<typename T >
virtual void CBinarySerializer< T >::PutNumber ( const char *  name,
fixed  value 
)
inlineprotectedvirtual

Implements ISerializer.

◆ PutNumber() [3/9]

template<typename T >
virtual void CBinarySerializer< T >::PutNumber ( const char *  name,
float  value 
)
inlineprotectedvirtual

Implements ISerializer.

◆ PutNumber() [4/9]

template<typename T >
virtual void CBinarySerializer< T >::PutNumber ( const char *  name,
int16_t  value 
)
inlineprotectedvirtual

Implements ISerializer.

◆ PutNumber() [5/9]

template<typename T >
virtual void CBinarySerializer< T >::PutNumber ( const char *  name,
int32_t  value 
)
inlineprotectedvirtual

Implements ISerializer.

◆ PutNumber() [6/9]

template<typename T >
virtual void CBinarySerializer< T >::PutNumber ( const char *  name,
int8_t  value 
)
inlineprotectedvirtual

Implements ISerializer.

◆ PutNumber() [7/9]

template<typename T >
virtual void CBinarySerializer< T >::PutNumber ( const char *  name,
uint16_t  value 
)
inlineprotectedvirtual

Implements ISerializer.

◆ PutNumber() [8/9]

template<typename T >
virtual void CBinarySerializer< T >::PutNumber ( const char *  name,
uint32_t  value 
)
inlineprotectedvirtual

Implements ISerializer.

◆ PutNumber() [9/9]

template<typename T >
virtual void CBinarySerializer< T >::PutNumber ( const char *  name,
uint8_t  value 
)
inlineprotectedvirtual

Implements ISerializer.

◆ PutRaw()

template<typename T >
virtual void CBinarySerializer< T >::PutRaw ( const char *  name,
const u8 data,
size_t  len 
)
inlineprotectedvirtual

Implements ISerializer.

◆ PutScriptVal()

template<typename T >
virtual void CBinarySerializer< T >::PutScriptVal ( const char *  name,
JS::MutableHandleValue  value 
)
inlineprotectedvirtual

Implements ISerializer.

◆ PutString()

template<typename T >
virtual void CBinarySerializer< T >::PutString ( const char *  name,
const std::string &  value 
)
inlineprotectedvirtual

Implements ISerializer.

Member Data Documentation

◆ m_Impl

template<typename T >
T CBinarySerializer< T >::m_Impl
protected

◆ m_RawStream

template<typename T >
std::ostream CBinarySerializer< T >::m_RawStream
private

◆ m_RawStreamBuf

template<typename T >
CSerializerStreamBuf<T> CBinarySerializer< T >::m_RawStreamBuf
private

◆ m_ScriptImpl

template<typename T >
std::unique_ptr<CBinarySerializerScriptImpl> CBinarySerializer< T >::m_ScriptImpl
private

The documentation for this class was generated from the following file: