58 #define NCBI_USE_ERRCODE_X ObjMgr_TSEinfo
99 if ( !slot->
empty() ) {
113 _ASSERT(objs.m_AnnotSet.empty());
114 _ASSERT(objs.m_SNPSet.empty());
127 : m_InternalBioObjNumber(0),
128 m_MasterSeqSegmentsLoaded(
false)
138 : m_InternalBioObjNumber(0),
139 m_MasterSeqSegmentsLoaded(
false)
154 : m_InternalBioObjNumber(0),
155 m_MasterSeqSegmentsLoaded(
false)
172 : m_InternalBioObjNumber(0),
173 m_MasterSeqSegmentsLoaded(
false)
188 m_InternalBioObjNumber(0),
189 m_MasterSeqSegmentsLoaded(
false)
397 "Unknown SNP annots");
415 if ( !
info->GetId().empty() ) {
419 if (!
info->GetId().empty())
430 if (
info->m_Bioseq_set_Id > 0)
524 ret = iter->second.m_SNP_annot_Info;
632 if (
id.HaveMatchingHandles() ) {
643 iter->second.m_Orphan = orphan;
648 _VERIFY(iter->second.m_Names.insert(name).second);
660 _VERIFY(iter->second.m_Names.erase(name) == 1);
661 if ( iter->second.m_Names.empty() ) {
662 bool orphan = iter->second.m_Orphan;
685 sort(ids.begin(), ids.end());
686 ids.erase(unique(ids.begin(), ids.end()), ids.end());
697 ids.push_back(it->first);
716 ids.push_back(it2->first);
745 else if (
id.HaveMatchingHandles() ) {
749 if ( *match_it !=
id ) {
792 if (
first->IsSeq() ) {
814 ERR_POST(
"Segment set cannot be initialized: "<<exc);
831 else if (
id.HaveMatchingHandles() ) {
835 if ( *match_it !=
id ) {
864 if ( !chunk_ids.empty() ) {
876 pair<TBioseqs::iterator, bool> ins =
881 "duplicate Bioseq id " <<
id <<
" present in" <<
882 "\n seq1: " << ins.first->second->IdString() <<
883 "\n seq2: " <<
info->IdString());
897 pair<TBioseqs::iterator, bool> ins =
902 "duplicate Bioseq id "+it->AsString()+
" present in"+
903 "\n seq1: " + ins.first->second->IdString()+
904 "\n seq2: " +
info->IdString());
944 pair<TBioseq_sets::iterator, bool> ins =
1044 object.x_UpdateAnnotIndex(*
this);
1076 return iter->second;
1093 return &iter->second;
1104 return &iter->second;
1108 pair<SIdAnnotObjs*, bool>
1114 bool new_id =
false;
1116 if ( it == objs.
end() ) {
1121 _ASSERT(it != objs.
end() && it->first ==
id);
1122 return make_pair(&it->second, new_id);
1126 pair<SIdAnnotObjs*, bool>
1138 if ( it == objs.
end() ) {
1195 it && it->first ==
key.m_Range; ++it ) {
1196 if ( it->second.m_AnnotObject_Info == &
info ) {
1198 return rangeMap.
empty();
1202 return rangeMap.
empty();
1215 for (
size_t idx = idx_rg->first; idx < idx_rg->second; ++idx) {
1223 for (
size_t idx = idx_rg.first; idx < idx_rg.second; ++idx) {
1236 for (
size_t idx = idx_rg.first; idx < idx_rg.second; ++idx) {
1255 return id_objs.second;
1268 return objs.
empty();
1279 objs.first->m_SNPSet.push_back(
ConstRef(&snp_info));
1289 TSNPSet::iterator iter = find(objs.
m_SNPSet.begin(),
1292 if ( iter != objs.
m_SNPSet.end() ) {
1314 if ( index.
empty() ) {
1329 if ( it->HasSingleKey() ) {
1333 for (
size_t i = it->GetKeysBegin(); i < it->GetKeysEnd(); ++
i ) {
1339 if ( index.
empty() ) {
1351 return *iter->second;
1357 "cannot find Bioseq-set by local id");
1359 return *iter->second;
1370 return *iter->second;
1376 "cannot find Bioseq by Seq-id "+
id.AsString());
1378 return *iter->second;
1437 if ( xref_tse ==
this ) {
1443 iter2 != index2.
end() && iter2->first ==
id; ++iter2 ) {
1445 if (
info.m_Type == id_type ) {
1446 if (
info.m_IsChunk ) {
1451 if ( xref_tse && xref_tse != &
info.m_Info->GetSeq_annot_Info().GetXrefTSE() ) {
1510 if ( xref_tse ==
this ) {
1516 iter2 != index2.
end() && iter2->first ==
id; ++iter2 ) {
1518 if (
info.m_Type == id_type ) {
1519 if (
info.m_IsChunk ) {
1524 if ( xref_tse && xref_tse != &
info.m_Info->GetSeq_annot_Info().GetXrefTSE() ) {
1604 iter != index.
end() && iter->first ==
id; ++iter ) {
1605 if ( iter->second.m_Info == &
info && iter->second.m_Type == id_type ) {
1610 _ASSERT(
"x_UnmapFeatById: not found" && 0);
1634 iter != index.
end() && iter->first ==
id; ++iter ) {
1635 if ( iter->second.m_Info == &
info && iter->second.m_Type == id_type ) {
1640 _ASSERT(
"x_UnmapFeatById: not found" && 0);
1683 it->first.first == locus &&
1684 it->first.second ==
tag;
1686 if ( it->second == &
info ) {
1712 for (
size_t index =
range.first; index <
range.second; ++index ) {
1752 for (
size_t index =
range.first; index <
range.second; ++index ) {
1828 for (
size_t index =
range.first; index <
range.second; ++index ) {
1880 for (
size_t index =
range.first; index <
range.second; ++index ) {
1922 for (
size_t index =
range.first; index <
range.second; ++index ) {
1975 if ( xref_tse ==
this ) {
1982 it->first.first == locus &&
1983 it->first.second ==
tag;
1985 if ( xref_tse && xref_tse != &it->second->GetSeq_annot_Info().
GetXrefTSE() ) {
1988 objects.push_back(it->second);
2008 if ( index < objs->x_GetRangeMapCount() &&
2013 *it->second.m_AnnotObject_Info;
2018 if ( found_feat == &feat ) {
2042 if ( seen.
insert(it->second).second ) {
2095 "CTSE_Handle::GetTopLevelSeq_submit: "
2096 "Top level object is not Seq-submit");
2101 "CTSE_Handle::GetTopLevelSeq_submit: "
2102 "Top level object is not Seq-submit");
2114 if (
set.IsSetSeq_set() && !
set.GetSeq_set().
empty() ) {
2115 submit.
SetData().SetEntrys() =
set.GetBioseq_setCore()->GetSeq_set();
2117 else if (
set.IsSetAnnot() && !
set.GetAnnot().
empty() ) {
2118 submit.
SetData().SetAnnots() =
set.GetBioseq_setCore()->GetAnnot();
2123 submit.
SetData().SetEntrys().clear();
2126 submit.
SetData().SetAnnots().clear();
User-defined methods of the data storage class.
const string & GetName(void) const
void GetLocsTypes(TTypeIndexSet &idx_set) const
const CSeq_annot_Info & GetSeq_annot_Info(void) const
bool IsRegular(void) const
vector< TIndexRange > TTypeIndexSet
const CSeq_feat * GetFeatFast(void) const
TIndex GetAnnotIndex(void) const
static CSeqFeatData::ESubtype GetSubtypeForIndex(size_t index)
pair< size_t, size_t > TIndexRange
static TIndexRange GetFeatTypeRange(CSeqFeatData::E_Choice type)
static TIndexRange GetTypeIndex(const CAnnotObject_Info &info)
static size_t GetSubtypeIndex(CSeqFeatData::ESubtype subtype)
const CSeq_id_Handle & GetSeqId() const
virtual void Update(CBioseq_Info &seq)=0
vector< CSeq_id_Handle > TId
TClass GetClass(void) const
CConstRef< CSeq_entry_Info > GetFirstEntry(void) const
void Guard(CDataSource &ds)
void x_ResetDirtyAnnotIndex(CTSE_Info &tse)
void x_IndexAnnotTSEs(CTSE_Info *tse_info)
void x_UnindexAnnotTSEs(CTSE_Info *tse_info)
CDataLoader * GetDataLoader(void) const
void x_SetDirtyAnnotIndex(CTSE_Info &tse)
void x_UnindexSeqTSE(const CSeq_id_Handle &ids, CTSE_Info *tse_info)
void x_UnindexAnnotTSE(const CSeq_id_Handle &idh, CTSE_Info *tse_info, bool orphan)
void x_Unmap(const CObject *obj, const CTSE_Info_Object *info)
void x_Map(const CObject *obj, const CTSE_Info_Object *info)
void x_IndexAnnotTSE(const CSeq_id_Handle &idh, CTSE_Info *tse_info, bool orphan)
void x_IndexSeqTSE(const CSeq_id_Handle &idh, CTSE_Info *tse_info)
Base class for all object manager exceptions.
ESubtype GetSubtype(void) const
const CSeq_entry_Info & GetXrefTSE(void) const
void x_DoUpdate(TNeedUpdateFlags flags)
void x_Update(TNeedUpdateFlags flags) const
CConstRef< TObject > GetSeq_entryCore(void) const
vector< CSeq_id_Handle > TSeqIds
void x_SetObject(TObject &obj)
virtual void x_DSDetachContents(CDataSource &ds)
void x_DSMapObject(CConstRef< TObject > obj, CDataSource &ds)
virtual void x_DSAttachContents(CDataSource &ds)
CRef< CBioseq_Base_Info > m_Contents
void x_DetachContents(void)
void x_UpdateAnnotIndexContents(CTSE_Info &tse)
const TSet & GetSet(void) const
void x_DSUnmapObject(CConstRef< TObject > obj, CDataSource &ds)
const CSeq_entry_Info & GetXrefTSE() const
CConstRef< TObject > GetCompleteSeq_entry(void) const
namespace ncbi::objects::
Base class for all serializable objects.
ETopLevelObjectType
Type of top level object added to scope.
@ fNeedUpdate_children_bioseq
@ fNeedUpdate_children_core
@ fNeedUpdate_children_seq_data
void x_TSEAttach(CTSE_Info &tse)
bool x_DirtyAnnotIndex(void) const
vector< TChunkId > TChunkIds
TBioseq_sets m_Bioseq_sets
TBlobVersion GetBlobVersion(void) const
void UpdateAnnotIndex(void) const
TNamedAnnotObjs m_NamedAnnotObjs
CRef< CSeq_annot_SNP_Info > x_GetSNP_Info(const CConstRef< CSeq_annot > &annot)
void x_MapChunkByFeatType(CSeqFeatData::ESubtype subtype, TChunkId chunk_id)
void SetTopLevelObject(ETopLevelObjectType type, CSerialObject *ptr)
CRef< CTSE_Split_Info > m_Split
void x_MapFeatByLocus(const string &locus, bool tag, CAnnotObject_Info &info)
CAtomicCounter_WithAutoInit m_LockCounter
virtual void x_ResetDirtyAnnotIndexNoParent(void)
CSeq_id_Handle m_RequestedId
bool HasNamedAnnot(const string &name) const
CConstRef< CSeq_entry > GetTSECore(void) const
CConstRef< CBioseq_Info > FindBioseq(const CSeq_id_Handle &id) const
virtual void x_SetDirtyAnnotIndexNoParent(void)
SFeatIdIndex::TIndexInt & x_GetFeatIdIndexInt(CSeqFeatData::ESubtype type)
CDataSource & GetDataSource(void) const
void x_MapFeatById(TFeatIdInt id, CAnnotObject_Info &info, EFeatIdType type)
const TAnnotObjs * x_GetAnnotObjs(const CAnnotName &name) const
TBioseqs m_Removed_Bioseqs
bool IsTopLevelSeq_submit() const
void x_LoadChunk(TChunkId chunk_id) const
void x_DSUnmapObject(CConstRef< TObject > obj, CDataSource &ds)
CConstRef< CMasterSeqSegments > GetMasterSeqSegments(void) const
TBlobVersion m_BlobVersion
void x_UnmapSNP_Table(const CAnnotName &name, const CSeq_id_Handle &key, const CSeq_annot_SNP_Info &snp_info)
bool HasUnnamedAnnot(void) const
void AddUsedMemory(size_t size)
CConstRef< CBioseq_Info > FindMatchingBioseq(const CSeq_id_Handle &id) const
void SetTopLevelObjectType(ETopLevelObjectType type)
TAnnotObjects x_GetFeaturesById(CSeqFeatData::E_Choice type, TFeatIdInt id, EFeatIdType id_type, const CSeq_annot_Info *src_annot=0) const
vector< CAnnotObject_Info * > TAnnotObjects
CRef< CSerialObject > m_TopLevelObjectPtr
SSeqMatch_TSE GetSeqMatch(const CSeq_id_Handle &id) const
void x_RemoveAnnotObjs(const CAnnotName &name)
CSeq_id_Handle ContainsMatchingBioseq(const CSeq_id_Handle &id) const
void x_LoadDelayedMainChunk(void) const
void UpdateFeatIdIndex(CSeqFeatData::E_Choice type, EFeatIdType id_type) const
bool x_HasFeaturesWithId(CSeqFeatData::ESubtype subtype) const
CSubmit_block & SetTopLevelSubmit_block() const
void x_DSMapObject(CConstRef< TObject > obj, CDataSource &ds)
void x_UnmapFeatByLocus(const string &locus, bool tag, CAnnotObject_Info &info)
virtual void GetAnnotIds(TSeqIds &ids) const
unique_ptr< SBaseTSE > m_BaseTSE
CSeq_submit & x_GetTopLevelSeq_submit() const
void SetName(const CAnnotName &name)
virtual string GetDescription(void) const
void x_MapChunkByFeatId(TFeatIdInt id, CSeqFeatData::ESubtype subtype, TChunkId chunk_id, EFeatIdType type)
void x_GetRecords(const CSeq_id_Handle &id, bool bioseq) const
CBioseq_Handle::TBioseqStateFlags TBlobState
CRef< CBioseqUpdater > m_BioseqUpdater
void SetUsedMemory(size_t size)
void x_UnmapFeatById(TFeatIdInt id, CAnnotObject_Info &info, EFeatIdType type)
CRef< CTSE_SetObjectInfo > m_SetObjectInfo
void x_UpdateAnnotIndexContents(CTSE_Info &tse)
CBioseq_set_Info & x_GetBioseq_set(int id)
const TBlobId & GetBlobId(void) const
bool m_MasterSeqSegmentsLoaded
CBioObjectId x_RegisterBioObject(CTSE_Info_Object &info)
ETopLevelObjectType m_TopLevelObjectType
void x_UnmapAnnotObjects(const SAnnotObjectsIndex &infos)
TSeq_feat_Lock x_FindSeq_feat(const CSeq_id_Handle &loc_id, TSeqPos loc_pos, const CSeq_feat &feat) const
friend class CTSE_Split_Info
void SetBioseqUpdater(CRef< CBioseqUpdater > updater)
virtual void GetBioseqsIds(TSeqIds &ids) const
void x_DoUpdate(TNeedUpdateFlags flags)
void x_AddAllFeaturesById(TAnnotObjects &objects, TFeatIdInt id, EFeatIdType id_type, const CSeq_annot_Info *src_annot=0) const
bool ContainsBioseq(const CSeq_id_Handle &id) const
TAnnotLock & GetAnnotLock(void) const
void x_DSDetachContents(CDataSource &ds)
bool x_HasIdObjects(const CSeq_id_Handle &id) const
void x_IndexSeqTSE(const CSeq_id_Handle &id)
SFeatIdIndex::TIndexStr & x_GetFeatIdIndexStr(CSeqFeatData::ESubtype type)
const CSerialObject * GetTopLevelObjectPtr() const
void x_UnindexSeqTSE(const CSeq_id_Handle &id)
atomic< ELoadState > m_LoadState
bool HasDataSource(void) const
TBioseq_sets m_Removed_Bioseq_sets
CBioObjectId x_IndexBioseq(CBioseq_Info *)
ETopLevelObjectType GetTopLevelObjectType() const
const SIdAnnotObjs * x_GetIdObjects(const TAnnotObjs &objs, const CSeq_id_Handle &idh) const
TFeatIdIndex m_FeatIdIndex
int m_InternalBioObjNumber
vector< CSeq_id_Handle > TSeqIds
const CAnnotName & GetName(void) const
void x_DSAttachContents(CDataSource &ds)
TIdAnnotInfoMap m_IdAnnotInfoMap
const TAnnotObjs * x_GetUnnamedAnnotObjs(void) const
void x_ResetBioseqId(const CSeq_id_Handle &id, CBioseq_Info *info)
const SIdAnnotObjs * x_GetUnnamedIdObjects(const CSeq_id_Handle &id) const
CFastMutex m_BioseqsMutex
void x_SetBioseq_setId(int key, CBioseq_set_Info *info)
CRef< IEditSaver > m_EditSaver
CConstRef< CSeq_entry > GetCompleteTSE(void) const
void x_AddFeaturesById(TAnnotObjects &objects, const SFeatIdIndex &index, TFeatIdInt id, EFeatIdType id_type, const CSeq_annot_Info *src_annot=0) const
CDataSource * m_DataSource
bool HasAnnot(const CAnnotName &name) const
bool x_MapSNP_Table(const CAnnotName &name, const CSeq_id_Handle &key, const CSeq_annot_SNP_Info &snp_info)
void x_UnregisterBioObject(CTSE_Info_Object &info)
CTSE_Split_Info & GetSplitInfo(void)
const CSubmit_block & GetTopLevelSubmit_block() const
pair< string, bool > TLocusKey
void x_SetBioseqIds(CBioseq_Info *info)
TAnnotIdsFlags m_AnnotIdsFlags
bool x_NeedsDelayedMainChunk(void) const
pair< TSeq_annot_Lock, int > TSeq_feat_Lock
const CTSE_Info & GetTSE_Info(void) const
void x_UnindexAnnotTSE(const CAnnotName &name, const CSeq_id_Handle &id)
CConstRef< CMasterSeqSegments > m_MasterSeqSegments
pair< SIdAnnotObjs *, bool > x_SetIdObjects(TAnnotObjs &objs, const CAnnotName &name, const CSeq_id_Handle &id)
void x_LoadChunks(const TChunkIds &chunk_ids) const
void x_ResetBioseq_setId(int key, CBioseq_set_Info *info)
bool x_IndexAnnotTSE(const CAnnotName &name, const CSeq_id_Handle &id)
CBioseq_Info & x_GetBioseq(const CSeq_id_Handle &id)
void SetSeq_entry(CSeq_entry &entry, CTSE_SetObjectInfo *set_info=0)
bool HasSplitInfo(void) const
void x_MapAnnotObject(TRangeMap &rangeMap, const SAnnotObject_Key &key, const SAnnotObject_Index &index)
CTSE_Info & Assign(const CTSE_Lock &tse)
CConstRef< CBioseq_Info > GetSegSetMaster(void) const
TAnnotObjects x_GetFeaturesByLocus(const string &locus, bool tag, const CSeq_annot_Info *src_annot=0) const
bool x_UnmapAnnotObject(TRangeMap &rangeMap, const CAnnotObject_Info &info, const SAnnotObject_Key &key)
CBioObjectId x_IndexBioseq_set(CBioseq_set_Info *)
void SetBlobVersion(TBlobVersion version)
const CSeq_submit & GetTopLevelSeq_submit() const
TAnnotObjs & x_SetAnnotObjs(const CAnnotName &name)
CTSE_Info_Object * x_FindBioObject(const CBioObjectId &uniq_id) const
map< CSeq_id_Handle, SIdAnnotObjs > TAnnotObjs
void x_SetBioseqId(const CSeq_id_Handle &id, CBioseq_Info *info)
~CTSE_SetObjectInfo(void)
TSeq_annot_InfoMap m_Seq_annot_InfoMap
void x_LoadChunks(const TChunkIds &chunk_ids) const
void x_TSEAttach(CTSE_Info &tse_info, CRef< ITSE_Assigner > &assigner)
bool ContainsBioseq(const CSeq_id_Handle &id) const
void x_DSDetach(CDataSource &ds)
void x_TSEDetach(CTSE_Info &tse_info)
void x_LoadDelayedMainChunk(void) const
void GetBioseqsIds(TSeqIds &ids) const
void x_UpdateAnnotIndex(void)
void x_LoadChunk(TChunkId chunk_id) const
void x_UpdateFeatIdIndex(CSeqFeatData::E_Choice type, EFeatIdType id_type)
void x_DSAttach(CDataSource &ds)
void x_GetRecords(const CSeq_id_Handle &id, bool bioseq) const
CRef< ITSE_Assigner > GetAssigner(const CTSE_Info &tse)
bool x_NeedsDelayedMainChunk(void) const
container_type::const_iterator const_iterator
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)
container_type::value_type value_type
const_iterator find(const key_type &key) const
container_type::const_iterator const_iterator
const_iterator find(const key_type &key) const
const_iterator lower_bound(const key_type &key) const
const_iterator end() const
iterator insert(const value_type &val)
container_type::iterator iterator
container_type::value_type value_type
iterator_bool insert(const value_type &val)
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.
TValue Get(void) const THROWS_NONE
Get atomic counter value.
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
#define NCBI_THROW_FMT(exception_class, err_code, message)
The same as NCBI_THROW but with message processed as output to ostream.
void Reset(void)
Reset the handle (remove seq-id reference)
const CSeq_id & GetId(const CSeq_loc &loc, CScope *scope)
If all CSeq_ids embedded in CSeq_loc refer to the same CBioseq, returns the first CSeq_id found,...
string ToString(void) const
virtual TEditSaver GetEditSaver() const
TObjectType * GetNCPointerOrNull(void) const THROWS_NONE
Get pointer value.
CConstRef< C > ConstRef(const C *object)
Template function for conversion of const object pointer to CConstRef.
void Reset(void)
Reset reference object.
TObjectType * GetPointerOrNull(void) THROWS_NONE
Get pointer value.
TObjectType & GetNCObject(void) const
Get object.
TParent::value_type value_type
iterator insert(const value_type &value)
const_iterator begin(void) const
void erase(iterator iter)
const_iterator find(const key_type &key) const
#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.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static void PtrToString(string &out_str, const void *ptr)
Convert pointer to string.
const TData & GetData(void) const
Get the Data member data.
@ e_not_set
No variant selected.
@ eClass_segset
segmented sequence + parts
@ e_not_set
No variant selected.
void SetSub(TSub &value)
Assign a value to Sub data member.
E_Choice Which(void) const
Which variant is currently selected.
const TData & GetData(void) const
Get the Data member data.
void SetData(TData &value)
Assign a value to Data data member.
const TSub & GetSub(void) const
Get the Sub member data.
Definition of all error codes used in objmgr libraries (xobjmgr.lib, xobjutil.lib and others).
range(_Ty, _Ty) -> range< _Ty >
constexpr auto sort(_Init &&init)
const string version
version string
double value_type
The numeric datatype used by the parser.
const struct ncbi::grid::netcache::search::fields::SIZE size
const struct ncbi::grid::netcache::search::fields::KEY key
const GenericPointer< typename T::ValueType > T2 value
AutoPtr< TIndexInt > m_IndexInt
AutoPtr< TIndexStr > m_IndexStr
CAnnotObject_Info * m_AnnotObject_Info
bool IsIndexed(void) const
TObjectInfos & GetInfos(void)
const SAnnotObject_Key & GetKey(size_t i) const
const CAnnotName & GetName(void) const
deque< CAnnotObject_Info > TObjectInfos
const TRangeMap & x_GetRangeMap(size_t index) const
vector< TRangeMap * > TAnnotSet
bool x_RangeMapIsEmpty(size_t index) const
CRangeMultimap< SAnnotObject_Index, TSeqPos > TRangeMap
size_t x_GetRangeMapCount(void) const
bool x_CleanRangeMaps(void)
CConstRef< CBioseq_Info > m_Bioseq
NCBI_DEFINE_ERR_SUBCODE_X(3)