5#ifndef PT_API_SERIALIZATIONCONTEXT_H
6#define PT_API_SERIALIZATIONCONTEXT_H
9#include <Pt/TypeInfo.h>
10#include <Pt/FixupInfo.h>
11#include <Pt/SerializationInfo.h>
12#include <Pt/SerializationSurrogate.h>
18class SerializationContextImpl;
37 { _refsEnabled = enabled; }
41 {
return _refsEnabled; }
71 const BasicSerializationSurrogate<T>*
getSurrogate()
const;
96 const char*
getId(
const void* p)
108 const char* name,
const char*
id)
128 void prepareFixup(
void* obj,
const char*
id, FixupInfo::FixupHandler fh,
unsigned mid)
163 virtual void onBeginLoad(
void* obj,
const std::type_info& fixupInfo,
164 const char* name,
const char*
id);
180 virtual void onPrepareFixup(
void* obj,
const char*
id, FixupInfo::FixupHandler fh,
unsigned mid);
188 void registerSurrogate(
const std::type_info& ti, SerializationSurrogate* surrogate);
199 SerializationContextImpl* _cache;
Context for the serialization of types.
Definition Api-SerializationContext.h:26
virtual const char * onMakeId(const void *p)
Create an ID for a type, if referenced.
const char * makeId(const void *p)
Create an ID for a type, if referenced.
Definition Api-SerializationContext.h:101
virtual bool onBeginSave(const void *p, const char *name)
Begin saving a type.
virtual void onBeginLoad(void *obj, const std::type_info &fixupInfo, const char *name, const char *id)
Begin loading a type.
virtual void onRebindFixup(const char *id, void *obj, void *prev)
Rebind reference to fixup for a ID.
SerializationInfo * get()
Gets a SerializationInfo object from the pool.
virtual void onPrepareId(const void *p)
Mark a type as being referenced.
virtual void onFixup()
Fixup all prepared references to their targets.
void enableReferencing(bool enabled)
Enables recording of references.
Definition Api-SerializationContext.h:36
const char * getId(const void *p)
Get the ID for a reference.
Definition Api-SerializationContext.h:96
void push(SerializationInfo *si)
Pushes a SerializationInfo object back on the pool.
virtual void onFinishLoad()
Finish loading a type.
virtual void onRebindTarget(const char *id, void *obj)
Rebind a ID to a referenced type.
void rebindTarget(const char *id, void *obj)
Rebind a ID to a referenced type.
Definition Api-SerializationContext.h:118
const BasicSerializationSurrogate< T > * getSurrogate() const
Find a surrogate for a type.
Definition SerializationContext.h:193
virtual const char * onGetId(const void *p)
Get the ID for a reference.
void registerSurrogate(const std::string &typeName, void(*compose)(const Pt::SerializationInfo &si, T &type), void(*decompose)(Pt::SerializationInfo &si, const T &type))
Register a serialization surrogate function pair.
Definition SerializationContext.h:204
virtual void onPrepareFixup(void *obj, const char *id, FixupInfo::FixupHandler fh, unsigned mid)
Prepare a reference to fixup for an ID.
void finishLoad()
Finish loading a type.
Definition Api-SerializationContext.h:113
void fixup()
Fixup all prepared references to their targets.
Definition Api-SerializationContext.h:133
virtual void onFinishSave()
Finish saving a type.
void beginLoad(void *obj, const std::type_info &ti, const char *name, const char *id)
Begin loading a type.
Definition Api-SerializationContext.h:107
bool beginSave(const void *p, const char *name)
Begin saving a type.
Definition Api-SerializationContext.h:81
SerializationContext()
Default Constructor.
void finishSave()
Finish saving a type.
Definition Api-SerializationContext.h:86
bool isReferencing() const
Returns true if references are recorded.
Definition Api-SerializationContext.h:40
virtual ~SerializationContext()
Destructor.
bool compose(const SerializationInfo &si, T &type) const
Returns true if the type could be composed with a surrogate.
Definition SerializationContext.h:168
void clear()
Clears all content.
Definition Api-SerializationContext.h:76
bool decompose(SerializationInfo &si, const T &type)
Returns true if the type could be decomposed with a surrogate.
Definition SerializationContext.h:180
void rebindFixup(const char *id, void *obj, void *prev)
Rebind reference to fixup for a ID.
Definition Api-SerializationContext.h:123
void prepareId(const void *p)
Mark a type as being referenced.
Definition Api-SerializationContext.h:91
virtual void onClear()
Clears all content.
void prepareFixup(void *obj, const char *id, FixupInfo::FixupHandler fh, unsigned mid)
Prepare a reference to fixup for an ID.
Definition Api-SerializationContext.h:128
Represents arbitrary types during serialization.
Definition SerializationInfo.h:59
Core module.
Definition Allocator.h:33