51 return s_TypeInfoMutex;
56 return s_TypeInfoLock;
101 : m_TypeFamily(typeFamily), m_Size(
size), m_Name(),
123 : m_TypeFamily(typeFamily), m_Size(
size), m_Name(name),
144 : m_TypeFamily(typeFamily), m_Size(
size), m_Name(name),
302 "This type cannot be allocated on heap");
316 return this == typeInfo;
Copy hook for a standalone object.
const string & GetNamespaceName(void) const
virtual ~CNamespaceInfoItem(void)
ENsQualifiedMode IsNsQualified(void)
void SetNsQualified(bool qualified)
ENsQualifiedMode m_NsQualified
bool HasNamespacePrefix(void) const
const string & GetNamespacePrefix(void) const
void SetNamespacePrefix(const string &ns_prefix)
bool HasNamespaceName(void) const
void SetNamespaceName(const string &ns_name)
Read hook for a standalone object.
Root class for all serialization exceptions.
Base class for user-defined serializable classes to allow for objects assignment and comparison.
Skip hook for a standalone object.
static void WriteWithHook(CObjectOStream &out, TTypeInfo objectType, TConstObjectPtr objectPtr)
static void CopyWithHook(CObjectStreamCopier &copier, TTypeInfo objectType)
static void ReadWithHook(CObjectIStream &in, TTypeInfo objectType, TObjectPtr objectPtr)
static void SkipWithHook(CObjectIStream &stream, TTypeInfo objectType)
CTypeInfo class contains all information about C++ types (both basic and classes): members and layout...
Write hook for a standalone object.
std::ofstream out("events_result.xml")
main entry point for tests
@ eTriState_False
The value is equivalent to false/no.
@ eTriState_True
The value is equivalent to true/yes.
@ eTriState_Unknown
The value is indeterminate.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
ENsQualifiedMode
Defines namespace qualification of XML tags.
SSystemMutex & GetTypeInfoMutex(void)
const void * TConstObjectPtr
void Read(CObjectIStream &in, TObjectPtr object, const CTypeRef &type)
void Write(CObjectOStream &out, TConstObjectPtr object, const CTypeRef &type)
#define XSERIAL_TYPEINFO_WRITELOCK
CRWLock & GetTypeInfoLock(void)
void(* TTypeWriteFunction)(CObjectOStream &out, const CTypeInfo *objectType, TConstObjectPtr objectPtr)
void(* TTypeCopyFunction)(CObjectStreamCopier &copier, const CTypeInfo *objectType)
TFunction GetDefaultFunction(void) const
void(* TTypeReadFunction)(CObjectIStream &in, const CTypeInfo *objectType, TObjectPtr objectPtr)
void SetDefaultFunction(TFunction func)
void SetPathHook(CObjectStack *stk, const string &path, THook *hook)
void ResetGlobalHook(void)
void SetLocalHook(TLocalHooks &key, THook *hook)
THook * GetPathHook(CObjectStack &stk) const
void SetGlobalHook(THook *hook)
THook * GetHook(const TLocalHooks &key) const
void(* TTypeSkipFunction)(CObjectIStream &in, const CTypeInfo *objectType)
void ResetLocalHook(TLocalHooks &key)
virtual void SkipObject(CObjectIStream &stream, const CObjectTypeInfo &type)=0
CLocalHookSet< CSkipObjectHook > m_ObjectSkipHookKey
virtual void ReadObject(CObjectIStream &in, const CObjectInfo &object)=0
This method will be called at approriate time when the object of requested type is to be read.
virtual void WriteObject(CObjectOStream &out, const CConstObjectInfo &object)=0
This method will be called at approriate time when the object of requested type is to be written.
void AddMonitorType(TTypeInfo type)
CLocalHookSet< CWriteObjectHook > m_ObjectHookKey
CLocalHookSet< CReadObjectHook > m_ObjectHookKey
CLocalHookSet< CCopyObjectHook > m_ObjectHookKey
CObjectIStream & In(void) const
virtual void CopyObject(CObjectStreamCopier &copier, const CObjectTypeInfo &type)=0
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
void SetWriteFunction(TTypeWriteFunction func)
const string & GetName(void) const
Get name of this type.
virtual const string & GetModuleName(void) const
Get module name.
void SetPathCopyHook(CObjectStreamCopier *copier, const string &path, CCopyObjectHook *hook)
Set local context-specific copy hook.
virtual void DeleteExternalObjects(TObjectPtr object) const
void ResetLocalWriteHook(CObjectOStream &out)
Reset local write hook.
CHookData< CReadObjectHook, TTypeReadFunction > m_ReadHookData
void DataSpec(EDataSpec spec)
virtual TTypeInfo GetRealTypeInfo(TConstObjectPtr object) const
const string & GetAccessModuleName(void) const
Return internal or regular module name.
CTypeInfo(ETypeFamily typeFamily, size_t size)
bool HasNamespaceName(void) const
Check if data type has namespace name.
CHookData< CCopyObjectHook, TTypeCopyFunction > m_CopyHookData
virtual CTypeInfo * SetTag(CAsnBinaryDefs::TLongTag tag, CAsnBinaryDefs::ETagClass tagclass=CAsnBinaryDefs::eUniversal, CAsnBinaryDefs::ETagType tagtype=CAsnBinaryDefs::eAutomatic)
void SetModuleName(const string &name)
Set module name.
void x_CreateInfoItemIfNeeded(void) const
const string & GetInternalName(void) const
Return internal type access string e.g. Int-fuzz.range.
const CTypeInfo * SetNamespaceName(const string &ns_name) const
Set namespace name.
void SetGlobalWriteHook(CWriteObjectHook *hook)
Set global (for all input streams) write hook.
const string & GetNamespacePrefix(void) const
Get namespace prefix.
void ResetGlobalReadHook(void)
Reset global read hooks.
virtual EMayContainType GetMayContainType(TTypeInfo type) const
void DefaultSkipData(CObjectIStream &in) const
void SetNamespacePrefix(const string &ns_prefix) const
Set namespace prefix.
CAsnBinaryDefs::ETagClass m_TagClass
void SetInternalName(const string &name)
Mark this type as internal.
const CSerialUserOp * AsCSerialUserOp(TConstObjectPtr obj) const
TTypeReadFunction GetReadFunction(void) const
const string & GetNamespaceName(void) const
Get namespace name.
bool HasNamespacePrefix(void) const
Check if data type has namespace prefix.
void DefaultReadData(CObjectIStream &in, TObjectPtr object) const
void DefaultWriteData(CObjectOStream &out, TConstObjectPtr object) const
void SetLocalWriteHook(CObjectOStream &out, CWriteObjectHook *hook)
Set local (for a specific input stream) write hook.
void ResetGlobalCopyHook(void)
Reset global copy hooks.
void ResetLocalSkipHook(CObjectIStream &in)
Reset local skip hook.
TTypeCreate m_CreateFunction
bool IsCObject(void) const
Check is this TypeInfo object is kind of CClassTypeInfoBase.
CHookData< CWriteObjectHook, TTypeWriteFunction > m_WriteHookData
const string & GetInternalModuleName(void) const
Return internal type's owner module name.
CAsnBinaryDefs::ETagType m_TagType
ENsQualifiedMode IsNsQualified(void) const
Get namespace 'qualified' property.
const CTypeInfo * SetNsQualified(bool qualified) const
Set namespace 'qualified' property.
atomic< ETriState > m_CSerialUserOp
void SetLocalCopyHook(CObjectStreamCopier &copier, CCopyObjectHook *hook)
Set local (for a specific input stream) copy hook.
bool IsInternal(void) const
Check if this TypeInfo describes internal unnamed type.
void SetSkipFunction(TTypeSkipFunction func)
void SetGlobalCopyHook(CCopyObjectHook *hook)
Set global (for all input streams) copy hook.
CHookData< CSkipObjectHook, TTypeSkipFunction > m_SkipHookData
virtual bool IsType(TTypeInfo type) const
void CopyInfoItem(TTypeInfo other)
void SetPathReadHook(CObjectIStream *in, const string &path, CReadObjectHook *hook)
Set local context-specific read hook.
void SetPathWriteHook(CObjectOStream *out, const string &path, CWriteObjectHook *hook)
Set local context-specific write hook.
void SetCreateFunction(TTypeCreate func)
void SetGlobalReadHook(CReadObjectHook *hook)
Set global (for all input streams) read hook.
virtual bool IsParentClassOf(const CClassTypeInfo *classInfo) const
void SetPathSkipHook(CObjectIStream *in, const string &path, CSkipObjectHook *hook)
Set local context-specific skip hook.
void DefaultCopyData(CObjectStreamCopier &copier) const
CNamespaceInfoItem * m_InfoItem
const string & GetAccessName(void) const
Return internal or regular name.
void SetLocalSkipHook(CObjectIStream &in, CSkipObjectHook *hook)
Set local (for a specific input stream) skip hook.
void SetCopyFunction(TTypeCopyFunction func)
virtual const CObject * GetCObjectPtr(TConstObjectPtr objectPtr) const
void ResetLocalCopyHook(CObjectStreamCopier &copier)
Reset local copy hook.
void SetLocalReadHook(CObjectIStream &in, CReadObjectHook *hook)
Set local (for a specific input stream) read hook.
void ResetLocalReadHook(CObjectIStream &in)
Reset local read hook.
CAsnBinaryDefs::TLongTag m_Tag
void ResetGlobalWriteHook(void)
Reset global write hooks.
virtual void Delete(TObjectPtr object) const
Delete object.
void SetReadFunction(TTypeReadFunction func)
const struct ncbi::grid::netcache::search::fields::SIZE size
Multi-threading – mutexes; rw-locks; semaphore.
Multi-threading – classes, functions, and features.
std::istream & in(std::istream &in_, double &x_)
DEFINE_STATIC_MUTEX(s_TypeInfoMutex)