* nonCObject, TTypeCreate createFunc,
49 consttype_info& ti, TGetTypeIdFunction idFunc)
51m_GetTypeIdFunction(idFunc)
57 const CObject* cObject, TTypeCreate createFunc,
58 consttype_info& ti, TGetTypeIdFunction idFunc)
60m_GetTypeIdFunction(idFunc)
66 const void* nonCObject, TTypeCreate createFunc,
67 consttype_info& ti, TGetTypeIdFunction idFunc)
69m_GetTypeIdFunction(idFunc)
75 const CObject* cObject, TTypeCreate createFunc,
76 consttype_info& ti, TGetTypeIdFunction idFunc)
78m_GetTypeIdFunction(idFunc)
124subclasses->push_back(make_pair(
id,
type));
151 string(
"invalid parent class type: ") +
170 if( ti == 0 || ti == &
GetId() )
180 for( TSubClasses::const_iterator
i= subclasses->begin();
181 i!= subclasses->end();
212 boolhaveSetFlag =
info->HaveSetFlag();
213 if( haveSetFlag &&
info->GetSetFlagNo(
object) )
225memberType->
Assign(member, def);
229 info->UpdateSetFlagNo(
object);
276 in.ReadClassSequential(classType, objectPtr);
286 in.ReadClassRandom(classType, objectPtr);
301 in.SetMemberNillable();
303 in.ReadNamedType(classType,
313 in.UnsetMemberNillable();
323 out.WriteClassRandom(classType, objectPtr);
333 out.WriteClassSequential(classType, objectPtr);
363 "implicit "+classType->
GetName());
373 out.WriteNamedType(classType,
416 in.SkipClassRandom(classType);
425 in.SkipClassSequential(classType);
436 in.SetMemberNillable();
439 in.UnsetMemberNillable();
466 if(
info->HaveSetFlag() ) {
467 if( !
info->CompareSetFlags(object1,object2) )
476 returnop1->UserOp_Equals(*op2);
492 info->UpdateSetFlag(dst, src);
499opdst->UserOp_Assign(*opsrc);
514 if( typeInfo ==
this)
516}
while( typeInfo );
542 if( members ==
"*") {
549vector<CTempString> tokens;
551 ITERATE( vector<CTempString>, it, tokens ) {
Read hook for data member of a containing object (eg, SEQUENCE)
Root class for all serialization exceptions.
Base class for user-defined serializable classes to allow for objects assignment and comparison.
CTempString implements a light-weight string on top of a storage buffer whose lifetime management is ...
CTypeInfo class contains all information about C++ types (both basic and classes): members and layout...
static TObjectPtr GetMember(const CMemberInfo *memberInfo, TObjectPtr object)
Include a standard set of the NCBI C++ Toolkit most basic headers.
std::ofstream out("events_result.xml")
main entry point for tests
bool Empty(const CNcbiOstrstream &src)
static DLIST_TYPE *DLIST_NAME() last(DLIST_LIST_TYPE *list)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
bool Optional(void) const
bool UpdateSetFlagNo(TObjectPtr object) const
set 'setFlag' to eSetNo and return true if previous value wasn't eSetNo
bool GetSetFlagNo(TConstObjectPtr object) const
true if 'setFlag' is eSetNo
TObjectPtr GetItemPtr(TObjectPtr object) const
void UpdateSetFlagYes(TObjectPtr object) const
set 'setFlag' to eSetYes
bool Nillable(void) const
CDelayBuffer & GetDelayBuffer(TObjectPtr object) const
bool CanBeDelayed(void) const
TTypeInfo GetTypeInfo(void) const
bool HaveSetFlag(void) const
void SetParentClass(void)
bool NonEmpty(void) const
void Validate(TConstObjectPtr classPtr, const CObjectStack &stk) const
ESerialRecursionMode
How to assign and compare child sub-objects of serial objects.
size_t TMemberIndex
Type used for indexing class members and choice variants.
TTypeInfo(* TTypeInfoGetter)(void)
ESerialVerifyData
Data verification parameters.
const void * TConstObjectPtr
const CTypeInfo * TTypeInfo
static const TObjectType * SafeCast(TTypeInfo type)
@ eSerialVerifyData_Yes
do verify
@ eSerialVerifyData_No
do not verify
@ eSerial_AsnText
ASN.1 text.
@ eSerial_AsnBinary
ASN.1 binary.
void Update(void)
Parse stored data.
void CopyClassSequential(const CClassTypeInfo *classType)
CObjectIStream & In(void) const
void CopyNamedType(TTypeInfo namedTypeInfo, TTypeInfo objectType)
void CopyClassRandom(const CClassTypeInfo *classType)
void UnsetMemberNillable()
@ fUnassigned
Mandatory object member is unassigned Normally this results in throwing CUnassignedMember exception.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static list< string > & Split(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Split a string using specified delimiters.
void SetWriteFunction(TTypeWriteFunction func)
const string & GetName(void) const
Get name of this type.
const CClassTypeInfo * m_ParentClassInfo
void AssignMemberDefault(TObjectPtr object, const CMemberInfo *info) const
const type_info & GetId(void) const
virtual EMayContainType CalcMayContainType(TTypeInfo typeInfo) const override
virtual void Assign(TObjectPtr dst, TConstObjectPtr src, ESerialRecursionMode how=eRecursive) const override
Set object to copy of another one.
CMemberInfo * AddMember(const char *memberId, const void *memberPtr, const CTypeRef &memberType)
CAsnBinaryDefs::ETagClass GetTagClass(void) const
void SetGlobalHook(const CTempString &member_names, CReadClassMemberHook *hook)
static void WriteImplicitMember(CObjectOStream &out, TTypeInfo objectType, TConstObjectPtr objectPtr)
static void CopyClassRandom(CObjectStreamCopier &copier, TTypeInfo objectType)
static void ReadClassRandom(CObjectIStream &in, TTypeInfo objectType, TObjectPtr objectPtr)
static void ReadImplicitMember(CObjectIStream &in, TTypeInfo objectType, TObjectPtr objectPtr)
const CClassTypeInfo * GetParentClassInfo(void) const
virtual bool IsDefault(TConstObjectPtr object) const =0
Check, whether the object contains default value.
static void SkipImplicitMember(CObjectIStream &in, TTypeInfo objectType)
const CMemberInfo * GetImplicitMember(void) const
virtual CTypeInfo * SetTag(CAsnBinaryDefs::TLongTag tag, CAsnBinaryDefs::ETagClass tagclass=CAsnBinaryDefs::eUniversal, CAsnBinaryDefs::ETagType tagtype=CAsnBinaryDefs::eAutomatic)
virtual TTypeInfo GetRealTypeInfo(TConstObjectPtr object) const override
CAsnBinaryDefs::ETagType GetTagType(void) const
ETypeFamily GetTypeFamily(void) const
static TTypeInfo GetClassInfoById(const type_info &id)
static void WriteClassSequential(CObjectOStream &out, TTypeInfo objectType, TConstObjectPtr objectPtr)
virtual bool IsType(TTypeInfo typeInfo) const override
virtual bool IsDefault(TConstObjectPtr object) const override
Check, whether the object contains default value.
const CSerialUserOp * AsCSerialUserOp(TConstObjectPtr obj) const
void AddSubClassNull(const CMemberId &id)
const CMemberInfo * GetMemberInfo(TMemberIndex index) const
bool IsCObject(void) const
Check is this TypeInfo object is kind of CClassTypeInfoBase.
static void CopyClassSequential(CObjectStreamCopier &copier, TTypeInfo objectType)
bool Implicit(void) const
virtual EMayContainType GetMayContainType(TTypeInfo type) const override
CClassTypeInfo(size_t size, const char *name, const void *nonCObject, TTypeCreate createFunc, const type_info &ti, TGetTypeIdFunction idFunc)
virtual bool Equals(TConstObjectPtr object1, TConstObjectPtr object2, ESerialRecursionMode how=eRecursive) const override
Check if both objects contain the same values.
virtual void Assign(TObjectPtr dst, TConstObjectPtr src, ESerialRecursionMode how=eRecursive) const =0
Set object to copy of another one.
static void WriteClassRandom(CObjectOStream &out, TTypeInfo objectType, TConstObjectPtr objectPtr)
list< pair< CMemberId, CTypeRef > > TSubClasses
void SetSkipFunction(TTypeSkipFunction func)
void UpdateFunctions(void)
const type_info * GetCPlusPlusTypeInfo(TConstObjectPtr object) const
virtual void SetDefault(TObjectPtr dst) const override
Set object to default value.
static void SkipClassRandom(CObjectIStream &in, TTypeInfo objectType)
void SetGlobalReadHook(CReadObjectHook *hook)
Set global (for all input streams) read hook.
virtual bool IsParentClassOf(const CClassTypeInfo *classInfo) const
CClassTypeInfo * SetRandomOrder(bool random=true)
void SetParentClass(TTypeInfo parentClass)
virtual bool IsParentClassOf(const CClassTypeInfo *classInfo) const override
static void ReadClassSequential(CObjectIStream &in, TTypeInfo objectType, TObjectPtr objectPtr)
void SetCopyFunction(TTypeCopyFunction func)
void InitClassTypeInfo(void)
CClassTypeInfo * SetImplicit(void)
const CItemsInfo & GetMembers(void) const
virtual void SetDefault(TObjectPtr dst) const =0
Set object to default value.
unique_ptr< TSubClasses > m_SubClasses
static void CopyImplicitMember(CObjectStreamCopier &copier, TTypeInfo objectType)
void RegisterSubClasses(void) const
void AddSubClass(const CMemberId &id, const CTypeRef &type)
static void SkipClassSequential(CObjectIStream &in, TTypeInfo objectType)
virtual EMayContainType CalcMayContainType(TTypeInfo typeInfo) const
bool IsImplicitNonEmpty(void) const
void SetReadFunction(TTypeReadFunction func)
const struct ncbi::grid::netcache::search::fields::SIZE size
Multi-threading â mutexes; rw-locks; semaphore.
Useful/utility classes and methods.
std::istream & in(std::istream &in_, double &x_)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4