m_Transaction(
NULL),
106m_BioseqChangeCounter(0),
107m_AnnotChangeCounter(0),
108m_KeepExternalAnnotsForEdit(
CScope::GetDefaultKeepExternalAnnotsForEdit())
111x_AttachToOM(objmgr);
188(*it)->GetDefaultPriority() : priority);
230 "Seq-entry already added to the scope");
254 "Seq-entry already added to the scope");
259 #if USE_OBJMGR_SHARED_POOL 285 "Bioseq already added to the scope");
312 "Bioseq already added to the scope");
317 #if USE_OBJMGR_SHARED_POOL 346 "Seq-annot already added to the scope");
373 "Seq-annot already added to the scope");
378 #if USE_OBJMGR_SHARED_POOL 391tse_lock->
GetSet().
GetAnnot()[0]->GetSeq_annotCore() == &annot);
414 classCClearCacheOnRemoveGuard
421~CClearCacheOnRemoveGuard(
void)
424 m_Scope->x_ClearCacheOnRemoveData();
436CClearCacheOnRemoveGuard(
constCClearCacheOnRemoveGuard&);
437 voidoperator=(
constCClearCacheOnRemoveGuard&);
450 "CScope_Impl::RemoveDataLoader: " 451 "data loader not found in the scope");
455CClearCacheOnRemoveGuard guard2(
this);
469CClearCacheOnRemoveGuard guard2(
this);
488 "CScope_Impl::RemoveTopLevelSeqEntry: " 489 "TSE not found in the scope");
493 CTSE_Locktse_lock(tse_info->GetTSE_Lock());
497 "CScope_Impl::RemoveTopLevelSeqEntry: " 498 "TSE doesn't belong to the scope");
502 "CScope_Impl::RemoveTopLevelSeqEntry: " 503 "can not remove a loaded TSE");
508 _ASSERT(!tse_info->IsAttached());
681 #define CHECK_HANDLE(func, handle) \ 683 NCBI_THROW(CObjMgrException, eInvalidHandle, \ 684 "CScope_Impl::"#func ": null " #handle " handle"); \
687 #define CHECK_REMOVED_HANDLE(func, handle) \ 688 if ( !handle.IsRemoved() ) { \ 689 NCBI_THROW(CObjMgrException, eInvalidHandle, \ 690 "CScope_Impl::"#func ": " \
691#handle " handle is not removed"); \
944 "adding new data to a scope with non-empty history " 945 "make data inconsistent on "<<conflict_id->
AsString());
950 "adding new data to a scope with non-empty history " 951 "may cause the data to become inconsistent");
960 TIdsseq_ids, annot_ids;
970 TIdsseq_ids(1, new_id), annot_ids;
978 TIdsseq_ids, annot_ids;
985 const TIds& annot_ids)
991 size_tadd_count = seq_ids.size();
993 size_tscan_time = add_count + old_count;
994 doublelookup_time = (double)
min(add_count, old_count) *
995(2. *
log((
double)
max(add_count, old_count)+2.));
996 if( scan_time < lookup_time ) {
998TIds::const_iterator it1 = seq_ids.begin();
1001 if( *it1 < it2->
first) {
1005 else if( it2->first < *it1 ) {
1009 if( it2->second.m_Bioseq_Info ) {
1015conflict_id = &*it1;
1021 else if( add_count < old_count ) {
1026it2->second.m_Bioseq_Info ) {
1032conflict_id = &*it1;
1039 if( it2->second.m_Bioseq_Info ) {
1040TIds::const_iterator it1 = lower_bound(seq_ids.begin(),
1043 if( it1 != seq_ids.end() && *it1 == it2->first ) {
1049conflict_id = &*it1;
1055 if( conflict_id ) {
1058 if( !annot_ids.empty() ) {
1071 if( it->second.m_Bioseq_Info ) {
1086it->second.x_ResetAnnotRef_Info();
1099 if( it->second.m_Bioseq_Info ) {
1103it->second.x_ResetAnnotRef_Info();
1134it->second.x_ResetAnnotRef_Info();
1135 if( it->second.m_Bioseq_Info ) {
1156&*it->second.m_Bioseq_Info == &seq ) {
1165&*it->second.m_Bioseq_Info == &seq ) {
1175&*it->second.m_Bioseq_Info == &seq ) {
1199 "CScope::GetSeq_entryHandle(loader, blob_id): " 1200 "data loader is not in the scope");
1210 "CScope::GetSeq_entryHandle(loader, blob_id): " 1211 "entry is not found");
1279 if( !it.GetRange().Empty() ) {
1280loc_id = it.GetSeq_id_Handle();
1281loc_pos = it.GetRange().GetFrom();
1290 "CScope_Impl::GetSeq_featHandle: " 1291 "Seq-feat location is empty");
1297it->FindSeq_feat_Lock(loc_id, loc_pos, feat);
1298 if( lock.first.first ) {
1300*lock.first.second),
1308 "CScope_Impl::GetSeq_featHandle: Seq-feat not found");
1337TMap::iterator iter = pmap.
lower_bound(priority);
1338 while( iter != pmap.end() && iter->first == priority ) {
1339 if( iter->second.IsLeaf() && iter->second.GetLeaf().CanBeEdited() ) {
1340 return Ref(&iter->second.GetLeaf());
1359TMap::iterator iter = pmap.
lower_bound(priority);
1360 while( iter != pmap.end() && iter->first == priority ) {
1361 if( iter->second.IsLeaf() && iter->second.GetLeaf().IsConst() ) {
1362 return Ref(&iter->second.GetLeaf());
1386 if( &*it == ds2 ) {
1387it.InsertBefore(*ds_info);
1393 "CScope_Impl::AddDSBefore: ds2 is not attached");
1420 "CScope_Impl::x_GetTSE_Lock: entry is not attached");
1437 "CScope_Impl::x_GetSeq_entry_Lock: entry is not attached");
1454 "CScope_Impl::x_GetSeq_annot_Lock: annot is not attached");
1471 "CScope_Impl::x_GetBioseq_set_Lock: " 1472 "bioseq set is not attached");
1489 "CScope_Impl::x_GetBioseq_Lock: bioseq is not attached");
1597 if( !tse.
IsSet() ) {
1627seqset.
GetAnnot()[0] != &annot ) {
1678 "Not a top level Bioseq");
1689 "Not a top level Bioseq-set");
1700 "Not a top level Seq-annot");
1784 return info.second.m_Bioseq_Info;
1795 info.second.m_Bioseq_Info.Reset(&bioseq_info);
1799 return info.second.m_Bioseq_Info.GetPointerOrNull() == &bioseq_info;
1837 if( !
info|| !
info->HasBioseq() ||
1838&
info->x_GetTSE_ScopeInfo() != &tse_info ) {
1864 for(
size_t i= 0;
i< ids.size(); ++
i) {
1874 if( !
info|| !
info->HasBioseq() ||
1875&
info->x_GetTSE_ScopeInfo() != &tse_info ) {
1884new_matching_ids[
i] = match_id;
1887 if( !new_matching_ids.
empty() ) {
1889 automatches = tse_info.
ResolveBulk(new_matching_ids);
1890 for(
auto& m : matches ) {
1982scope_info.
SetEditTSE(new_tse_lock, *new_ds_info);
1996 else if( old_ds_info->
IsConst() ) {
2073ids.
insert(citer.GetSeq_id_Handle());
2075 if( ids.
empty() ) {
2088 if(ids.
size() == 1) {
2093 "CScope_Impl::GetBioseqHandle: " 2094 "Seq-loc references multiple unresolvable seq-ids");
2106 if(segs->
FindSeg(*
id) < 0) {
2107 if(ids.
size() > 1) {
2118 if(valid && master) {
2122 else if(ids.
size() > 1) {
2129 "CScope_Impl::GetBioseqHandle: " 2130 "Seq-loc references multiple seq-ids");
2185 if( new_priority != last_priority ) {
2191last_priority = new_priority;
2243 else if( node.
IsLeaf() ) {
2263 if( !id_info.second.m_Bioseq_Info ) {
2266id_info.second.m_Bioseq_Info = bioseq;
2270bioseq = id_info.second.m_Bioseq_Info;
2282id_info.second.m_Bioseq_Info = bioseq;
2383(annot_ref_info->m_SearchTimestamp !=
2390cache->match.clear();
2394annot_ref_info = cache;
2401 #ifdef EXCLUDE_EDITED_BIOSEQ_ANNOT_SET 2424cache->match.clear();
2428annot_ref_info = cache;
2452 info.first.GetReverseMatchingHandles(ids);
2463lock.reserve(lock.size()+add.size());
2465save_match->reserve(save_match->size()+add.size());
2469it->first->GetName().IsNamed() &&
2470filter_nas->count(it->first->GetName().GetName()) ) {
2484lock.push_back(pair<CTSE_Handle, CSeq_id_Handle>(tse, it->second));
2493lock.resize(
size);
2494 for(
size_t i= 0;
i<
size; ++
i) {
2496lock[
i].second =
match[
i].second;
2502unique_ptr<SAnnotSelector>& sel_copy,
2506 if( !processed_nas.
empty() ) {
2507 if( sel && !sel_copy ) {
2509sel = sel_copy.get();
2511 for(
auto& na : processed_nas ) {
2517processed_nas.clear();
2531bioseq = binfo->
GetLock(
null);
2535unique_ptr<SAnnotSelector> sel_copy;
2540 if( &*it == excl_ds ) {
2546 if( excl_ds && it->
m_EditDS== excl_ds &&
2551ds_lock, sel, &processed_nas);
2570unique_ptr<SAnnotSelector> sel_copy;
2580ids.
insert(syns->GetSeq_id_Handle(syn_it));
2591 if( &*it == ds_info ) {
2595bioseq->x_GetTSE_ScopeInfo().m_TSE_Lock,
2596ds_lock, sel, &processed_nas);
2598 if( it->m_EditDS == ds_info ) {
2604ds_lock, sel, &processed_nas);
2617 sort(lock.begin(), lock.end());
2618lock.erase(unique(lock.begin(), lock.end()), lock.end());
2634bioseq->x_GetTSE_ScopeInfo().m_TSE_Lock,
2637 sort(lock.begin(), lock.end());
2638lock.erase(unique(lock.begin(), lock.end()), lock.end());
2671it->second.x_ResetAnnotRef_Info();
2672 if( it->second.m_Bioseq_Info ) {
2688it->second->ResetHistory(action);
2737 info.GetDataSource().GetBioseqs(
info, info_set, filter, level);
2742handles.push_back(bh);
2758 "CScope::GetIds(): null Seq-id handle");
2768 if(
info&&
info->HasBioseq() ) {
2770 return info->GetIds();
2777it->GetDataSource().GetIds(idh, ret);
2778 if( !ret.empty() ) {
2786 "CScope::GetIds("<<idh<<
"): sequence not found");
2797 "CScope::GetAccVer(): null Seq-id handle");
2812 if(
info&&
info->HasBioseq() ) {
2818 "CScope::GetAccVer("<<idh<<
"): no accession");
2827 if(
data.sequence_found ) {
2832 "CScope::GetAccVer("<<idh<<
"): no accession");
2834 return data.acc_ver;
2841 "CScope::GetAccVer("<<idh<<
"): sequence not found");
2852 "CScope::GetGi(): null Seq-id handle");
2861 if(
info&&
info->HasBioseq() ) {
2867 "CScope::GetGi("<<idh<<
"): no GI");
2876 if(
data.sequence_found ) {
2881 "CScope::GetGi("<<idh<<
"): no GI");
2889 "CScope::GetGi("<<idh<<
"): sequence not found");
2899 "CScope::GetLabel(): null Seq-id handle");
2904 if( !ret.empty() ) {
2915 if(
info&&
info->HasBioseq() ) {
2922 stringret = it->GetDataSource().GetLabel(idh);
2923 if( !ret.empty() ) {
2930 "CScope::GetLabel(): sequence not found");
2940 "CScope::GetTaxId(): null Seq-id handle");
2946 const CDbtag& dbtag =
id->GetGeneral();
2948 if( obj_id.
IsId() && dbtag.
GetDb() ==
"TAXID") {
2960 if(
info&&
info->HasBioseq() ) {
2962 TTaxIdret =
info->GetObjectInfo().GetTaxId();
2966 "CScope::GetTaxId("<<idh<<
"): no TaxID");
2973 TTaxIdret = it->GetDataSource().GetTaxId(idh);
2978 "CScope::GetTaxId("<<idh<<
"): no TaxID");
2986 "CScope::GetTaxId("<<idh<<
"): sequence not found");
2997 "CScope::GetSequenceLength(): null Seq-id handle");
3006 if(
info&&
info->HasBioseq() ) {
3008 return info->GetObjectInfo().GetBioseqLength();
3014 TSeqPoslength = it->GetDataSource().GetSequenceLength(idh);
3022 "CScope::GetSequenceLength("<<idh<<
"): " 3023 "sequence not found");
3034 "CScope::GetSequenceType(): null Seq-id handle");
3043 if(
info&&
info->HasBioseq() ) {
3045 return info->GetObjectInfo().GetInst_Mol();
3059 "CScope::GetSequenceType("<<idh<<
"): " 3060 "sequence not found");
3071 "CScope::GetSequenceState(): null Seq-id handle");
3080 if(
info&&
info->HasBioseq() ) {
3081 return info->GetBlobState();
3087 int state= it->GetDataSource().GetSequenceState(idh);
3095 "CScope::GetSequenceState("<<idh<<
"): " 3096 "sequence not found");
3120 "CScope::GetSequenceState(): null Seq-id handle");
3125 boolfound =
false;
3129it->GetDataSource().GetSequenceHash(idh);
3130 if(
data.sequence_found ) {
3131 if(
data.hash_known ) {
3155 "CScope::GetSequenceHash("<<idh<<
"): no hash");
3162 "CScope::GetSequenceHash("<<idh<<
"): " 3163 "sequence not found");
3209 "Bioseq["<<
info.IdString()<<
"]: " 3210 "id "<<idh.
AsString()<<
" is resolved to another " 3211 "Bioseq["<<info2->
IdString()<<
"]");
3225 if(
info.HasBioseq() ) {
3227 if( it->HaveReverseMatch() ) {
3229it->GetReverseMatchingHandles(hset);
3237 if( it->IsAccVer() ) {
3239 autoseq_id = it->GetSeqId();
3240 autotext_id = seq_id->GetTextseq_Id();
3241 if( text_id->IsSetAccession() &&
3242(text_id->IsSetName() || text_id->IsSetRelease()) ) {
3246new_text_id->ResetRelease();
3252 info.m_SynCache = syn_set;
3254 return info.m_SynCache;
3267guard(it->GetTSE_InfoMapMutex());
3279 if( it->GetDataLoader() ) {
3280 return&it->GetDataSource();
3310 "CScope_Impl::AttachToTransaction: already attached to another transaction");
3325 #ifdef NCBI_COMPILER_WORKSHOP 3327 std::count(loaded.begin(), loaded.end(),
false, tmp_count);
3328 returnsize_t(tmp_count);
3330 return std::count(loaded.begin(), loaded.end(),
false);
3345TSeqMatchMap match_map;
3346 for(
size_t i= from;
i< from +
count; ++
i) {
3349match_map[ids[
i]];
3352 if( match_map.empty() ) {
3356it->GetBlobs(match_map);
3358 for(
size_t i= from;
i< from +
count; ++
i) {
3365TSeqMatchMap::iterator
match= match_map.find(ids[
i]);
3366 if(
match!= match_map.end() &&
match->second) {
3372id_info.second.m_Bioseq_Info =
info;
3374ret[
i].m_Handle_Seq_id = ids[
i];
3375ret[
i].m_Info =
info->GetLock(
match->second.m_Bioseq);
3378 if( !id_info.second.m_Bioseq_Info ) {
3385ret[
i].m_Handle_Seq_id = ids[
i];
3386ret[
i].m_Info.Reset(
info);
3390ret[
i].m_Handle_Seq_id = ids[
i];
3392 if(
info->HasBioseq() ) {
3393ret[
i].m_Info =
info->GetLock(
null);
3396ret[
i].m_Info.Reset(
info);
3410 size_t count= sorted_ids.size();
3411ret.resize(
count);
3412 if(
count> 200 ) {
3414 for(
size_tpos = 0; pos <
count; ) {
3416 if(
cnt> 150 )
cnt= 100;
3442 size_t count= bhs.size(), remaining =
count;
3443vector<bool> loaded(
count);
3447 for(
const auto& bh : bhs) {
3448id_sets.push_back(bh.x_GetScopeInfo().GetIds());
3457it->GetDataSource().GetCDDAnnots(id_sets, loaded, cdd_locks);
3461 for(
size_t i= 0;
i<
count; ++
i) {
3462 if(!loaded[
i] || !cdd_locks[
i])
continue;
3469ret[
i] = *tse_lock;
3477 const TIds& unsorted_ids,
3484 size_t count= ids.size(), remaining =
count;
3486vector<bool> loaded(
count);
3491 for(
size_t i= 0;
i<
count; ++
i) {
3492 if( loaded[
i] ) {
3501 if(
info->HasBioseq() ) {
3502ret[
i] =
info->GetIds();
3503loaded[
i] =
true;
3508loaded[
i] =
true;
3521it->GetDataSource().GetBulkIds(ids, loaded, ret);
3527 "CScope::GetBulkIds(): some sequences not found");
3535 const TIds& unsorted_ids,
3542 size_t count= ids.size(), remaining =
count;
3544vector<bool> loaded(
count);
3546 for(
size_t i= 0;
i<
count; ++
i) {
3547 if( ids[
i].IsAccVer() ) {
3548ret[
i] = ids[
i];
3549loaded[
i] =
true;
3558 for(
size_t i= 0;
i<
count; ++
i) {
3559 if( loaded[
i] ) {
3568 if(
info->HasBioseq() ) {
3570loaded[
i] =
true;
3583it->GetDataSource().GetAccVers(ids, loaded, ret);
3589 "CScope::GetAccVers(): some sequences not found");
3593 for(
size_t i= 0;
i<
count; ++
i) {
3594 if( loaded[
i] && !ret[
i] ) {
3596 "CScope::GetAccVers(): some sequences have no acc");
3606 const TIds& unsorted_ids,
3613 size_t count= ids.size(), remaining =
count;
3615vector<bool> loaded(
count);
3617 for(
size_t i= 0;
i<
count; ++
i) {
3618 if( ids[
i].IsGi() ) {
3619ret[
i] = ids[
i].GetGi();
3620loaded[
i] =
true;
3629 for(
size_t i= 0;
i<
count; ++
i) {
3630 if( loaded[
i] ) {
3639 if(
info->HasBioseq() ) {
3641loaded[
i] =
true;
3654it->GetDataSource().GetGis(ids, loaded, ret);
3660 "CScope::GetGis(): some sequences not found");
3664 for(
size_t i= 0;
i<
count; ++
i) {
3665 if( loaded[
i] && ret[
i] ==
ZERO_GI) {
3667 "CScope::GetGis(): some sequences have no GI");
3677 const TIds& unsorted_ids,
3684 size_t count= ids.size(), remaining =
count;
3685ret.assign(
count,
string());
3686vector<bool> loaded(
count);
3688 for(
size_t i= 0;
i<
count; ++
i) {
3690 if( !ret[
i].
empty() ) {
3691loaded[
i] =
true;
3700 for(
size_t i= 0;
i<
count; ++
i) {
3701 if( loaded[
i] ) {
3710 if(
info->HasBioseq() ) {
3712loaded[
i] =
true;
3725it->GetDataSource().GetLabels(ids, loaded, ret);
3731 "CScope::GetLabels(): some sequences not found");
3739 const TIds& unsorted_ids,
3746 size_t count= ids.size(), remaining =
count;
3748vector<bool> loaded(
count);
3750 for(
size_t i= 0;
i<
count; ++
i) {
3753 const CDbtag& dbtag =
id->GetGeneral();
3755 if( obj_id.
IsId() && dbtag.
GetDb() ==
"TAXID") {
3757loaded[
i] =
true;
3767 for(
size_t i= 0;
i<
count; ++
i) {
3768 if( loaded[
i] ) {
3777 if(
info->HasBioseq() ) {
3779ret[
i] =
info->GetObjectInfo().GetTaxId();
3780loaded[
i] =
true;
3793it->GetDataSource().GetTaxIds(ids, loaded, ret);
3799 "CScope::GetTaxIds(): some sequences not found");
3807 const TIds& unsorted_ids,
3814 size_t count= ids.size(), remaining =
count;
3816vector<bool> loaded(
count);
3821 for(
size_t i= 0;
i<
count; ++
i) {
3822 if( loaded[
i] ) {
3831 if(
info->HasBioseq() ) {
3833ret[
i] =
info->GetObjectInfo().GetBioseqLength();
3834loaded[
i] =
true;
3847it->GetDataSource().GetSequenceLengths(ids, loaded, ret);
3852 "CScope::GetSequenceLengths(): some sequences not found");
3860 const TIds& unsorted_ids,
3867 size_t count= ids.size(), remaining =
count;
3869vector<bool> loaded(
count);
3874 for(
size_t i= 0;
i<
count; ++
i) {
3875 if( loaded[
i] ) {
3884 if(
info->HasBioseq() ) {
3886ret[
i] =
info->GetObjectInfo().GetInst_Mol();
3887loaded[
i] =
true;
3900it->GetDataSource().GetSequenceTypes(ids, loaded, ret);
3905 "CScope::GetSequenceTypes(): some sequences not found");
3913 const TIds& unsorted_ids,
3923 size_t count= ids.size(), remaining =
count;
3924ret.assign(
count, kNotFound);
3925vector<bool> loaded(
count);
3930 for(
size_t i= 0;
i<
count; ++
i) {
3931 if( loaded[
i] ) {
3940 if(
info->HasBioseq() ) {
3942ret[
i] =
info->GetBlobState();
3943loaded[
i] =
true;
3956it->GetDataSource().GetSequenceStates(ids, loaded, ret);
3961 "CScope::GetSequenceStates(): some sequences not found");
3969 const TIds& unsorted_ids,
3976 size_t count= ids.size(), remaining =
count;
3977ret.assign(
count, 0);
3978vector<bool> loaded(
count);
3979vector<bool> known(
count);
3988it->GetDataSource().GetSequenceHashes(ids, loaded, ret, known);
3992 for(
size_t i= 0;
i<
count; ++
i) {
3997 if( !loaded[
i] ) {
4007 "CScope::GetSequenceHash("<<ids[
i]<<
"): " 4015 "CScope::GetSequenceHashes(): some sequences not found");
static CRef< CScope > m_Scope
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
Checksum and hash calculation classes.
bool IsSetDescr(void) const
bool IsSetAnnot(void) const
const TAnnot & GetAnnot(void) const
const CSeq_entry_Info & GetParentSeq_entry_Info(void) const
CConstRef< TObject > GetBioseqCore(void) const
atomic< int > m_IdChangeCounter
bool HasBioseq(void) const
TAnnotRefInfo m_BioseqAnnotRef_Info
string IdString(void) const
const CBioseq_Info & GetObjectInfo(void) const
void SetUnresolved(TBlobStateFlags flag, int timestamp)
CInitMutex< CSynonymsSet > m_SynCache
atomic< int > m_UnresolvedTimestamp
const TIds & GetIds(void) const
TBioseq_Lock GetLock(CConstRef< CBioseq_Info > bioseq)
void x_ResetAnnotRef_Info()
TNAAnnotRefInfo m_NABioseqAnnotRef_Info
CBioseq_set_EditHandle â.
bool IsSetClass(void) const
bool IsEmptySeq_set(void) const
bool IsSetSeq_set(void) const
bool IsSetDate(void) const
CRef< CSeq_entry_Info > AddEntry(CSeq_entry &entry, int index, bool set_uniqid=false)
bool IsSetLevel(void) const
bool IsSetColl(void) const
bool IsSetRelease(void) const
Blob state exceptions, used by GenBank loader.
CChecksum â Checksum calculator.
const TTSE_InfoMap & GetTSE_InfoMap(void) const
void SetCanRemoveOnResetHistory(void)
pair< TSeq_annot_Lock, int > TSeq_feat_Lock
TTSE_InfoMapMutex & GetTSE_InfoMapMutex(void) const
CScope_Impl & GetScopeImpl(void) const
CDataSource & GetDataSource(void)
void ResetHistory(int action_if_locked)
TTSE_Lock GetTSE_Lock(const CTSE_Lock &tse)
CRef< CDataSource_ScopeInfo > m_EditDS
SSeqMatch_Scope BestResolve(const CSeq_id_Handle &idh, int get_flag)
CDataLoader * GetDataLoader(void)
bool CanBeEdited(void) const
TSeq_entry_Lock GetSeq_entry_Lock(const CBlobIdKey &blob_id)
TTSE_Lock GetSharedTSE(void) const
TTSE_Lock AddStaticTSE(CSeq_entry &se)
bool CanBeEdited(void) const
bool DropStaticTSE(CTSE_Info &info)
TPriority GetDefaultPriority(void) const
CDataLoader * GetDataLoader(void) const
void DropAllTSEs(void)
Get TSE info by seq-id handle.
const CConstRef< CObject > & GetSharedObject(void) const
vector< CConstRef< CBioseq_Info > > TBioseq_InfoSet
vector< CTSE_Lock > TCDD_Locks
void GetTSESetWithOrphanAnnots(const TSeq_idSet &ids, TTSE_LockMatchSet &tse_set, const SAnnotSelector *sel, CDataLoader::TProcessedNAs *processed_nas=0)
void GetTSESetWithBioseqAnnots(const CBioseq_Info &bioseq, const TTSE_Lock &tse, TTSE_LockMatchSet &tse_set, const SAnnotSelector *sel, CDataLoader::TProcessedNAs *processed_nas=0, bool external_only=false)
vector< vector< CSeq_id_Handle > > TSeqIdSets
void GetTSESetWithExternalAnnots(const CBioseq_Info &bioseq, const TTSE_Lock &tse, TTSE_LockMatchSet &tse_set, const SAnnotSelector *sel, CDataLoader::TProcessedNAs *processed_nas=0)
void Release()
Manually force the resource to be released.
int FindSeg(const CSeq_id_Handle &h) const
Base class for all object manager exceptions.
CPriorityTree & GetTree(void)
TPriorityMap & GetTree(void)
bool Insert(const CPriorityNode &node, TPriority priority)
size_t Erase(const TLeaf &leaf)
bool HasSeveralNodes(void)
bool IsDetached(void) const
CScope_Impl & x_GetScopeImpl(void) const
CTSE_ScopeInfo & x_GetTSE_ScopeInfo(void) const
CSeq_entry_EditHandle x_AttachEntry(const CBioseq_set_EditHandle &seqset, CRef< CSeq_entry_Info > entry, int index)
CRef< CBioseq_ScopeInfo > x_GetBioseq_Info(const CSeq_id_Handle &id, int get_flag, SSeqMatch_Scope &match)
void x_ClearAnnotCache(void)
CRef< CDataSource_ScopeInfo > GetConstDS(TPriority priority)
TBioseq_Lock x_GetBioseq_Lock(const CBioseq &bioseq, int action)
friend class CSeq_entry_Handle
TSeqPos GetSequenceLength(const CSeq_id_Handle &id, TGetFlags flags)
CDataSource::TTSE_LockMatchSet TTSE_LockMatchSet_DS
IScopeTransaction_Impl & GetTransaction()
string GetLabel(const CSeq_id_Handle &idh, TGetFlags flags)
void ResetDataAndHistory(void)
CBioseq_ScopeInfo::TTSE_MatchSet TTSE_MatchSet
TBioseqHandles GetBioseqHandles(const TIds &ids)
friend class CSeq_annot_EditHandle
CPriorityTree m_setDataSrc
CSeq_annot_EditHandle x_AttachAnnot(const CSeq_entry_EditHandle &entry, CRef< CSeq_annot_Info > annot)
void x_ReportNewDataConflict(const CSeq_id_Handle *conflict_id=0)
SSeqMatch_Scope x_FindBioseqInfo(const CPriorityTree &tree, const CSeq_id_Handle &idh, int get_flag)
void x_UpdateHandleSeq_id(CBioseq_Handle &bh)
CConstRef< CSynonymsSet > x_GetSynonyms(CBioseq_ScopeInfo &info)
CRef< CSeq_entry > x_MakeDummyTSE(CBioseq &seq) const
friend class CBioseq_set_Handle
CRef< CObjectManager > m_ObjMgr
CBioseq_Handle AddBioseq(CBioseq &bioseq, TPriority pri, TExist action)
void GetSequenceStates(TSequenceStates &ret, const TIds &idhs, TGetFlags flags)
void x_ClearCacheOnRemoveAnnot(const CTSE_Info &old_tse)
bool Exists(const CSeq_id_Handle &id)
void GetTaxIds(TTaxIds &ret, const TIds &idhs, TGetFlags flags)
vector< CBioseq_Handle > TBioseqHandles
Bulk retrieval methods.
CSeq_entry_Handle AddSeq_entry(CSeq_entry &entry, TPriority pri, TExist action)
void x_ClearCacheOnRemoveSeqId(const CSeq_id_Handle &id, CBioseq_ScopeInfo &seq)
TSeq_idMapValue * x_FindSeq_id_Info(const CSeq_id_Handle &id)
int GetSequenceHash(const CSeq_id_Handle &id, TGetFlags flags)
TCDD_Entries GetCDDAnnots(const TIds &idhs)
void SetKeepExternalAnnotsForEdit(bool keep=true)
CTSE_ScopeUserLock TTSE_Lock
TBioseqHandles GetBioseqHandlesFromTSE(const TIds &ids, const CTSE_Handle &tse)
CBioseq_Handle x_GetBioseqHandle(const CBioseq_Info &seq, const CTSE_Handle &tse)
vector< CTSE_Handle > TCDD_Entries
friend class CBioseq_Handle
void AddDefaults(TPriority priority)
IScopeTransaction_Impl * m_Transaction
CSeq_entry_Handle GetSeq_entryHandle(CDataLoader *loader, const CBlobIdKey &blob_id, TMissing action)
void GetGis(TGIs &ret, const TIds &idhs, TGetFlags flags)
void RemoveBioseq(const CBioseq_EditHandle &seq)
CSeq_annot_Handle AddSharedSeq_annot(const CSeq_annot &annot, TPriority pri, TExist action)
TSeq_idMap::value_type TSeq_idMapValue
CBioseq_Handle GetBioseqHandleFromTSE(const CSeq_id_Handle &id, const CTSE_Handle &tse)
CBioseq_Handle x_GetBioseqHandleFromTSE(const CSeq_id_Handle &id, const CTSE_Handle &tse)
void x_ClearCacheOnNewAnnot(const CTSE_Info &new_tse)
void RemoveFromHistory(const CTSE_Handle &tse, int action)
void x_ClearCacheOnRemoveData(const CTSE_Info *old_tse=0)
bool GetKeepExternalAnnotsForEdit() const
void SetActiveTransaction(IScopeTransaction_Impl *)
virtual ~CScope_Impl(void)
void x_ResolveSeq_id(TSeq_idMapValue &id, int get_flag, SSeqMatch_Scope &match)
CSeq_annot_Handle AddSeq_annot(CSeq_annot &annot, TPriority pri, TExist action)
void GetAccVers(TIds &ret, const TIds &idhs, TGetFlags flags)
void x_GetTSESetWithAnnots(TTSE_LockMatchSet &lock, CBioseq_ScopeInfo &binfo, const SAnnotSelector *sel=0)
TSeq_annot_Lock x_GetSeq_annot_Lock(const CSeq_annot &annot, int action)
bool m_KeepExternalAnnotsForEdit
vector< TSeqPos > TSequenceLengths
void RemoveAnnot(const CSeq_annot_EditHandle &annot)
pair< CConstRef< CSeq_entry_Info >, TTSE_Lock > TSeq_entry_Lock
void x_ClearCacheOnNewData(const TIds &seq_ids, const TIds &annot_ids)
CRef< CDataSource_ScopeInfo > GetEditDataSource(CDataSource_ScopeInfo &ds, const CTSE_ScopeInfo *replaced_tse=0)
void RemoveEntry(const CSeq_entry_EditHandle &entry)
void AddScope(CScope_Impl &scope, TPriority priority)
CBioseq_set_EditHandle SelectSet(const CSeq_entry_EditHandle &entry, CBioseq_set &seqset)
vector< pair< CTSE_Handle, CSeq_id_Handle > > TTSE_LockMatchSet
vector< CBioseq_Handle > TBioseq_HandleSet
void x_GetTSESetWithOrphanAnnots(TTSE_LockMatchSet &lock, TTSE_MatchSet *save_match, const TSeq_idSet &ids, CBioseq_ScopeInfo *binfo, const SAnnotSelector *sel)
CBioseq_ScopeInfo::TAnnotRefInfo & x_GetAnnotRef_Info(const SAnnotSelector *sel, CBioseq_ScopeInfo::TAnnotRefInfo &main_info, CBioseq_ScopeInfo::TNAAnnotRefInfo &na_info)
void GetAllTSEs(TTSE_Handles &tses, int kind)
void SelectNone(const CSeq_entry_EditHandle &entry)
void x_PopulateBioseq_HandleSet(const CSeq_entry_Handle &tse, TBioseq_HandleSet &handles, CSeq_inst::EMol filter, TBioseqLevelFlag level)
friend class CBioseq_EditHandle
void RemoveTopLevelBioseq(const CBioseq_Handle &seq)
void x_GetTSESetWithBioseqAnnots(TTSE_LockMatchSet &lock, TTSE_MatchSet *save_match, CBioseq_ScopeInfo &binfo, const SAnnotSelector *sel)
void x_ClearCacheOnNewDS(void)
void GetBulkIds(TBulkIds &ret, const TIds &idhs, TGetFlags flags)
CDataSource_ScopeInfo::TBioseq_Lock TBioseq_Lock
void AddDataLoader(const string &loader_name, TPriority priority)
void RemoveTopLevelAnnot(const CSeq_annot_Handle &annot)
CSeq_inst::TMol GetSequenceType(const CSeq_id_Handle &id, TGetFlags flags)
CInitMutexPool m_MutexPool
friend class CScopeTransaction_Impl
vector< int > TSequenceStates
TBioseq_set_Lock x_GetBioseq_set_Lock(const CBioseq_set &seqset, int action)
CSeq_annot_Handle GetSeq_annotHandle(const CSeq_annot &annot, TMissing action)
bool IsSameBioseq(const CSeq_id_Handle &id1, const CSeq_id_Handle &id2, int get_flag)
void ResetHistory(int action)
CSeq_entry_Handle AddSeq_submit(CSeq_submit &submit, TPriority pri)
friend class CBioseq_ScopeInfo
void x_AddTSESetWithAnnots(TTSE_LockMatchSet &lock, TTSE_MatchSet *save_match, const TTSE_LockMatchSet_DS &add, CDataSource_ScopeInfo &ds_info, CDataLoader::TProcessedNAs *filter_nas=0)
CSeq_entry_Handle AddSharedSeq_entry(const CSeq_entry &entry, TPriority pri, TExist action)
atomic< int > m_AnnotChangeCounter
CSeq_annot_EditHandle AttachAnnot(const CSeq_entry_EditHandle &entry, CSeq_annot &annot)
vector< CSeq_entry_Handle > TTSE_Handles
CSeq_feat_Handle GetSeq_featHandle(const CSeq_feat &feat, TMissing action)
atomic< int > m_BioseqChangeCounter
void x_ClearCacheOnEdit(const CTSE_ScopeInfo &replaced_tse)
friend class CDataSource_ScopeInfo
void x_GetBioseqHandlesFromTSE(const TIds &ids, TBioseqHandles &ret, const CTSE_Handle &tse)
void GetSequenceTypes(TSequenceTypes &ret, const TIds &idhs, TGetFlags flags)
CBioseq_Handle AddSharedBioseq(const CBioseq &bioseq, TPriority pri, TExist action)
vector< CSeq_inst::TMol > TSequenceTypes
CConstRef< CSynonymsSet > GetSynonyms(const CSeq_id_Handle &id, int get_flag)
TSeq_entry_Lock x_GetSeq_entry_Lock(const CSeq_entry &entry, int action)
void RemoveDataLoader(const string &loader_name, int action)
TSeq_idMapLock m_Seq_idMapLock
CRef< CBioseq_ScopeInfo > x_FindBioseq_Info(const CSeq_id_Handle &id, int get_flag, SSeqMatch_Scope &match)
void GetSequenceLengths(TSequenceLengths &ret, const TIds &idhs, TGetFlags flags)
vector< CSeq_id_Handle > TIds
void x_DetachFromOM(void)
CSeq_entry_EditHandle AttachEntry(const CBioseq_set_EditHandle &seqset, CSeq_entry &entry, int index=-1)
void x_AttachToOM(CObjectManager &objmgr)
CRef< CDataSource_ScopeInfo > AddDSBefore(CRef< CDataSource > ds, CRef< CDataSource_ScopeInfo > ds2, const CTSE_ScopeInfo *replaced_tse=0)
void GetSequenceHashes(TSequenceHashes &ret, const TIds &idhs, TGetFlags flags)
CBioseq_set_EditHandle x_SelectSet(const CSeq_entry_EditHandle &entry, CRef< CBioseq_set_Info > seqset)
void RemoveTopLevelBioseq_set(const CBioseq_set_Handle &seqset)
CSeq_id_Handle GetAccVer(const CSeq_id_Handle &idh, TGetFlags flags)
void GetLabels(TLabels &ret, const TIds &idhs, TGetFlags flags)
CDataSource * GetFirstLoaderSource(void)
bool x_IsDummyTSE(const CTSE_Info &tse, const CBioseq_Info &seq) const
CBioseq_Handle GetBioseqHandle(const CSeq_id_Handle &id, int get_flag)
CBioseq_set_Handle GetBioseq_setHandle(const CBioseq_set &seqset, TMissing action)
friend class CSeq_entry_EditHandle
CRef< CDataSource_ScopeInfo > AddDS(CRef< CDataSource > ds, TPriority priority)
CRef< CBioseq_ScopeInfo > x_InitBioseq_Info(TSeq_idMapValue &info, int get_flag, SSeqMatch_Scope &match)
TIds GetIds(const CSeq_id_Handle &idh, TGetFlags flags=0)
void x_GetBioseqHandlesSorted(const TIds &ids, size_t from, size_t count, TBioseqHandles &ret)
Bulk retrieval methods.
pair< CConstRef< CSeq_annot_Info >, TTSE_Lock > TSeq_annot_Lock
void RemoveBioseq_set(const CBioseq_set_EditHandle &seqset)
CRef< CDataSource_ScopeInfo > GetEditDS(TPriority priority)
TTSE_Lock x_GetTSE_Lock(const CSeq_entry &tse, int action)
CBioseq_EditHandle SelectSeq(const CSeq_entry_EditHandle &entry, CBioseq &seq)
pair< CConstRef< CBioseq_set_Info >, TTSE_Lock > TBioseq_set_Lock
TGi GetGi(const CSeq_id_Handle &idh, TGetFlags flags)
CTSE_Handle GetEditHandle(const CTSE_Handle &src_tse)
TSeq_idMapValue & x_GetSeq_id_Info(const CSeq_id_Handle &id)
CRef< CDataSource_ScopeInfo > x_GetDSInfo(CDataSource &ds)
void GetTSESetWithAnnots(const CSeq_id_Handle &idh, TTSE_LockMatchSet &tse_set)
friend class CBioseq_set_EditHandle
CBioseq_EditHandle x_SelectSeq(const CSeq_entry_EditHandle &entry, CRef< CBioseq_Info > bioseq)
TTaxId GetTaxId(const CSeq_id_Handle &idh, TGetFlags flags)
void x_AddSynonym(const CSeq_id_Handle &idh, CSynonymsSet &syn_set, CBioseq_ScopeInfo &info)
void x_LockMatchSet(TTSE_LockMatchSet &lock, const TTSE_MatchSet &match)
void x_UpdateProcessedNAs(const SAnnotSelector *&sel, unique_ptr< SAnnotSelector > &sel_copy, CDataLoader::TProcessedNAs &filter_nas, CDataLoader::TProcessedNAs &processed_nas)
void RemoveTopLevelSeqEntry(const CTSE_Handle &entry)
bool IsTransactionActive() const
int GetSequenceState(const CSeq_id_Handle &id, TGetFlags flags)
IScopeTransaction_Impl * CreateTransaction()
const CSeq_entry_Info & GetParentSeq_entry_Info(void) const
TSeq & SelectSeq(TSeq &seq)
CRef< CSeq_annot_Info > AddAnnot(CSeq_annot &annot)
const TSeq & GetSeq(void) const
virtual void GetSeqAndAnnotIds(TSeqIds &seq_ids, TSeqIds &annot_ids) const
const TSet & GetSet(void) const
namespace ncbi::objects::
Seq-loc iterator class â iterates all intervals from a seq-loc in the correct order.
void GetSortedBioseqs(TBioseqs &bioseqs) const
void RestoreOrder(vector< TValue > &values) const
void RestoreOrder(vector< TValue > &values) const
void GetSortedIds(TIds &ids) const
bool ContainsSynonym(const CSeq_id_Handle &id) const
void AddSynonym(const value_type &syn)
bool CanBeEdited(void) const
Return true if this TSE handle is local to scope and can be edited.
TScopeInfo & x_GetScopeInfo(void) const
const CTSE_Info & x_GetTSE_Info(void) const
const CTSE_Info & GetTSE_Info(void) const
void SetTopLevelObject(ETopLevelObjectType type, CSerialObject *ptr)
CConstRef< CSeq_entry > GetTSECore(void) const
CConstRef< CMasterSeqSegments > GetMasterSeqSegments(void) const
void SetTopLevelObjectType(ETopLevelObjectType type)
unique_ptr< SBaseTSE > m_BaseTSE
CConstRef< CBioseq_Info > GetSegSetMaster(void) const
CDataSource_ScopeInfo & GetDSInfo(void) const
void AddAnnot(CSeq_entry_ScopeInfo &entry, CSeq_annot_ScopeInfo &info)
void ResetEntry(CSeq_entry_ScopeInfo &info)
CRef< CBioseq_ScopeInfo > GetBioseqInfo(const SSeqMatch_Scope &match)
CSeq_id_Handle ContainsMatchingBioseq(const CSeq_id_Handle &id) const
void ReplaceTSE(const CTSE_Info &old_tse)
void RemoveFromHistory(const CTSE_Handle *tseh, int action_if_locked, bool drop_from_ds=false)
void RemoveAnnot(CSeq_annot_ScopeInfo &info)
void SelectSet(CSeq_entry_ScopeInfo &entry, CBioseq_set_ScopeInfo &info)
SSeqMatch_Scope Resolve(const CSeq_id_Handle &id)
bool CanBeEdited(void) const
map< size_t, SSeqMatch_Scope > ResolveBulk(const map< size_t, CSeq_id_Handle > &ids)
CScope_Impl & GetScopeImpl(void) const
TBioseq_Lock GetBioseqLock(CRef< CBioseq_ScopeInfo > info, CConstRef< CBioseq_Info > bioseq)
void SelectSeq(CSeq_entry_ScopeInfo &entry, CBioseq_ScopeInfo &info)
void SetEditTSE(const CTSE_Lock &new_tse_lock, CDataSource_ScopeInfo &new_ds)
void RemoveEntry(CSeq_entry_ScopeInfo &info)
void AddEntry(CBioseq_set_ScopeInfo &seqset, CSeq_entry_ScopeInfo &info, int index)
virtual void AddScope(CScope_Impl &)=0
virtual bool HasScope(CScope_Impl &) const =0
container_type::iterator iterator
const_iterator begin() const
const_iterator end() const
const_iterator lower_bound(const key_type &key) const
iterator_bool insert(const value_type &val)
const_iterator find(const key_type &key) const
const_iterator lower_bound(const key_type &key) const
iterator_bool insert(const value_type &val)
static void DLIST_NAME() init(DLIST_LIST_TYPE *list)
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
SStrictId_Tax::TId TTaxId
Taxon id type.
const TSeqPos kInvalidSeqPos
Define special value for invalid sequence position.
#define TAX_ID_FROM(T, value)
Uint4 GetChecksum(void) const
Return calculated checksum.
void AddChars(const char *str, size_t len)
Update current control sum with data provided.
#define LOG_POST_X(err_subcode, message)
#define ERR_POST_X(err_subcode, message)
Error posting with default error code and given error subcode.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
void Warning(CExceptionArgs_Base &args)
#define NCBI_THROW_FMT(exception_class, err_code, message)
The same as NCBI_THROW but with message processed as output to ostream.
void Info(CExceptionArgs_Base &args)
C * SerialClone(const C &src)
Create on heap a clone of the source object.
string GetDirectLabel(const CSeq_id &id)
Return best label for a sequence from single Seq-id, or set of Seq-ids.
CConstRef< CSeq_id > GetSeqId(void) const
bool IsAccVer(void) const
static CSeq_id_Handle GetHandle(const CSeq_id &id)
Normal way of getting a handle, works for any seq-id.
string AsString(void) const
CSeq_id::E_Choice Which(void) const
string GetLabel(const CSeq_id &id)
const CTextseq_id * GetTextseq_Id(void) const
Return embedded CTextseq_id, if any.
void AcquireDefaultDataSources(TDataSourcesLock &sources)
void SetKeepExternalAnnotsForEdit(bool keep=true)
Change this scope's KeepExternalAnnotsForEdit flag.
static bool IsActive(void)
TDataSourceLock AcquireSharedSeq_entry(const CSeq_entry &object)
bool GetKeepExternalAnnotsForEdit() const
Return this scope's KeepExternalAnnotsForEdit flag.
void RevokeScope(CScope_Impl &scope)
TBlobState GetBlobState(void)
CDataSource * GetDataSource(void) const
TDataSourceLock AcquireSharedBioseq(const CBioseq &object)
vector< CBioseq_Handle > TBioseqHandles
static CSeq_id_Handle x_GetAccVer(const TIds &ids)
TDataSourceLock AcquireSharedSeq_annot(const CSeq_annot &object)
void RegisterScope(CScope_Impl &scope)
TDataSourceLock AcquireDataLoader(CDataLoader &loader)
static TGi x_GetGi(const TIds &ids)
static bool GetDefaultKeepExternalAnnotsForEdit()
Return current application-wide KeepExternalAnnotsForEdit flag.
static void SetDefaultKeepExternalAnnotsForEdit(bool keep=true)
Set new application-wide KeepExternalAnnotsForEdit flag.
CRef< CScope_Impl > m_Impl
@ fThrowOnMissing
throw exception if sequence or requested data aren't found
@ fThrowOnMissingData
fThrowOnMissingData will cause exception to be thrown if sequence is found but doesn't have the data ...
@ fDoNotRecalculate
avoid time-consuming recalculation of missing data
@ fThrowOnMissingSequence
fThrowOnMissingSequence will cause exception to be thrown if sequence not found.
@ fForceLoad
ignore already loaded information and alway request data loader
@ eGetBioseq_Resolved
Search only in already resolved ids.
@ eGetBioseq_Loaded
Search in all loaded TSEs in the scope.
@ eGetBioseq_All
Search bioseq, load if not loaded yet.
@ kPriority_Default
Use default priority for added data.
vector< CSeq_id_Handle > TId
TScopeInfo & x_GetScopeInfo(void) const
const CTSE_Handle & GetTSE_Handle(void) const
const CTSE_Handle & GetTSE_Handle(void) const
Get CTSE_Handle of containing TSE.
CSeq_annot_Info & x_GetInfo(void) const
TScopeInfo & x_GetScopeInfo(void) const
E_Choice Which(void) const
const CTSE_Handle & GetTSE_Handle(void) const
bool IsRemoved(void) const
bool IsRemoved(void) const
const CTSE_Handle & GetTSE_Handle(void) const
const CBioseq_ScopeInfo & x_GetScopeInfo(void) const
const CSeq_entry_Info & x_GetInfo(void) const
bool IsRemoved(void) const
Check if handle points to a removed bioseq.
CSeq_id_Handle m_Handle_Seq_id
bool IsRemoved(void) const
const CBioseq_set_Info & x_GetInfo(void) const
CBioseq_set_Info & x_GetInfo(void) const
CConstRef< CSeq_entry > GetCompleteSeq_entry(void) const
Complete and get const reference to the seq-entry.
const CSeq_annot_Info & x_GetInfo(void) const
CSeq_entry_EditHandle GetParentEntry(void) const
Navigate object tree.
const CBioseq_Info & x_GetInfo(void) const
CSeq_entry_EditHandle GetParentEntry(void) const
Get parent seq-entry edit handle.
CSeq_entry_Info & x_GetInfo(void) const
CBioseq_ScopeInfo & x_GetScopeInfo(void) const
const TId & GetId(void) const
CSeq_entry_EditHandle GetParentEntry(void) const
Navigate object tree.
TScopeInfo & x_GetScopeInfo(void) const
@ eCoding_Iupac
Set coding to printable coding (Iupacna or Iupacaa)
bool IsIncludedAnyNamedAnnotAccession(void) const
check if any named annot accession is included in the search
TSNPScaleLimit GetSNPScaleLimit(void) const
const TNamedAnnotAccessions & GetNamedAnnotAccessions(void) const
SAnnotSelector & ExcludeNamedAnnotAccession(const string &acc)
CConstRef< C > ConstRef(const C *object)
Template function for conversion of const object pointer to CConstRef.
CRef< C > Ref(C *object)
Helper functions to get CRef<> and CConstRef<> objects.
void Reset(void)
Reset reference object.
void Reset(void)
Reset reference object.
#define NCBI_PARAM_TYPE(section, name)
Generate typename for a parameter from its {section, name} attributes.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
const TTag & GetTag(void) const
Get the Tag member data.
bool IsId(void) const
Check if variant Id is selected.
const TDb & GetDb(void) const
Get the Db member data.
TId GetId(void) const
Get the variant data.
const TLocation & GetLocation(void) const
Get the Location member data.
void ResetName(void)
Reset Name data member.
@ e_General
for other databases
TSet & SetSet(void)
Select the variant.
TAnnot & SetAnnot(void)
Assign a value to Annot data member.
TSeq & SetSeq(void)
Select the variant.
TSeq_set & SetSeq_set(void)
Assign a value to Seq_set data member.
@ e_not_set
No variant selected.
EMol
molecule class in living organism
@ eMol_not_set
> cdna = rna
E_Choice Which(void) const
Which variant is currently selected.
const TEntrys & GetEntrys(void) const
Get the variant data.
const TAnnots & GetAnnots(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
Definition of all error codes used in objmgr libraries (xobjmgr.lib, xobjutil.lib and others).
constexpr auto sort(_Init &&init)
constexpr bool empty(list< Ts... >) noexcept
double value_type
The numeric datatype used by the parser.
const struct ncbi::grid::netcache::search::fields::SIZE size
static int match(PCRE2_SPTR start_eptr, PCRE2_SPTR start_ecode, uint16_t top_bracket, PCRE2_SIZE frame_size, pcre2_match_data *match_data, match_block *mb)
static int sx_CalcHash(const CBioseq_Handle &bh)
NCBI_PARAM_DEF(bool, OBJMGR, KEEP_EXTERNAL_FOR_EDIT, false)
static size_t sx_CountFalse(const vector< bool > &loaded)
#define CHECK_REMOVED_HANDLE(func, handle)
NCBI_PARAM_DECL(bool, OBJMGR, KEEP_EXTERNAL_FOR_EDIT)
#define CHECK_HANDLE(func, handle)
Better replacement of GetAccVer(), this method should be defined in data loaders, GetAccVer() is left...
Better replacement of GetGi(), this method should be defined in data loaders, GetGi() is left for com...
Better replacement of GetSequenceHash(), this method should be defined in data loaders,...
Better replacement of GetSequenceType(), this method should be defined in data loaders,...
TBlobStateFlags m_BlobState
CTSE_ScopeUserLock m_TSE_Lock
CConstRef< CBioseq_Info > m_Bioseq
CRef< CTSE_ScopeInfo, CTSE_ScopeUserLocker > CTSE_ScopeUserLock
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4