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

📄 serialasn.hpp

📁 ncbi源码
💻 HPP
字号:
/* * =========================================================================== * PRODUCTION $Log: serialasn.hpp,v $ * PRODUCTION Revision 1000.0  2003/10/29 17:29:46  gouriano * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.15 * PRODUCTION * =========================================================================== */#ifndef SERIALASN__HPP#define SERIALASN__HPP/*  $Id: serialasn.hpp,v 1000.0 2003/10/29 17:29:46 gouriano Exp $* ===========================================================================**                            PUBLIC DOMAIN NOTICE*               National Center for Biotechnology Information**  This software/database is a "United States Government Work" under the*  terms of the United States Copyright Act.  It was written as part of*  the author's official duties as a United States Government employee and*  thus cannot be copyrighted.  This software/database is freely available*  to the public for use. The National Library of Medicine and the U.S.*  Government have not placed any restriction on its use or reproduction.**  Although all reasonable efforts have been taken to ensure the accuracy*  and reliability of the software and data, the NLM and the U.S.*  Government do not and cannot warrant the performance or results that*  may be obtained by using this software or data. The NLM and the U.S.*  Government disclaim all warranties, express or implied, including*  warranties of performance, merchantability or fitness for any particular*  purpose.**  Please cite the author in any work or product based on this material.** ===========================================================================** Author: Eugene Vasilchenko** File Description:*   File to be included in modules implementing GetTypeInfo methods.**/#include <corelib/ncbistd.hpp>#if HAVE_NCBI_C#include <serial/serialimpl.hpp>#include <serial/serialasndef.hpp>/** @addtogroup TypeInfoC * * @{ */BEGIN_NCBI_SCOPE// ASNinlineCTypeRef GetOctetStringTypeRef(void* const* ){    return &COctetStringTypeInfoGetTypeInfo;}template<typename T>inlineCTypeRef GetSetTypeRef(T* const* ){    const T* p = 0;    return CTypeRef(&CAutoPointerTypeInfoGetTypeInfo, GetAsnStructTypeInfo(p));}template<typename T>inlineCTypeRef GetSequenceTypeRef(T* const* ){    const T* p = 0;    return CTypeRef(&CAutoPointerTypeInfoGetTypeInfo, GetAsnStructTypeInfo(p));}template<typename T>inlineCTypeRef GetSetOfTypeRef(T* const* p){    //    const T* p = 0;    return CTypeRef(&CSetOfTypeInfoGetTypeInfo, GetSetTypeRef(p));}template<typename T>inlineCTypeRef GetSequenceOfTypeRef(T* const* p){    //    const T* p = 0;    return CTypeRef(&CSequenceOfTypeInfoGetTypeInfo, GetSetTypeRef(p));}inlineCTypeRef GetChoiceTypeRef(TTypeInfo (*func)(void)){    return CTypeRef(&CAutoPointerTypeInfoGetTypeInfo, func);}template<typename T>inlineCTypeRefGetOldAsnTypeRef(const string& name,                 T* (ASNCALL*newProc)(void),                 T* (ASNCALL*freeProc)(T*),                 T* (ASNCALL*readProc)(asnio*, asntype*),                 unsigned char (ASNCALL*writeProc)(T*, asnio*, asntype*)){    return COldAsnTypeInfoGetTypeInfo(name, reinterpret_cast<TAsnNewProc>(newProc), reinterpret_cast<TAsnFreeProc>(freeProc), reinterpret_cast<TAsnReadProc>(readProc), reinterpret_cast<TAsnWriteProc>(writeProc));}// old ASN structures info#define BEGIN_NAMED_ASN_STRUCT_INFO(AsnStructAlias, AsnStructName) \    BEGIN_TYPE_INFO(NCBI_NAME2(struct_,AsnStructName), \        ASN_STRUCT_METHOD_NAME(AsnStructName), \        NCBI_NS_NCBI::CClassTypeInfo, \        NCBI_NS_NCBI::CClassInfoHelper<CClass>::CreateAsnStructInfo(AsnStructAlias))#define BEGIN_ASN_STRUCT_INFO(AsnStructName) \    BEGIN_NAMED_ASN_STRUCT_INFO(#AsnStructName, AsnStructName)#define END_ASN_STRUCT_INFO END_TYPE_INFO#define SET_ASN_STRUCT_MODULE(ModuleName) \    NCBI_NS_NCBI::SetModuleName(info, ModuleName)#define BEGIN_NAMED_ASN_CHOICE_INFO(AsnChoiceAlias, AsnChoiceName) \    BEGIN_TYPE_INFO(valnode, \        ASN_STRUCT_METHOD_NAME(AsnChoiceName), \        NCBI_NS_NCBI::CChoiceTypeInfo, \        NCBI_NS_NCBI::CClassInfoHelper<CClass>::CreateAsnChoiceInfo(AsnChoiceAlias))#define BEGIN_ASN_CHOICE_INFO(AsnChoiceName) \    BEGIN_NAMED_ASN_CHOICE_INFO(#AsnChoiceName, AsnChoiceName)#define SET_ASN_CHOICE_MODULE(ModuleName) \    NCBI_NS_NCBI::SetModuleName(info, ModuleName)#define END_ASN_CHOICE_INFO END_TYPE_INFO// adding old ASN members#define ADD_NAMED_ASN_MEMBER(MemberAlias, MemberName, AsnTypeKind) \    NCBI_NS_NCBI::AddMember(info,MemberAlias,MEMBER_PTR(MemberName),\        NCBI_NAME3(Get,AsnTypeKind,TypeRef)(MEMBER_PTR(MemberName)))#define ADD_ASN_MEMBER(MemberName, AsnTypeKind) \    ADD_NAMED_ASN_MEMBER(#MemberName, MemberName, AsnTypeKind)#define ADD_NAMED_OLD_ASN_MEMBER(MemberAlias, MemberName, AsnTypeAlias, AsnTypeName) \    NCBI_NS_NCBI::AddMember(info,MemberAlias,MEMBER_PTR(MemberName), \    NCBI_NS_NCBI::GetOldAsnTypeRef(AsnTypeAlias, \        &NCBI_NAME2(AsnTypeName,New), &NCBI_NAME2(AsnTypeName,Free), \        &NCBI_NAME2(AsnTypeName,AsnRead), &NCBI_NAME2(AsnTypeName,AsnWrite)))#define ADD_OLD_ASN_MEMBER(MemberName, AsnTypeName) \    ADD_NAMED_OLD_ASN_MEMBER(#MemberName, MemberName, #AsnTypeName, AsnTypeName)#define ADD_NAMED_ASN_CHOICE_MEMBER(MemberAlias, MemberName, AsnChoiceName) \    NCBI_NS_NCBI::AddMember(info,MemberAlias,MEMBER_PTR(MemberName), \    NCBI_NS_NCBI::GetChoiceTypeRef(ASN_STRUCT_METHOD_NAME(AsnChoiceName)))#define ADD_ASN_CHOICE_MEMBER(MemberName, AsnChoiceName) \    ADD_NAMED_ASN_CHOICE_MEMBER(#MemberName, MemberName, AsnChoiceName)#define ADD_NAMED_ASN_CHOICE_STD_VARIANT(VariantAlias, AsnTypeName) \    NCBI_NS_NCBI::AddVariant(info,VariantAlias, \        MEMBER_PTR(data.NCBI_NAME2(AsnTypeName,value)), \        GetStdTypeInfoGetter(MEMBER_PTR(data.NCBI_NAME2(AsnTypeName,value))))#define ADD_ASN_CHOICE_STD_VARIANT(VariantName, AsnTypeName) \    ADD_NAMED_ASN_CHOICE_STD_VARIANT(#VariantName, AsnTypeName)#define ADD_NAMED_ASN_CHOICE_VARIANT(VariantAlias, AsnTypeKind, AsnTypeName) \    NCBI_NS_NCBI::AddVariant(info,VariantAlias, \        MEMBER_PTR(data.ptrvalue), \        NCBI_NAME3(Get,AsnTypeKind,TypeRef)(reinterpret_cast<NCBI_NAME2(struct_,AsnTypeName)*const*>(MEMBER_PTR(data.ptrvalue))))#define ADD_ASN_CHOICE_VARIANT(VariantName, AsnTypeKind, AsnTypeName) \    ADD_NAMED_ASN_CHOICE_VARIANT(#VariantName, AsnTypeKind, AsnTypeName)END_NCBI_SCOPE#endif /* HAVE_NCBI_C */#endif/* @} */

⌨️ 快捷键说明

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