CSeqVector::CSeqVector(const CSeq_loc& loc, const CTSE_Handle& top_tse, EVectorCoding coding, ENa_strand strand) : m_Scope(top_tse.GetScope()), m_SeqMap(CSeqMap::GetSeqMapForSeq_loc(loc, &top_tse.GetScope())), m_TSE(top_tse), m_Strand(strand), m_Coding(CSeq_data::e_not_set) { m_Size = m_SeqMap->GetLength(m_Scope); m_Mol = m_SeqMap->GetMol(); SetCoding(coding); }
CScopeInfo_Base::CScopeInfo_Base(const CTSE_Handle& tse, const CTSE_Info_Object& info) : m_TSE_ScopeInfo(&tse.x_GetScopeInfo()), m_TSE_Handle(tse), m_ObjectInfo(&reinterpret_cast<const CObject&>(info)) { _ASSERT(x_Check(fForceZero | fForceInfo)); }
bool CTSE_Handle::OrderedBefore(const CTSE_Handle& tse) const { if ( *this == tse ) { return false; } const CTSE_ScopeInfo& info1 = x_GetScopeInfo(); const CTSE_ScopeInfo& info2 = tse.x_GetScopeInfo(); CTSE_ScopeInfo::TBlobOrder order1 = info1.GetBlobOrder(); CTSE_ScopeInfo::TBlobOrder order2 = info2.GetBlobOrder(); if ( order1 != order2 ) { _ASSERT((order1 < order2) || (order2 < order1)); return order1 < order2; } if ( info1.GetLoadIndex() != info2.GetLoadIndex() ) { return info1.GetLoadIndex() < info2.GetLoadIndex(); } return *this < tse; }
CSeq_entry_Handle::CSeq_entry_Handle(const CSeq_entry_Info& info, const CTSE_Handle& tse) : m_Info(tse.x_GetScopeInfo().GetScopeLock(tse, info)) { }
CSeq_entry_Handle::CSeq_entry_Handle(const CTSE_Handle& tse) : m_Info(tse.x_GetScopeInfo().GetScopeLock(tse, tse.x_GetTSE_Info())) { }