seq_feat_handle.cpp
来自「ncbi源码」· C++ 代码 · 共 200 行
CPP
200 行
/* * =========================================================================== * PRODUCTION $Log: seq_feat_handle.cpp,v $ * PRODUCTION Revision 1000.0 2004/06/01 19:25:57 gouriano * PRODUCTION PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.2 * PRODUCTION * =========================================================================== *//* $Id: seq_feat_handle.cpp,v 1000.0 2004/06/01 19:25:57 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: Aleksey Grichenko, Eugene Vasilchenko** File Description:* Seq-feat handle**/#include <ncbi_pch.hpp>#include <objmgr/seq_feat_handle.hpp>#include <objmgr/scope.hpp>#include <objmgr/impl/seq_annot_info.hpp>BEGIN_NCBI_SCOPEBEGIN_SCOPE(objects)CSeq_feat_Handle::CSeq_feat_Handle(void) : m_AnnotInfoType(eType_null){ return;}CSeq_feat_Handle::CSeq_feat_Handle(CScope& scope, const CSeq_annot_Info& annot_info, size_t index) : m_Scope(scope), m_Annot(&annot_info), m_AnnotInfoType(eType_Seq_annot_Info), m_Index(index){ return;}CSeq_feat_Handle::CSeq_feat_Handle(CScope& scope, const CSeq_annot_SNP_Info& snp_info, size_t index) : m_Scope(scope), m_Annot(&snp_info.GetParentSeq_annot_Info()), m_AnnotInfoType(eType_Seq_annot_SNP_Info), m_Index(index){ return;}CSeq_feat_Handle::~CSeq_feat_Handle(void){ return;}const SSNP_Info& CSeq_feat_Handle::x_GetSNP_Info(void) const{ _ASSERT(m_AnnotInfoType == eType_Seq_annot_SNP_Info); return m_Annot->x_GetSNP_annot_Info().GetSNP_Info(m_Index);}const CSeq_feat& CSeq_feat_Handle::x_GetSeq_feat(void) const{ _ASSERT(m_AnnotInfoType == eType_Seq_annot_Info); return m_Annot->GetAnnotObject_Info(m_Index).GetFeat();}CConstRef<CSeq_feat> CSeq_feat_Handle::GetSeq_feat(void) const{ switch (m_AnnotInfoType) { case eType_Seq_annot_Info: { return ConstRef(&x_GetSeq_feat()); } case eType_Seq_annot_SNP_Info: { return x_GetSNP_Info(). CreateSeq_feat(m_Annot->x_GetSNP_annot_Info()); } default: { return CConstRef<CSeq_feat>(0); } }}CSeq_annot_Handle CSeq_feat_Handle::GetAnnot(void) const{ if ( m_Annot ) { return CSeq_annot_Handle(m_Scope.GetScope(), *m_Annot); } return CSeq_annot_Handle();}CSeq_feat_Handle::TRange CSeq_feat_Handle::GetRange(void) const{ switch (m_AnnotInfoType) { case eType_Seq_annot_Info: { return x_GetSeq_feat().GetLocation().GetTotalRange(); } case eType_Seq_annot_SNP_Info: { const SSNP_Info& snp_info = x_GetSNP_Info(); return TRange(snp_info.GetFrom(), snp_info.GetTo()); } default: { return TRange::GetEmpty(); } }}CSeq_id::TGi CSeq_feat_Handle::GetGi(void) const{ _ASSERT(m_AnnotInfoType == eType_Seq_annot_SNP_Info); return m_Annot->x_GetSNP_annot_Info().GetGi();}size_t CSeq_feat_Handle::GetAllelesCount(void) const{ const SSNP_Info& snp = x_GetSNP_Info(); size_t count = 0; for (; count < SSNP_Info::kMax_AllelesCount; ++count) { if (snp.m_AllelesIndices[count] == SSNP_Info::kNo_AlleleIndex) { break; } } return count;}string CSeq_feat_Handle::GetAllele(size_t index) const{ _ASSERT(index < SSNP_Info::kMax_AllelesCount); const SSNP_Info& snp = x_GetSNP_Info(); _ASSERT(snp.m_AllelesIndices[index] != SSNP_Info::kNo_AlleleIndex); return m_Annot->x_GetSNP_annot_Info(). x_GetAllele(snp.m_AllelesIndices[index]);}END_SCOPE(objects)END_NCBI_SCOPE/* * =========================================================================== * $Log: seq_feat_handle.cpp,v $ * Revision 1000.0 2004/06/01 19:25:57 gouriano * PRODUCTION: IMPORTED [GCC34_MSVC7] Dev-tree R1.2 * * Revision 1.2 2004/05/21 21:42:13 gorelenk * Added PCH ncbi_pch.hpp * * Revision 1.1 2004/05/04 18:06:06 grichenk * Initial revision * * * =========================================================================== */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?