⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialimpl.hpp

📁 ncbi源码
💻 HPP
📖 第 1 页 / 共 3 页
字号:
{    return CreateEnumeratedTypeInfo(*member, enumInfo);}NCBI_XSERIAL_EXPORT SSystemMutex& GetTypeInfoMutex(void);// internal macros for implementing BEGIN_*_INFO and ADD_*_MEMBER#define DECLARE_BASE_OBJECT(ClassName) ClassName* base = 0#define BASE_OBJECT() static_cast<const CClass_Base*>(base)#define MEMBER_PTR(MemberName) &BASE_OBJECT()->MemberName#define CLASS_PTR(ClassName) static_cast<const ClassName*>(BASE_OBJECT())#define BEGIN_BASE_TYPE_INFO(ClassName,BaseClassName,Method,InfoType,Code) \const NCBI_NS_NCBI::CTypeInfo* Method(void) \{ \    typedef ClassName CClass; \    typedef BaseClassName CClass_Base; \    static InfoType* volatile s_info = 0; \    InfoType* info = s_info; \    if ( !info ) { \        NCBI_NS_NCBI::CMutexGuard GUARD(NCBI_NS_NCBI::GetTypeInfoMutex()); \        info = s_info; \        if ( !info ) { \            DECLARE_BASE_OBJECT(CClass); \            info = Code; \            NCBI_NS_NCBI::RegisterTypeInfoObject(info);#define BEGIN_TYPE_INFO(ClassName, Method, InfoType, Code) \    BEGIN_BASE_TYPE_INFO(ClassName, ClassName, Method, InfoType, Code)    #define END_TYPE_INFO \            s_info = info; \        } \    } \    return info; \}// macros for specifying differents members#define SERIAL_MEMBER(MemberName,TypeMacro,TypeMacroArgs) \    NCBI_NS_NCBI::Check<SERIAL_TYPE(TypeMacro)TypeMacroArgs >::Ptr(MEMBER_PTR(MemberName)), SERIAL_REF(TypeMacro)TypeMacroArgs#define SERIAL_STD_MEMBER(MemberName) \    MEMBER_PTR(MemberName),NCBI_NS_NCBI::GetStdTypeInfoGetter(MEMBER_PTR(MemberName))#define SERIAL_CLASS_MEMBER(MemberName) \    MEMBER_PTR(MemberName),&MEMBER_PTR(MemberName).GetTypeInfo#define SERIAL_ENUM_MEMBER(MemberName,EnumName) \    MEMBER_PTR(MemberName), NCBI_NS_NCBI::EnumTypeInfo(MEMBER_PTR(MemberName), ENUM_METHOD_NAME(EnumName)())#define SERIAL_ENUM_IN_MEMBER(MemberName,CppContext,EnumName) \    MEMBER_PTR(MemberName), NCBI_NS_NCBI::EnumTypeInfo(MEMBER_PTR(MemberName),CppContext ENUM_METHOD_NAME(EnumName)())#define SERIAL_REF_MEMBER(MemberName,ClassName) \    SERIAL_MEMBER(MemberName,STL_CRef,(CLASS,(ClassName)))#define SERIAL_PTR_CHOICE_VARIANT(MemberName,TypeMacro,TypeMacroArgs) \    NCBI_NS_NCBI::Check<SERIAL_TYPE(TypeMacro)TypeMacroArgs >::PtrPtr(MEMBER_PTR(MemberName)), SERIAL_REF(TypeMacro)TypeMacroArgs#define SERIAL_REF_CHOICE_VARIANT(MemberName,ClassName) \    NCBI_NS_NCBI::Check<SERIAL_TYPE(CLASS)(ClassName)>::ObjectPtrPtr(MEMBER_PTR(MemberName)), SERIAL_REF(CLASS)(ClassName)#define SERIAL_BASE_CLASS(ClassName) \    CLASS_PTR(ClassName),&(CLASS_PTR(ClassName)->GetTypeInfo)// ADD_NAMED_*_MEMBER macros    #define ADD_NAMED_NULL_MEMBER(MemberAlias,TypeMacro,TypeMacroArgs) \    NCBI_NS_NCBI::AddMember(info,MemberAlias, \                            0,SERIAL_REF(TypeMacro)TypeMacroArgs)#define ADD_NAMED_MEMBER(MemberAlias,MemberName,TypeMacro,TypeMacroArgs) \    NCBI_NS_NCBI::AddMember(info,MemberAlias, \                            SERIAL_MEMBER(MemberName,TypeMacro,TypeMacroArgs))#define ADD_NAMED_STD_MEMBER(MemberAlias,MemberName) \    NCBI_NS_NCBI::AddMember(info,MemberAlias, \                            SERIAL_STD_MEMBER(MemberName))#define ADD_NAMED_CLASS_MEMBER(MemberAlias,MemberName) \    NCBI_NS_NCBI::AddMember(info,MemberAlias, \                            SERIAL_CLASS_MEMBER(MemberName))#define ADD_NAMED_ENUM_MEMBER(MemberAlias,MemberName,EnumName) \    NCBI_NS_NCBI::AddMember(info,MemberAlias, \                            SERIAL_ENUM_MEMBER(MemberName,EnumName))#define ADD_NAMED_ENUM_IN_MEMBER(MemberAlias,MemberName,CppContext,EnumName) \    NCBI_NS_NCBI::AddMember(info,MemberAlias, \                  SERIAL_ENUM_IN_MEMBER(MemberName,CppContext,EnumName))#define ADD_NAMED_REF_MEMBER(MemberAlias,MemberName,ClassName) \    NCBI_NS_NCBI::AddMember(info,MemberAlias, \                            SERIAL_REF_MEMBER(MemberName,ClassName))#define ADD_NAMED_BASE_CLASS(MemberAlias,ClassName) \    NCBI_NS_NCBI::AddMember(info,MemberAlias, \                            SERIAL_BASE_CLASS(ClassName))// ADD_*_MEMBER macros    #define ADD_MEMBER(MemberName,TypeMacro,TypeMacroArgs) \    ADD_NAMED_MEMBER(#MemberName,MemberName,TypeMacro,TypeMacroArgs)#define ADD_STD_MEMBER(MemberName) \    ADD_NAMED_STD_MEMBER(#MemberName,MemberName)#define ADD_CLASS_MEMBER(MemberName) \    ADD_NAMED_CLASS_MEMBER(#MemberName,MemberName)#define ADD_ENUM_MEMBER(MemberName,EnumName) \    ADD_NAMED_ENUM_MEMBER(#MemberName,MemberName,EnumName)#define ADD_ENUM_IN_MEMBER(MemberName,CppContext,EnumName) \    ADD_NAMED_ENUM_MEMBER(#MemberName,MemberName,CppContext,EnumName)#define ADD_REF_MEMBER(MemberName,ClassName) \    ADD_NAMED_REF_MEMBER(#MemberName,MemberName,ClassName)// ADD_NAMED_*_CHOICE_VARIANT macros    #define ADD_NAMED_NULL_CHOICE_VARIANT(MemberAlias,TypeMacro,TypeMacroArgs) \    NCBI_NS_NCBI::AddVariant(info,MemberAlias, \        0,SERIAL_REF(TypeMacro)TypeMacroArgs)#define ADD_NAMED_CHOICE_VARIANT(MemberAlias,MemberName,TypeMacro,TypeMacroArgs) \    NCBI_NS_NCBI::AddVariant(info,MemberAlias, \        SERIAL_MEMBER(MemberName,TypeMacro,TypeMacroArgs))#define ADD_NAMED_STD_CHOICE_VARIANT(MemberAlias,MemberName) \    NCBI_NS_NCBI::AddVariant(info,MemberAlias, \        SERIAL_STD_MEMBER(MemberName))#define ADD_NAMED_ENUM_CHOICE_VARIANT(MemberAlias,MemberName,EnumName) \    NCBI_NS_NCBI::AddVariant(info,MemberAlias, \        SERIAL_ENUM_MEMBER(MemberName,EnumName))#define ADD_NAMED_ENUM_IN_CHOICE_VARIANT(MemberAlias,MemberName,CppContext,EnumName) \    NCBI_NS_NCBI::AddVariant(info,MemberAlias, \        SERIAL_ENUM_IN_MEMBER(MemberName,CppContext,EnumName))#define ADD_NAMED_PTR_CHOICE_VARIANT(MemberAlias,MemberName,TypeMacro,TypeMacroArgs) \    NCBI_NS_NCBI::AddVariant(info,MemberAlias, \        SERIAL_PTR_CHOICE_VARIANT(MemberName,TypeMacro,TypeMacroArgs))->SetPointer()#define ADD_NAMED_REF_CHOICE_VARIANT(MemberAlias,MemberName,ClassName) \    NCBI_NS_NCBI::AddVariant(info,MemberAlias, \        SERIAL_REF_CHOICE_VARIANT(MemberName,ClassName))->SetObjectPointer()// ADD_*_CHOICE_VARIANT macros#define ADD_CHOICE_VARIANT(MemberName,TypeMacro,TypeMacroArgs) \    ADD_NAMED_CHOICE_VARIANT(#MemberName,MemberName,TypeMacro,TypeMacroArgs)#define ADD_STD_CHOICE_VARIANT(MemberName) \    ADD_NAMED_STD_CHOICE_VARIANT(#MemberName,MemberName)#define ADD_ENUM_CHOICE_VARIANT(MemberName,EnumName) \    ADD_NAMED_ENUM_CHOICE_VARIANT(#MemberName,MemberName,EnumName)#define ADD_ENUM_IN_CHOICE_VARIANT(MemberName,CppContext,EnumName) \    ADD_NAMED_ENUM_IN_CHOICE_VARIANT(#MemberName,MemberName,CppContext,EnumName)#define ADD_PTR_CHOICE_VARIANT(MemberName,TypeMacro,TypeMacroArgs) \    ADD_NAMED_PTR_CHOICE_VARIANT(#MemberName,MemberName,TypeMacro,TypeMacroArgs)#define ADD_REF_CHOICE_VARIANT(MemberName,ClassName) \    ADD_NAMED_REF_CHOICE_VARIANT(#MemberName,MemberName,ClassName)// type info definition macros#define BEGIN_NAMED_CLASS_INFO(ClassAlias,ClassName) \    BEGIN_TYPE_INFO(ClassName, \        ClassName::GetTypeInfo, \        NCBI_NS_NCBI::CClassTypeInfo, \        NCBI_NS_NCBI::CClassInfoHelper<CClass>::CreateClassInfo(ClassAlias))#define BEGIN_CLASS_INFO(ClassName) \    BEGIN_NAMED_CLASS_INFO(#ClassName, ClassName)#define BEGIN_NAMED_BASE_CLASS_INFO(ClassAlias,ClassName) \    BEGIN_BASE_TYPE_INFO(ClassName, NCBI_NAME2(ClassName,_Base), \        NCBI_NAME2(ClassName,_Base)::GetTypeInfo, \        NCBI_NS_NCBI::CClassTypeInfo, \        NCBI_NS_NCBI::CClassInfoHelper<CClass>::CreateClassInfo(ClassAlias))#define BEGIN_BASE_CLASS_INFO(ClassName) \    BEGIN_NAMED_BASE_CLASS_INFO(#ClassName, ClassName)#define SET_CLASS_IMPLICIT() info->SetImplicit()#define BEGIN_NAMED_IMPLICIT_CLASS_INFO(ClassAlias,ClassName) \    BEGIN_NAMED_CLASS_INFO(ClassAlias,ClassName); SET_CLASS_IMPLICIT();#define BEGIN_IMPLICIT_CLASS_INFO(ClassName) \    BEGIN_CLASS_INFO(ClassName); SET_CLASS_IMPLICIT();#define BEGIN_NAMED_BASE_IMPLICIT_CLASS_INFO(ClassAlias,ClassName) \    BEGIN_NAMED_BASE_CLASS_INFO(ClassAlias,ClassName); SET_CLASS_IMPLICIT();#define BEGIN_BASE_IMPLICIT_CLASS_INFO(ClassName) \    BEGIN_BASE_CLASS_INFO(ClassName); SET_CLASS_IMPLICIT();#define SET_CLASS_MODULE(ModuleName) \    NCBI_NS_NCBI::SetModuleName(info, ModuleName)#define END_CLASS_INFO END_TYPE_INFO#define BEGIN_NAMED_ABSTRACT_CLASS_INFO(ClassAlias,ClassName) \    BEGIN_TYPE_INFO(ClassName, \        ClassName::GetTypeInfo, \        NCBI_NS_NCBI::CClassTypeInfo, \        NCBI_NS_NCBI::CClassInfoHelper<CClass>::CreateAbstractClassInfo(ClassAlias))#define BEGIN_ABSTRACT_CLASS_INFO(ClassName) \    BEGIN_NAMED_ABSTRACT_CLASS_INFO(#ClassName, ClassName)#define BEGIN_NAMED_ABSTRACT_BASE_CLASS_INFO(ClassAlias,ClassName) \    BEGIN_BASE_TYPE_INFO(ClassName, NCBI_NAME2(ClassName,_Base), \        NCBI_NAME2(ClassName,_Base)::GetTypeInfo, \        NCBI_NS_NCBI::CClassTypeInfo, \        NCBI_NS_NCBI::CClassInfoHelper<CClass>::CreateAbstractClassInfo(ClassAlias))#define END_ABSTRACT_CLASS_INFO END_TYPE_INFO#define BEGIN_NAMED_DERIVED_CLASS_INFO(ClassAlias,ClassName,ParentClassName) \    BEGIN_NAMED_CLASS_INFO(ClassAlias,ClassName) \    SET_PARENT_CLASS(ParentClassName);#define BEGIN_DERIVED_CLASS_INFO(ClassName,ParentClassName) \    BEGIN_NAMED_DERIVED_CLASS_INFO(#ClassName, ClassName, ParentClassName)#define END_DERIVED_CLASS_INFO END_TYPE_INFO#define BEGIN_NAMED_CHOICE_INFO(ClassAlias,ClassName) \    BEGIN_TYPE_INFO(ClassName, \        ClassName::GetTypeInfo, \        NCBI_NS_NCBI::CChoiceTypeInfo, \        NCBI_NS_NCBI::CClassInfoHelper<CClass>::CreateChoiceInfo(ClassAlias))#define BEGIN_CHOICE_INFO(ClassName) \    BEGIN_NAMED_CHOICE_INFO(#ClassName, ClassName)#define BEGIN_NAMED_BASE_CHOICE_INFO(ClassAlias,ClassName) \    BEGIN_BASE_TYPE_INFO(ClassName, NCBI_NAME2(ClassName,_Base), \        NCBI_NAME2(ClassName,_Base)::GetTypeInfo, \        NCBI_NS_NCBI::CChoiceTypeInfo, \        NCBI_NS_NCBI::CClassInfoHelper<CClass>::CreateChoiceInfo(ClassAlias))#define BEGIN_BASE_CHOICE_INFO(ClassName) \    BEGIN_NAMED_BASE_CHOICE_INFO(#ClassName, ClassName)#define SET_CHOICE_MODULE(ModuleName) \    NCBI_NS_NCBI::SetModuleName(info, ModuleName)#define SET_CHOICE_DELAYED() \    info->SetSelectDelay(&NCBI_NS_NCBI::CClassInfoHelper<CClass>::SelectDelayBuffer)#define END_CHOICE_INFO END_TYPE_INFO// sub class definition#define SET_PARENT_CLASS(ParentClassName) \    info->SetParentClass(ParentClassName::GetTypeInfo())#define ADD_NAMED_SUB_CLASS(SubClassAlias, SubClassName) \    info->AddSubClass(SubClassAlias, &SubClassName::GetTypeInfo)#define ADD_SUB_CLASS(SubClassName) \    ADD_NAMED_SUB_CLASS(#SubClassName, SubClassName)#define ADD_NAMED_NULL_SUB_CLASS(ClassAlias) \    info->AddSubClassNull(ClassAlias)#define ADD_NULL_SUB_CLASS(ClassAlias) \    ADD_NAMED_NULL_SUB_CLASS("NULL")// enum definition macros#define BEGIN_ENUM_INFO_METHOD(MethodName, EnumAlias, EnumName, IsInteger) \const NCBI_NS_NCBI::CEnumeratedTypeValues* MethodName(void) \{ \    static NCBI_NS_NCBI::CEnumeratedTypeValues* volatile s_enumInfo = 0; \    NCBI_NS_NCBI::CEnumeratedTypeValues* enumInfo = s_enumInfo; \    if ( !enumInfo ) { \        NCBI_NS_NCBI::CMutexGuard GUARD(NCBI_NS_NCBI::GetTypeInfoMutex()); \        enumInfo = s_enumInfo; \        if ( !enumInfo ) { \            enumInfo = new NCBI_NS_NCBI::CEnumeratedTypeValues(EnumAlias, IsInteger); \            NCBI_NS_NCBI::RegisterEnumTypeValuesObject(enumInfo); \            EnumName enumValue;#define END_ENUM_INFO_METHOD \            s_enumInfo = enumInfo; \        } \    } \    return enumInfo; \}#define BEGIN_NAMED_ENUM_IN_INFO(EnumAlias, CppContext, EnumName, IsInteger) \    BEGIN_ENUM_INFO_METHOD(CppContext ENUM_METHOD_NAME(EnumName), EnumAlias, EnumName, IsInteger)#define BEGIN_NAMED_ENUM_INFO(EnumAlias, EnumName, IsInteger) \    BEGIN_ENUM_INFO_METHOD(ENUM_METHOD_NAME(EnumName), EnumAlias, EnumName, IsInteger)#define BEGIN_ENUM_IN_INFO(CppContext, EnumName, IsInteger) \    BEGIN_NAMED_ENUM_IN_INFO(#EnumName, CppContext, EnumName, IsInteger)#define BEGIN_ENUM_INFO(EnumName, IsInteger) \

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -