Pixel Dust Game Engine  v0.9.5
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Deserializer Class Reference
Inheritance diagram for Deserializer:
Inheritance graph
[legend]
Collaboration diagram for Deserializer:
Collaboration graph
[legend]

Public Member Functions

virtual uint64 deserialize_8u ()
 Deserialize an 8 byte (64 bit) value.
 
virtual uint32 deserialize_4u ()
 Deserialize a 4 byte (32 bit) value.
 
virtual uint32 deserialize_3u ()
 Deserialize a 3 byte (24 bit) value.
 
virtual uint16 deserialize_2u ()
 Deserialize a 2 byte (16 bit) value.
 
virtual uint8 deserialize_1u ()
 Deserialize an 1 byte (8 bit) value.
 
virtual bool deserialize_bool ()
 Deserialize a boolean (1 bit) value.
 
virtual uint32 deserialize_uint ()
 Deserialize an unsigned value.
 
virtual Color deserialize_color () MAY_THROW(out_of_data)
 Deserialize a pdg::Color value.
 
virtual Offset deserialize_offset () MAY_THROW(out_of_data)
 Deserialize a pdg::Offset value.
 
virtual Rect deserialize_rect () MAY_THROW(out_of_data)
 Deserialize a pdg::Rect.
 
virtual RotatedRect deserialize_rotr () MAY_THROW(out_of_data)
 Deserialize a pdg::RotatedRect.
 
virtual Quad deserialize_quad () MAY_THROW(out_of_data)
 Deserialize a pdg::Quad.
 
virtual uint32 deserialize_str (char *outStr, uint32 strMaxLen)
 Deserialize a string value.
 
virtual uint32 deserialize_strGetLen ()
 get length of a string value, as if it were deserialized
 
virtual uint32 deserialize_mem (void *outMem, uint32 memMaxLen)
 Deserialize an arbitrary block of memory.
 
virtual uint32 deserialize_memGetLen ()
 Deserialize a string value.
 
virtual ISerializabledeserialize_obj ()
 Deserialize a serializable object.
 
void setDataPtr (void *ptr, uint32 ptrSize)
 
 Deserializer ()
 
 Deserializer (void *ptr, uint32 ptrSize)
 
virtual ~Deserializer ()
 
- Public Member Functions inherited from IDeserializer
int64 deserialize_8 () MAY_THROW(out_of_data)
 
int32 deserialize_4 () MAY_THROW(out_of_data)
 
int16 deserialize_2 () MAY_THROW(out_of_data)
 
int8 deserialize_1 () MAY_THROW(out_of_data)
 
float deserialize_f () MAY_THROW(out_of_data)
 Serialize a floating point value into a buffer.
 
double deserialize_d () MAY_THROW(out_of_data)
 Serialize a double precision floating point value into a buffer.
 
Point deserialize_point () MAY_THROW(out_of_data)
 Deserialize a pdg::Point value.
 
Vector deserialize_vector () MAY_THROW(out_of_data)
 Deserialize a pdg::Vector value.
 
void deserialize_string (std::string &outStr) MAY_THROW((out_of_data
 Deserialize a string value into a std::string.
 
template<typename T >
T * deserialize_ref () MAY_THROW((out_of_data
 Deserialize a reference to a non-serializable object.
 

Protected Member Functions

virtual char * statusDump (int hiliteBytes=0)
 
virtual void * deserialize_ptr ()
 

Protected Attributes

uint8 * mDataPtr
 
uint8 * mDataEnd
 
uint8 * p
 
uint32 mDataSize
 
uint8 mLastBoolByte
 
int mBoolBitOffset
 
bool mUsingTags
 
std::vector< ISerializable * > mDeserializedInstances
 
- Protected Attributes inherited from IDeserializer
virtual void bad_tag
 
virtual void sync_error
 
virtual void unknown_object = 0
 

Additional Inherited Members

- Public Types inherited from IDeserializer
typedef ISerializable *(* CreateSerializableFunc )()
 
- Static Public Member Functions inherited from IDeserializer
template<class T >
static void registerClass ()
 Register a class that is derived from Serializable.
 
static void registerClass (uint32 classTag, CreateSerializableFunc classNewFunc)
 Register a class that is derived from ISerializable.
 
static void registerObject (void *obj, uint32 uniqueId)
 Register object that is not serializable for use with |de|serialize_ref()
 
- Public Attributes inherited from IDeserializer
virtual uint32 bad_tag = 0
 
void bad_tag
 
virtual ISerializable bad_tag
 
virtual ISerializable sync_error
 
virtual ISerializable unknown_object = 0
 
bad_tag
 
sync_error
 
unknown_object
 
- Static Public Attributes inherited from IDeserializer
static int s_TraceDepth
 

Detailed Description

A class to serialize data into memory

Constructor & Destructor Documentation

Deserializer ( void *  ptr,
uint32  ptrSize 
)
virtual ~Deserializer ( )
virtual

Member Function Documentation

virtual uint8 deserialize_1u ( )
virtual

Deserialize an 1 byte (8 bit) value.

internal pointer is advanced 1 btye

Returns
the deserialized 8 bit value

Implements IDeserializer.

virtual uint16 deserialize_2u ( )
virtual

Deserialize a 2 byte (16 bit) value.

internal pointer is advanced 2 btyes

Returns
the deserialized 16 bit value

Implements IDeserializer.

virtual uint32 deserialize_3u ( )
virtual

Deserialize a 3 byte (24 bit) value.

internal pointer is advanced 3 btyes

Returns
the deserialized 24 bit value

Implements IDeserializer.

virtual uint32 deserialize_4u ( )
virtual

Deserialize a 4 byte (32 bit) value.

internal pointer is advanced 4 btyes

Returns
the deserialized 32 bit value

Implements IDeserializer.

virtual uint64 deserialize_8u ( )
virtual

Deserialize an 8 byte (64 bit) value.

internal pointer is advanced 8 btyes

Returns
the deserialized 64 bit value

Implements IDeserializer.

virtual bool deserialize_bool ( )
virtual

Deserialize a boolean (1 bit) value.

internal pointer gets advanced by 1 or 0 bytes, depending on bytes required to store the value

Returns
the boolean that was deserialized This is optimized for series of boolean values, so that between 1 and 8 bools serialized sequentially only use a single byte

Implements IDeserializer.

virtual Color deserialize_color ( )
virtual

Deserialize a pdg::Color value.

internal pointer is advanced by ? bytes, depending on bytes required to store value

Returns
the Color that was deserialized

Implements IDeserializer.

virtual uint32 deserialize_mem ( void *  outMem,
uint32  memMaxLen 
)
virtual

Deserialize an arbitrary block of memory.

Parameters
pa reference to a buffer pointer; pointer gets advanced past mem block to start of next entity in buffer
outMem,abuffer to hold the resulting block of memory
memMaxLen,themax length of the output block, that the buffer can accomodate If the serialized string is longer than outStrMaxLen, it will be truncated and the buffer pointer p will still be advanced past the string to the start of the next entity in the buffer.
Returns
the length of the string in bytes

Reimplemented from IDeserializer.

virtual uint32 deserialize_memGetLen ( )
virtual

Deserialize a string value.

internal pointer is NOT advanced. Use this to pre-flight allocation for blocks of memory

Returns
the length of the serialized block of memory in bytes

Reimplemented from IDeserializer.

virtual ISerializable* deserialize_obj ( )
virtual

Deserialize a serializable object.

internal pointer gets advanced past object to start of next entity in buffer

Returns
NULL, or a newly created Serializable object NULL return happens if serialized object reference was null, or if the object could not be deserialized If object could not be deserialized, either because the subclass was unknown or because the data was corrupt, the internal pointer will still be advanced past the object to the start of the next entity in the buffer.

Reimplemented from IDeserializer.

virtual Offset deserialize_offset ( )
virtual

Deserialize a pdg::Offset value.

internal pointer is advanced by 1 to 9 bytes, depending on bytes required to store value

Returns
the Offset that was deserialized

Implements IDeserializer.

virtual void* deserialize_ptr ( )
protectedvirtual

Reimplemented from IDeserializer.

virtual Quad deserialize_quad ( )
virtual

Deserialize a pdg::Quad.

internal pointer is advanced by 1, 3 or 5 bytes, depending on bytes required to store value

Returns
the Quad that was deserialized

Implements IDeserializer.

virtual Rect deserialize_rect ( )
virtual

Deserialize a pdg::Rect.

internal pointer is advanced by ? bytes, depending on bytes required to store value

Returns
the Rect that was deserialized

Implements IDeserializer.

virtual RotatedRect deserialize_rotr ( )
virtual

Deserialize a pdg::RotatedRect.

internal pointer is advanced by ? bytes, depending on bytes required to store value

Returns
the RotatedRect that was deserialized

Implements IDeserializer.

virtual uint32 deserialize_str ( char *  outStr,
uint32  strMaxLen 
)
virtual

Deserialize a string value.

Parameters
outStr,abuffer to hold the resulting string
strMaxLen,themax length of the output string, including the NUL terminator, that the buffer can accomodate If the serialized string is longer than outStrMaxLen, it will be truncated and the internal pointer p will still be advanced past the string to the start of the next entity in the internal buffer.
Returns
the length of the string in bytes

Reimplemented from IDeserializer.

virtual uint32 deserialize_strGetLen ( )
virtual

get length of a string value, as if it were deserialized

internal pointer is NOT advanced. Use this to pre-flight allocation for longer strings

Returns
the length of the serialized string in bytes

Reimplemented from IDeserializer.

virtual uint32 deserialize_uint ( )
virtual

Deserialize an unsigned value.

internal pointer is advanced by 1, 3 or 5 bytes, depending on bytes required to store value

Returns
the unsigned value that was deserialized

Implements IDeserializer.

void setDataPtr ( void *  ptr,
uint32  ptrSize 
)
virtual char* statusDump ( int  hiliteBytes = 0)
protectedvirtual

Implements IDeserializer.

Member Data Documentation

int mBoolBitOffset
protected
uint8* mDataEnd
protected
uint8* mDataPtr
protected
uint32 mDataSize
protected
std::vector<ISerializable*> mDeserializedInstances
protected
uint8 mLastBoolByte
protected
bool mUsingTags
protected
uint8* p
protected