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

📄 serialbase.hpp

📁 ncbi源码
💻 HPP
📖 第 1 页 / 共 2 页
字号:
public:    CStdAliasBase(void)        {            this->m_Data = 0;        }    explicit CStdAliasBase(const TStd& value)        : TParent(value) {}};template <class TString>class CStringAliasBase : public CAliasBase<TString>{    typedef CAliasBase<TString> TParent;    typedef CStringAliasBase<TString> TThis;public:    CStringAliasBase(void)        {        }    explicit CStringAliasBase(const TString& value)        : TParent(value) {}};/////////////////////////////////////////////////////////////////////////  Assignment and comparison for serializable objects//template <class C>C& SerialAssign(C& dest, const C& src, ESerialRecursionMode how = eRecursive){    if ( typeid(src) != typeid(dest) ) {        ERR_POST(Fatal <<                 "SerialAssign() -- Assignment of incompatible types: " <<                 typeid(dest).name() << " = " << typeid(src).name());    }    C::GetTypeInfo()->Assign(&dest, &src, how);    return dest;}template <class C>bool SerialEquals(const C& object1, const C& object2,                  ESerialRecursionMode how = eRecursive){    if ( typeid(object1) != typeid(object2) ) {        ERR_POST(Fatal <<                 "SerialAssign() -- Can not compare types: " <<                 typeid(object1).name() << " == " << typeid(object2).name());    }    return C::GetTypeInfo()->Equals(&object1, &object2, how);}// create on heap a clone of the source objecttemplate <typename C>C* SerialClone(const C& src){    typename C::TTypeInfo type = C::GetTypeInfo();    TObjectPtr obj = type->Create();    type->Assign(obj, &src);    return static_cast<C*>(obj);}/////////////////////////////////////////////////////////////////////////////////  I/O stream manipulators and helpers for serializable objects//// FormattingNCBI_XSERIAL_EXPORT CNcbiIos& MSerial_AsnText(CNcbiIos& io);NCBI_XSERIAL_EXPORT CNcbiIos& MSerial_AsnBinary(CNcbiIos& io);NCBI_XSERIAL_EXPORT CNcbiIos& MSerial_Xml(CNcbiIos& io);// Class member assignment verificationNCBI_XSERIAL_EXPORT CNcbiIos& MSerial_VerifyDefault(CNcbiIos& io);NCBI_XSERIAL_EXPORT CNcbiIos& MSerial_VerifyNo(CNcbiIos& io);NCBI_XSERIAL_EXPORT CNcbiIos& MSerial_VerifyYes(CNcbiIos& io);NCBI_XSERIAL_EXPORT CNcbiIos& MSerial_VerifyDefValue(CNcbiIos& io);// Input/outputNCBI_XSERIAL_EXPORT CNcbiOstream& operator<< (CNcbiOstream& str, const CSerialObject& obj);NCBI_XSERIAL_EXPORT CNcbiIstream& operator>> (CNcbiIstream& str, CSerialObject& obj);END_NCBI_SCOPE// these methods must be defined in root namespace so they have prefix NCBISER// default functions do nothingtemplate<class CInfo>inlinevoid NCBISERSetPostRead(const void* /*object*/, CInfo* /*info*/){}template<class CInfo>inlinevoid NCBISERSetPreWrite(const void* /*object*/, CInfo* /*info*/){}// define for declaring specific function#define NCBISER_HAVE_POST_READ(Class) \template<class CInfo> \inline \void NCBISERSetPostRead(const Class* /*object*/, CInfo* info) \{ \    NCBI_NS_NCBI::SetPostRead \        (info, &NCBI_NS_NCBI::CClassPostReadPreWrite<Class>::PostRead);\}#define NCBISER_HAVE_PRE_WRITE(Class) \template<class CInfo> \inline \void NCBISERSetPreWrite(const Class* /*object*/, CInfo* info) \{ \    NCBI_NS_NCBI::SetPreWrite \        (info, &NCBI_NS_NCBI::CClassPostReadPreWrite<Class>::PreWrite);\}#define DECLARE_INTERNAL_TYPE_INFO() \    typedef const NCBI_NS_NCBI::CTypeInfo* TTypeInfo; \    virtual TTypeInfo GetThisTypeInfo(void) const { return GetTypeInfo(); } \    static  TTypeInfo GetTypeInfo(void)#define ENUM_METHOD_NAME(EnumName) \    NCBI_NAME2(GetTypeInfo_enum_,EnumName)#define DECLARE_ENUM_INFO(EnumName) \    const NCBI_NS_NCBI::CEnumeratedTypeValues* ENUM_METHOD_NAME(EnumName)(void)#define DECLARE_INTERNAL_ENUM_INFO(EnumName) \    static DECLARE_ENUM_INFO(EnumName)#define DECLARE_STD_ALIAS_TYPE_INFO() \    static const NCBI_NS_NCBI::CTypeInfo* GetTypeInfo(void)#if HAVE_NCBI_C#define ASN_STRUCT_NAME(AsnStructName) NCBI_NAME2(struct_, AsnStructName)#define ASN_STRUCT_METHOD_NAME(AsnStructName) \    NCBI_NAME2(GetTypeInfo_struct_,AsnStructName)#define DECLARE_ASN_TYPE_INFO(AsnStructName) \    const NCBI_NS_NCBI::CTypeInfo* ASN_STRUCT_METHOD_NAME(AsnStructName)(void)#define DECLARE_ASN_STRUCT_INFO(AsnStructName) \    struct ASN_STRUCT_NAME(AsnStructName); \    DECLARE_ASN_TYPE_INFO(AsnStructName); \    inline \    const NCBI_NS_NCBI::CTypeInfo* \    GetAsnStructTypeInfo(const ASN_STRUCT_NAME(AsnStructName)* ) \    { \        return ASN_STRUCT_METHOD_NAME(AsnStructName)(); \    } \    struct ASN_STRUCT_NAME(AsnStructName)#define DECLARE_ASN_CHOICE_INFO(AsnChoiceName) \    DECLARE_ASN_TYPE_INFO(AsnChoiceName)#endif#endif  /* SERIALBASE__HPP *//* @} *//* ---------------------------------------------------------------------------* $Log: serialbase.hpp,v $* Revision 1000.3  2004/06/01 19:39:07  gouriano* PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.32** Revision 1.32  2004/05/22 20:19:17  jcherry* Made CAliasBase::TThis typedef public** Revision 1.31  2004/04/26 16:40:59  ucko* Tweak for GCC 3.4 compatibility.** Revision 1.30  2004/03/25 15:56:28  gouriano* Added possibility to copy and compare serial object non-recursively** Revision 1.29  2004/02/02 14:39:52  vasilche* Removed call to string::resize(0) in constructor - it's empty by default.** Revision 1.28  2004/01/20 14:58:46  dicuccio* FIxed use of export specifiers - located before return type of function** Revision 1.27  2004/01/16 21:50:41  gouriano* added export specifiers to i/o manipulators** Revision 1.25  2003/11/13 14:06:44  gouriano* Elaborated data verification on read/write/get to enable skipping mandatory class data members** Revision 1.24  2003/10/21 13:48:47  grichenk* Redesigned type aliases in serialization library.* Fixed the code (removed CRef-s, added explicit* initializers etc.)** Revision 1.23  2003/09/22 20:57:07  gouriano* Changed base type of AnyContent object to CSerialObject** Revision 1.22  2003/09/16 14:49:15  gouriano* Enhanced AnyContent objects to support XML namespaces and attribute info items.** Revision 1.21  2003/08/25 15:58:32  gouriano* added possibility to use namespaces in XML i/o streams** Revision 1.20  2003/08/13 15:47:02  gouriano* implemented serialization of AnyContent objects** Revision 1.19  2003/04/29 18:29:06  gouriano* object data member initialization verification** Revision 1.18  2003/04/15 16:18:48  siyan* Added doxygen support** Revision 1.17  2003/03/28 18:52:04  dicuccio* Added Win32 exports for postread/postwrite set hooks** Revision 1.16  2003/03/25 13:08:42  dicuccio* Added missing NCBI_NS_NCBI:: in PostRead()/PostWrite() macros** Revision 1.15  2003/03/11 18:00:08  gouriano* reimplement CInvalidChoiceSelection exception** Revision 1.14  2002/12/23 18:38:51  dicuccio* Added WIn32 export specifier: NCBI_XSERIAL_EXPORT.* Moved all CVS logs to the end.** Revision 1.13  2002/05/29 21:18:43  gouriano* added debug dump** Revision 1.12  2002/05/22 14:03:37  grichenk* CSerialUserOp -- added prefix UserOp_ to Assign() and Equals()** Revision 1.11  2002/05/15 20:22:02  grichenk* Added CSerialObject -- base class for all generated ASN.1 classes** Revision 1.10  2001/07/25 19:15:27  grichenk* Added comments. Added type checking before dynamic cast.** Revision 1.9  2001/07/16 16:22:47  grichenk* Added CSerialUserOp class to create Assign() and Equals() methods for* user-defind classes.* Added SerialAssign<>() and SerialEquals<>() functions.** Revision 1.8  2000/12/15 21:28:49  vasilche* Moved some typedefs/enums from corelib/ncbistd.hpp.* Added flags to CObjectIStream/CObjectOStream: eFlagAllowNonAsciiChars.* TByte typedef replaced by Uint1.** Revision 1.7  2000/07/12 13:30:56  vasilche* Typo in function prototype.** Revision 1.6  2000/07/11 20:34:51  vasilche* File included in all generated headers made lighter.* Nonnecessary code moved to serialimpl.hpp.** Revision 1.5  2000/07/10 17:59:30  vasilche* Moved macros needed in headers to serialbase.hpp.* Use DECLARE_ENUM_INFO in generated code.** Revision 1.4  2000/06/16 16:31:07  vasilche* Changed implementation of choices and classes info to allow use of the same classes in generated and user written classes.** Revision 1.3  2000/05/04 16:21:36  vasilche* Fixed bug in choice reset.** Revision 1.2  2000/04/28 16:58:03  vasilche* Added classes CByteSource and CByteSourceReader for generic reading.* Added delayed reading of choice variants.** Revision 1.1  2000/04/03 18:47:09  vasilche* Added main include file for generated headers.* serialimpl.hpp is included in generated sources with GetTypeInfo methods** ===========================================================================*/

⌨️ 快捷键说明

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