class IntermediateSerializer

Helper class for performing SerializedObject

<

-> IReflectable encoding

& decoding.

Public

Constructors

IntermediateSerializer

IntermediateSerializer(FrameAllocator *allocator, RTTIOperationContext &context)

Methods

Encode

SPtr<SerializedObject> Encode(IReflectable *object, SerializedObjectEncodeFlags flags)

Encodes an IReflectable object into an intermediate representation.

Decode

SPtr<IReflectable> Decode(const SerializedObject *serializedObject)

Decodes an intermediate representation of a serialized object into the actual object.

Internal

Methods

SerializeIterableField

SPtr<ISerialized> SerializeIterableField(IReflectable &object, RTTIType &rttiInstance, RTTIIteratorField &field, SerializedObjectEncodeFlags flags)

Serializes an entire field from the provided reflectable object.

Field must support RTTI iterators.

object
Object that contains the field to serialize.
rttiInstance
Type information describing .
field
Field to serialize.
flags
Flags controlling the serialization process.

Returns: Serialized field, or null if the field data is null.

SerializeDataBlockField

SPtr<ISerialized> SerializeDataBlockField(IReflectable *object, RTTIType *rtti, RTTIField *field, SerializedObjectEncodeFlags flags)

Serializes a data block field entry from a reflectable object into a SerializedInstance.

SerializeElement

SPtr<ISerialized> SerializeElement(IReflectable &object, RTTIType &rttiInstance, RTTIIteratorField &field, IRTTIIterator &iterator, SerializedObjectEncodeFlags flags)

Serializes an element at the provided iterator location.

object
Object that contains the field to serialize.
rttiInstance
Type information describing .
field
Field from which the element is being serialized.
iterator
Iterator pointing to the location of the element to serialize.
flags
Flags controlling the serialization process.

Returns: Serialized element, or null if the source element is null.

SerializeTupleElement

SPtr<ISerialized> SerializeTupleElement(IReflectable &object, RTTIType &rttiInstance, RTTIIteratorField &field, IRTTIIterator &iterator, u32 tupleElementIndex, SerializedObjectEncodeFlags flags)

Serializes a single tuple element from the provided iterator location.

object
Object that contains the field to serialize.
rttiInstance
Type information describing .
field
Field from which the element is being serialized.
iterator
Iterator pointing to the location of the element to serialize.
tupleElementIndex
Tuple index to serialize. e.g. if element is of std::pair <K , V> type, index 0 would represent K and index 1 would represent V. Should be 0 if the iterator element is not a tuple type.
flags
Flags controlling the serialization process.

Returns: Serialized tuple element, or null if the source element is null.

DeserializeElement

void DeserializeElement(RTTIType &rttiInstance, const SPtr<IReflectable> &object, RTTIIteratorField &field, const SPtr<IRTTIIterator> &iterator, const SPtr<ISerialized> &entry)

Deserializes a single field, array or map entry from the provided field, at the provided iterator location.

DeserializeElement

void DeserializeElement(RTTIIteratorField &field, void *outFieldValue, const SPtr<ISerialized> &entry)

Similar to DeserializeElement overload accepting an iterator, except accepts a pre-allocated output field value in which to write to.

DeserializeTupleElement

void DeserializeTupleElement(RTTIIteratorField &field, void *outFieldValue, u32 tupleElementIndex, const SPtr<ISerialized> &entry)

Decodes and writes it into at the specified tuple element index.

Private

Methods

DeserializeReflectableObject

void DeserializeReflectableObject(const SPtr<IReflectable> &object, const SerializedObject *serializableObject)

Deserializes a single IReflectable object.

GetOrDeserializeReflectableObject

SPtr<IReflectable> GetOrDeserializeReflectableObject(const SPtr<SerializedObject> &serializedObject)

Attempts to retrieve a previously deserialized reflectable object from the deserialized object map.

If not present, deserializes the object and adds it to the deserializes object map, and returns the new object.

GetReflectableObject

SPtr<IReflectable> GetReflectableObject(const SPtr<SerializedObject> &serializedObject)

Attempts to retrieve a previously deserialized reflectable object.

SerializeReflectableObject

SPtr<SerializedObject> SerializeReflectableObject(const IReflectable &object, SerializedObjectEncodeFlags flags)

Serializes a single IReflectable object.

GetOrSerializeReflectableObject

SPtr<SerializedObject> GetOrSerializeReflectableObject(const IReflectable &object, SerializedObjectEncodeFlags flags)

Attempts to retrieve a previously serialized object for the provided reflectable object, or if not found, serializes the object.

Fields

mDeserializedObjectMap

UnorderedMap<const SerializedObject *, ObjectDeserializationData> mDeserializedObjectMap

mSerializedObjectMap

UnorderedMap<const IReflectable *, SPtr<SerializedObject>> mSerializedObjectMap

mContext

mAllocator

FrameAllocator * mAllocator