bool CBioseq_Handle::ContainsSegment(CSeq_id_Handle id, size_t resolve_depth, EFindSegment limit_flag) const { CBioseq_Handle h = GetScope().GetBioseqHandle(id); CConstRef<CSynonymsSet> syns; if ( h ) { syns = h.GetSynonyms(); } SSeqMapSelector sel; sel.SetFlags(CSeqMap::fFindRef); if ( limit_flag == eFindSegment_LimitTSE ) { sel.SetLimitTSE(GetTopLevelEntry()); } sel.SetResolveCount(resolve_depth); CSeqMap_CI it = GetSeqMap().BeginResolved(&GetScope(), sel); for ( ; it; ++it) { if ( syns ) { if ( syns->ContainsSynonym(it.GetRefSeqid()) ) { return true; } } else { if (it.GetRefSeqid() == id) { return true; } } } return false; }
bool CBioseq_Handle::IsSynonym(const CSeq_id_Handle& idh) const { CConstRef<CSynonymsSet> syns = GetSynonyms(); return syns && syns->ContainsSynonym(idh); }