83 oi = nodes.front().field;
125 NCBI_USER_THROW(
"IMacroBioDataIter::TopLevelObject(): context is not set");
132 NCBI_USER_THROW(
"IMacroBioDataIter::MaxFeatureId(): context is not set");
136 bool merge_del,
bool split_firstcol,
bool convert_multi,
bool merge_firstcols,
bool multiple_sp_only)
139 LOG_POST(
Error <<
"Applying table macro has empty table name");
184 while (!line_reader->
AtEOF()) {
196 for (
auto& it : cols) {
200 auto token_it = find_if(cols.begin(), cols.end(), [](
const string& elem) { return !elem.empty(); });
201 if (token_it == cols.end()) {
205 string value = cols[match_col];
207 value = cols[0] +
"/" + cols[1];
208 cols.erase(cols.begin() + 1);
213 string first, second;
215 if (match_col == 0) {
218 else if (match_col == 1) {
223 value = cols[match_col - 1];
246 string msg =
"Table contains entries that appear multiple times:\n";
259 m_IdenticalItems.clear();
262 if (line_reader.
Empty()) {
264 "Could not open table file: '" + m_Name,
nullptr);
268 if (!line_reader->
AtEOF()) {
271 if (m_ConvertMulti) {
275 if (m_MultipleSpaceOnly && m_Delimiter ==
" ") {
281 for (
auto& it : cols) {
286 m_NrCols = cols.size();
287 if (m_MergeFirstCols)
290 if (m_SplitFirstCol) {
291 string first, second;
293 if (!
first.empty() && !second.empty())
298 if (col >= m_NrCols) {
305 size_t pos = m_CurrentPos->second;
308 auto col_it = find_if(m_TableValues.begin(), m_TableValues.end(),
309 [&col](
const pair<size_t, TTableValues>& elem) { return elem.first == col; });
311 if (col_it == m_TableValues.end()) {
312 x_CacheColFromTable(col);
315 auto it = m_TableValues.begin();
317 for (; !found && it != m_TableValues.end(); ++it) {
318 if (col == it->first) {
319 auto& values = it->second;
330 if (col >= m_NrCols) {
339 while (!line_reader->
AtEOF()) {
345 if (m_ConvertMulti) {
351 for (
auto& it : cols) {
355 if (m_MergeFirstCols) {
356 cols[0] = cols[0] +
"/" + cols[1];
357 cols.erase(cols.begin() + 1);
360 if (m_SplitFirstCol) {
362 string first, second;
365 values.push_back(
first);
368 values.push_back(second);
372 values.push_back(cols[col - 1]);
376 values.push_back(cols[col]);
380 m_TableValues.push_back(make_pair(col, values));
387 vector<string> values_from_data;
388 for (
auto it = objs.begin(); it != objs.end() && !found; ++it) {
392 for (
auto iter =
objects.begin(); iter !=
objects.end() && !found; ++iter) {
411 if (case_sensitive) {
416 [&
value](
const pair<string, unsigned int>& elem)
417 { return NStr::EqualNocase(elem.first, value); });
426 values_from_data.push_back(
value);
447 for (
auto&& it : strs) {
449 if (case_sensitive) {
454 [&it](
const pair<string, unsigned int>& elem)
455 { return NStr::EqualNocase(elem.first, it); });
473 report =
"No matches were found for values present in the table:";
476 report +=
"\n" + it.first;
548 sobject.
scope = pscope;
565 subtype.append(
" " +
label);
602 bool remove_proteins(
true);
618 "The feature iterator failed to obtain a bioseq handle.",
636 if (!vec_tse.empty()) {
647 NCBI_USER_THROW(
"CMacroBioData_FeatIterBase::GetTaxnames(): context is not set");
659 "The feature iterator failed to obtain TSE handle",
730 auto good_feat = [&
range, left_closed, right_closed](
const CSeq_loc& feat_loc)
736 if (left_closed ==
false) {
737 if (feat_start <=
range.GetFrom()) {
741 if (right_closed ==
false) {
742 if (feat_stop >=
range.GetTo()) {
763 sobject.
scope = pscope;
779 subtype.append(
" " +
label);
801 "The feature iterator failed to obtain a bioseq handle.",
908 sobject.
scope = pscope;
918 m_Seh.GetScope(), seq_id);
920 return string(
"Biosource ").append(seq_id);
957 bool remove_proteins(
false);
1077 sobject.
scope = pscope;
1264 sobject.
scope = pscope;
1278 return "Submitter block: ";
1285 description =
"Publication " + seq_id;
1288 description =
"Publication at set level";
1348 bool remove_proteins(
false);
1408 m_EditedSubmitBlock->Assign(*m_OrigSubmitBlock);
1409 return m_EditedSubmitBlock;
1427 m_OrigUserObj =
ConstRef(&m_DescIter->GetUser());
1430 while (m_OrigUserObj.IsNull() &&
m_SeqIter) {
1434 m_OrigUserObj =
ConstRef(&m_DescIter->GetUser());
1444 m_OrigUserObj =
ConstRef(&m_DescIter->GetUser());
1449 m_FirstUserObj = m_OrigUserObj;
1457 m_OrigUserObj.Reset();
1458 while (m_OrigUserObj.IsNull() &&
m_SeqIter) {
1459 if (m_DescIter && ++m_DescIter) {
1460 m_OrigUserObj =
ConstRef(&m_DescIter->GetUser());
1463 if (m_OrigUserObj.IsNull()) {
1467 m_OrigUserObj =
ConstRef(&m_DescIter->GetUser());
1474 if (m_DescIter && ++m_DescIter) {
1475 m_OrigUserObj =
ConstRef(&m_DescIter->GetUser());
1485 return m_OrigUserObj.IsNull();
1490 return (m_FirstUserObj == m_OrigUserObj);
1499 sobject.
scope = pscope;
1506 return x_GetDescription(
"User object");
1512 m_EditedUserObj->Assign(*m_OrigUserObj);
1514 CObjectInfo oi(m_EditedUserObj, m_EditedUserObj->GetThisTypeInfo());
1521 new_desc->
SetUser(m_EditedUserObj.GetNCObject());
1682 if (desc_it->GetUser().GetType().IsStr()
1683 && desc_it->GetUser().GetType().GetStr() ==
"DBLink") {
1685 return &desc_it->GetUser();
1691 if (desc_it->GetUser().GetType().IsStr()
1692 && desc_it->GetUser().GetType().GetStr() ==
"DBLink") {
1694 return &desc_it->GetUser();
1747 if (desc_it->GetUser().GetType().IsStr()
1748 && desc_it->GetUser().GetType().GetStr() ==
"AutodefOptions") {
1750 return &desc_it->GetUser();
1841 sobject.
scope = pscope;
1851 m_Seh.GetScope(), seq_id);
1865 description = descr_name +
" " + seq_id;
1868 description = descr_name +
" at set level";
1961 sobject.
scope = pscope;
1984 chgAlign->Execute();
2000 const CSeq_align* const_seqalign = &(*m_AlignIter);
2061 sobject.
scope = pscope;
2120 const CBioseq* const_bseq =
m_SeqIter->GetCompleteBioseq().GetPointerOrNull();
2212 sobject.
scope = pscope;
2303 if (
m_EntryIter->GetCompleteSeq_entry().GetPointerOrNull() ==
2318 sobject.
scope = pscope;
@ eExtreme_Positional
numerical value
static CSeq_entry_Handle GetSeq_entry_Handle(TTypeInfo type, TConstObjectPtr ptr, CScope &scope)
bool IsGeneralIdProtPresent(objects::CSeq_entry_Handle tse)
void AddCommand(IEditCommand &command)
virtual void Execute()
Do the editing action.
CMacroBioData_SeqIter- iterates over sequences (na and aa)
CMacroBioData_SeqdescIter- iterates over all types of sequence descriptors.
CMacroBioData_UserObjectIter - iterates over all user objects in the seq-entry.
implements special composite command, which does not call to its internal commands when run the very ...
class CMacroExecException
@Pubdesc.hpp User-defined methods of the data storage class.
static CTempString SubtypeValueToName(ESubtype eSubtype)
Turns a ESubtype into its string value which is NOT necessarily related to the identifier of the enum...
namespace ncbi::objects::
CSeq_entry_Handle GetTopLevelEntry(void) const
Get top level Seq-entry handle.
static bool GetBestId(CSeq_id_Handle, CScope &, string &)
IMacroBioDataIter - common interface of all iterators used in the editing macros The type of the iter...
CChangeUnindexedObjectCommand< objects::CSubmit_block > CChangeSubmitBlockCommand
static DLIST_TYPE *DLIST_NAME() first(DLIST_LIST_TYPE *list)
static auto & FindOrgNames
#define DIAG_COMPILE_INFO
Make compile time diagnostic information object to use in CNcbiDiag and CException.
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
#define NCBI_USER_THROW(message)
Throw a quick-and-dirty runtime exception of type 'CException' with the given error message and error...
void Error(CExceptionArgs_Base &args)
#define NCBI_RETHROW2(prev_exception, exception_class, err_code, message, extra)
Re-throw exception with extra parameter.
@ eUnknown
Unknown exception.
const objects::CUser_object * x_GetAutodefOptions()
void SetCreateGeneralIdFlag()
virtual string GetBestDescr() const
Used for logging.
CMacroBioData_SeqSetIter(const objects::CSeq_entry_Handle &entry)
CMacroBioData_TSEntryIter(const objects::CSeq_entry_Handle &entry)
bool m_Completed
flag to be used by actions that need to be completed only once
virtual void x_SetDefaultObjectInfo()
Initializes member variable m_CurIterOI.
CConstRef< objects::CBioseq_set > m_OrigSeqSet
CConstRef< objects::CSeqdesc > m_FirstSeqdesc
virtual bool IsEnd(void) const =0
CConstRef< objects::CSeq_align > m_OrigSeqalign
virtual IMacroBioDataIter & Begin(void)
virtual string GetBestDescr() const
Used for logging.
objects::CBioseq_CI m_SeqIter
virtual bool IsEnd(void) const
bool SetTableToApply(const string &file_name, size_t match_col)
virtual void SetToDelete(bool intent)
virtual SConstScopedObject GetScopedObject() const
Dereferences the underlying iterator.
virtual void x_SetDefaultObjectInfo()
Initializes member variable m_CurIterOI.
virtual string GetBestDescr() const
Used for logging.
CMacroBioData_SeqNAIter(const objects::CSeq_entry_Handle &entry)
virtual size_t GetCount() const
bool m_MultipleSpaceOnly
when true, single space character are not considered delimiters
CRef< objects::CPubdesc > m_EditedPubdesc
void ConvertMultiSpaces(string &line, const string &delimiter)
replace any instance of 2 or more spaces with a single instance of 'delimiter'
virtual IMacroBioDataIter & Next(void)
virtual SConstScopedObject GetScopedObject() const
Dereferences the underlying iterator.
virtual void x_SetDefaultObjectInfo()
Initializes member variable m_CurIterOI.
virtual void BuildEditedObject()
Creates a copy of the object that will be edited.
const objects::CMolInfo * x_GetMolInfo()
void ThrowCMacroExecException(const CDiagCompileInfo &info, CMacroExecException::EErrCode code, const string &message, const CQueryParseTree::TNode *treeNode, const CException *previous=nullptr)
Throws CMacroExecException with the specified message and error location from the TNode.
virtual const vector< string > & GetTaxnames() const
virtual IMacroBioDataIter & Begin(void)
virtual string GetBestDescr() const
Used for logging.
virtual SConstScopedObject GetScopedObject() const
Dereferences the underlying iterator.
virtual bool IsEnd(void) const
virtual void BuildEditedObject()
Creates a copy of the object that will be edited.
virtual IMacroBioDataIter & Next(void)
virtual void RunDeleteCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the delete command.
objects::CSeq_entry_CI m_SeqSetIter
bool FindInTable(const CMQueryNodeValue::TObs &objs, bool case_sensitive=true)
virtual IMacroBioDataIter & Begin(void)
void x_StepToNextStructComment()
virtual void RunEditCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the editing command.
objects::CAlign_CI m_AlignIter
virtual void RunDeleteCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the delete command.
objects::CSeqdesc_CI m_DescIter
objects::CBioseq_CI m_SeqIter
virtual bool IsBegin(void)
bool m_MergeFirstCols
when true, merges first two columns to form the seq-id match field
virtual string GetBestDescr() const
Used for logging.
bool GetValueFromTable(size_t col, string &value)
CRef< objects::CSeq_feat > m_EditedFeat
virtual void RunDeleteCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the delete command.
virtual void x_SetDefaultObjectInfo()
Initializes member variable m_CurIterOI.
virtual bool IsBegin(void)
virtual void x_SetDefaultObjectInfo()
Initializes member variable m_CurIterOI.
virtual bool IsEnd(void) const
virtual void BuildEditedObject()
Creates a copy of the object that will be edited.
CConstRef< objects::CSeq_entry > m_OrigTSE
objects::CSeq_entry_CI m_SeqSetIter
> provides context information
virtual void BuildEditedObject()
Creates a copy of the object that will be edited.
list< SResolvedField > TObs
virtual IMacroBioDataIter & Next(void)
const objects::CBioSource * x_GetBioSource()
CConstRef< objects::CSubmit_block > m_OrigSubmitBlock
CMacroBioData_FeatIterBase(const objects::CSeq_entry_Handle &entry, const objects::SAnnotSelector &sel)
CMacroBioData_AutodefOptsIter(const objects::CSeq_entry_Handle &entry)
virtual bool IsDescriptor() const
string GetValueFromTable(size_t col)
vector< string > TTableValues
void SetTableToApply(const string &file_name, size_t match_col, const string &delimiter, bool merge_de, bool split_firstcol, bool convert_multi, bool merge_firstcols, bool multiple_sp_only)
static CMacroBioData_SeqIter * s_MakeSeqIterator(const objects::CSeq_entry_Handle &entry, objects::CSeq_inst::EMol mol_type)
virtual SConstScopedObject GetScopedObject() const
Dereferences the underlying iterator.
virtual string GetBestDescr() const
Used for logging.
CConstRef< objects::CSeq_feat > m_FirstFeat
virtual void BuildEditedObject()
Creates a copy of the object that will be edited.
virtual void RunEditCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the editing command.
virtual string GetBestDescr() const
Used for logging.
virtual string GetBestDescr() const
Used for logging.
virtual void RunDeleteCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the delete command.
virtual SConstScopedObject GetScopedObject() const
Dereferences the underlying iterator.
virtual IMacroBioDataIter & Next(void)
SFeatInterval m_FeatInterval
virtual void RunEditCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the editing command.
virtual void x_SetDefaultObjectInfo()
Initializes member variable m_CurIterOI.
virtual objects::CBioseq_Handle GetBioseqHandle(void) const
CSubmitblockIter(CConstRef< objects::CSeq_submit > seqsubmit)
virtual void x_SetDefaultObjectInfo()
Initializes member variable m_CurIterOI.
virtual IMacroBioDataIter & Begin(void)
CConstRef< objects::CSeq_feat > m_FirstFeat
virtual void BuildEditedObject()
Creates a copy of the object that will be edited.
virtual IMacroBioDataIter & Begin(void)
CRef< objects::CSeq_entry > m_EditedTSE
virtual string GetBestDescr() const
Used for logging.
virtual bool IsBegin(void)
virtual IMacroBioDataIter & Next(void)
objects::CFeat_CI m_FeatIter
virtual IMacroBioDataIter & Begin(void)
virtual bool IsBegin(void)
virtual IMacroBioDataIter & Begin(void)
CMacroBioData_SeqAlignIter(const objects::CSeq_entry_Handle &entry)
CRef< objects::CBioseq > m_EditedSeq
virtual IMacroBioDataIter & Begin(void)
CRef< objects::CMolInfo > m_EditedMolinfo
virtual IMacroBioDataIter & Begin(void)
virtual string GetBestDescr() const
Used for logging.
bool m_HugeData
indicates that the data is large and some macros should take that into account (for example: taxlooku...
CConstRef< objects::CSeq_feat > m_OrigFeat
void GetPrimitiveObjectInfos(CMQueryNodeValue::TObs &objs, const CMQueryNodeValue::SResolvedField &info)
virtual string GetBestDescr() const
Used for logging.
const string & GetTableName() const
virtual IMacroBioDataIter & Begin(void)
virtual bool IsBegin(void)
objects::CObject_id::TId & MaxFeatureId()
void RunCommand(CRef< CCmdComposite > cmd, CMacroCmdComposite *cmd_composite)
Method for executing a specific command.
CMacroBioData_MolInfoIter(const objects::CSeq_entry_Handle &entry)
CConstRef< objects::CSeqdesc > m_OrigSeqdesc
CMacroBioData_BioSourceIter(const objects::CSeq_entry_Handle &entry)
virtual bool IsBegin(void)
virtual bool IsEnd(void) const
bool GetFieldsByName(CMQueryNodeValue::TObs *results, const CObjectInfo &oi_i, const string &field_name)
Resolve existing dot qualified ASN.1 name (field_name) starting from the object information instance ...
objects::CBioseq_CI m_SeqIter
virtual bool IsBegin(void)
virtual IMacroBioDataIter & Next(void)
CMacroBioData_SeqdescIter(const objects::CSeq_entry_Handle &entry)
CRef< objects::CSeqdesc > m_EditedSeqdesc
CConstRef< objects::CMolInfo > m_OrigMolinfo
virtual void RunEditCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the editing command.
CRef< objects::CSeq_entry > m_EditedEntry
objects::CSeqdesc_CI m_PubDescrIter
CConstRef< objects::CMolInfo > m_FirstMolinfo
CRef< CSubmitblockIter > m_SubmitBlockIter
virtual SConstScopedObject GetScopedObject() const
Dereferences the underlying iterator.
CConstRef< objects::CBioSource > m_OrigSource
> provides context information
virtual void x_SetDefaultObjectInfo()
Initializes member variable m_CurIterOI.
virtual void RunEditCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the editing command.
virtual IMacroBioDataIter & Next(void)
shared_ptr< CHugeMacroContext > m_MacroContext
virtual IMacroBioDataIter & Next(void)
CMacroBioData_DBLinkIter(const objects::CSeq_entry_Handle &entry)
virtual bool IsBegin(void)
bool GetChoiceType(const string &field_name, string &choice_type) const
returns choice type string for a given identifier field_name
virtual bool IsDescriptor() const
virtual bool IsBegin(void)
objects::CSeq_entry_CI m_SeqSetIter
> provides context information
objects::CSeq_entry_CI m_EntryIter
virtual void RunDeleteCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the delete command.
virtual IMacroBioDataIter & Next(void)
map< objects::CBioseq_Handle, set< objects::CSeq_feat_Handle > > m_ProductToCDS
virtual string GetBestDescr() const
Used for logging.
virtual SConstScopedObject GetScopedObject() const
Dereferences the underlying iterator.
virtual void x_SetDefaultObjectInfo()=0
Initializes member variable m_CurIterOI.
virtual bool IsEnd(void) const
CRef< objects::CSubmit_block > BuildEditedObject()
bool m_Modified
indicates whether the edited object has been modified. When it's TRUE, call RunEditCommand()
virtual void BuildEditedObject()
Creates a copy of the object that will be edited.
virtual bool IsBegin(void)
virtual void BuildEditedObject()
Creates a copy of the object that will be edited.
virtual SConstScopedObject GetScopedObject() const
Dereferences the underlying iterator.
virtual bool IsBegin(void)
const objects::CUser_object * x_GetDBLink()
NStr::TSplitFlags m_SplitFlags
virtual IMacroBioDataIter & Begin(void)
virtual bool IsEnd(void) const
TPresent m_State
to report values of the matching field that are present in the table, but not present in the data
CConstRef< objects::CUser_object > m_FirstUserObj
string m_Delimiter
< number of actual columns in the table
virtual bool IsBegin(void)
virtual void x_SetDefaultObjectInfo()
Initializes member variable m_CurIterOI.
virtual void x_SetDefaultObjectInfo()
Initializes member variable m_CurIterOI.
objects::CFeat_CI m_PubFeatIter
virtual objects::CBioseq_Handle GetBioseqHandle(void) const
virtual void BuildEditedObject()
Creates a copy of the object that will be edited.
virtual void BuildEditedObject()
Creates a copy of the object that will be edited.
string x_GetSeqId() const
virtual void RunDeleteCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the delete command.
virtual void RunDeleteCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the delete command.
CRef< objects::CSeq_feat > m_EditedFeat
virtual IMacroBioDataIter & Next(void)
virtual SConstScopedObject GetScopedObject() const
Dereferences the underlying iterator.
virtual objects::CBioseq_Handle GetBioseqHandle(void) const
CMacroBioData_SeqIter(const objects::CSeq_entry_Handle &entry)
virtual void RunEditCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the editing command.
CConstRef< objects::CSeq_submit > m_SeqSubmit
virtual IMacroBioDataIter & Begin(void)
virtual SConstScopedObject GetScopedObject() const
Dereferences the underlying iterator.
objects::CBioseq_CI m_SeqIter
TIndex::const_iterator m_CurrentPos
virtual objects::CBioseq_Handle GetBioseqHandle(void) const
virtual objects::CBioseq_Handle GetBioseqHandle(void) const
virtual bool IsFeature() const
virtual string GetBestDescr() const
Used for logging.
virtual bool IsFeature() const
virtual void RunDeleteCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the delete command.
virtual bool IsEnd(void) const
bool TopLevelObject() const
virtual bool IsEnd(void) const
virtual IMacroBioDataIter & Begin(void)
CConstRef< objects::CPubdesc > m_OrigPubdesc
virtual IMacroBioDataIter & Next(void)
CMacroBioData_SeqAAIter(const objects::CSeq_entry_Handle &entry)
CMacroBioData_PubdescIter(const objects::CSeq_entry_Handle &entry)
void SetHugeContext(const shared_ptr< CHugeMacroContext > &context)
objects::CFeat_CI m_SrcFeatIter
virtual void BuildEditedObject()
Creates a copy of the object that will be edited.
bool x_CacheColFromTable(size_t col)
CConstRef< objects::CBioseq > m_OrigSeq
string GetUnMatchedTableEntries(int &count)
objects::CSeqdesc_CI m_SrcDescrIter
virtual bool IsEnd(void) const
CRef< objects::CBioSource > m_EditedSource
CRef< objects::CSeq_align > m_EditedSeqalign
CConstRef< objects::CBioSource > m_FirstSource
CRef< objects::CBioseq_set > m_EditedSeqSet
virtual void RunEditCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the editing command.
STableToApply m_TableToApply
virtual void RunEditCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the editing command.
virtual IMacroBioDataIter & Begin(void)
virtual IMacroBioDataIter & Next(void)
virtual void RunEditCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the editing command.
CConstRef< objects::CPubdesc > m_FirstPubdesc
virtual IMacroBioDataIter & Begin(void)
virtual void RunDeleteCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the delete command.
virtual void RunDeleteCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the delete command.
objects::CFeat_CI m_FeatIter
CMacroBioData_UserObjectIter(const objects::CSeq_entry_Handle &entry)
CMacroBioData_FeatIntervalIter(const objects::CBioseq_Handle &bsh, const objects::SAnnotSelector &sel, const SFeatInterval &feat_interval)
CConstRef< objects::CSeq_feat > m_OrigFeat
TIndex m_Index
stores the match_field value and the row number where that value appears in the table
virtual string GetBestDescr() const
Used for logging.
virtual bool IsBegin(void)
virtual objects::CBioseq_Handle GetBioseqHandle(void) const
virtual bool IsEnd(void) const
virtual bool IsEnd(void) const
virtual IMacroBioDataIter & Next(void)
virtual SConstScopedObject GetScopedObject() const
Dereferences the underlying iterator.
CConstRef< objects::CUser_object > m_OrigUserObj
virtual void RunEditCommand(CMacroCmdComposite *cmd_composite)
Constructs and executes the editing command.
string x_GetDescription(const string &descr_name) const
void x_InitAndCheck(const string &file_name, size_t col)
bool m_DeleteObject
indicates the intention to delete the underlying object
virtual IMacroBioDataIter & Begin(void)
virtual void x_SetDefaultObjectInfo()
Initializes member variable m_CurIterOI.
virtual IMacroBioDataIter & Next(void)
vector< string > m_Taxnames
CMacroBioData_StructCommentIter(const objects::CSeq_entry_Handle &entry)
objects::CSeq_entry_Handle m_Seh
objects::CBioseq_Handle GetBioseqForSeqFeat(const objects::CSeq_feat &f, objects::CScope &scope)
CRef< objects::CScope > scope
CConstRef< CObject > object
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
virtual const CTypeInfo * GetThisTypeInfo(void) const =0
@ ePrimitiveValueString
string|char*|const char*
@ ePrimitiveValueInteger
(signed|unsigned) (char|short|int|long)
@ ePrimitiveValueEnum
enum
CTempString GetCurrentLine(void) const
static CRef< ILineReader > New(const string &filename)
Return a new ILineReader object corresponding to the given filename, taking "-" (but not "....
virtual Uint8 GetLineNumber(void) const =0
Returns the current line number (counting from 1, not 0).
virtual bool AtEOF(void) const =0
Indicates (negatively) whether there is any more input.
static CSeq_id_Handle GetHandle(const CSeq_id &id)
Normal way of getting a handle, works for any seq-id.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Override Assign() to incorporate cache invalidation.
void GetLabel(string *label) const
Appends a label suitable for display (e.g., error messages) label must point to an existing string ob...
const string & GetAlias(void) const
CObjectInfo GetPointedObject(void) const
Get data and type information of object to which this type refers.
CChoiceVariant GetCurrentChoiceVariant(void) const
Get data and type information of selected choice variant.
ETypeFamily GetTypeFamily(void) const
Get data type family.
void GetPrimitiveValueString(string &value) const
Get string data.
Int4 GetPrimitiveValueInt4(void) const
Get data as Int4.
EPrimitiveValueType GetPrimitiveValueType(void) const
Get type of primitive value.
Int8 GetPrimitiveValueInt8(void) const
Get data as Int8.
void ChangeSeqLocId(CSeq_loc *loc, bool best, CScope *scope)
Change each of the CSeq_ids embedded in a CSeq_loc to the best or worst CSeq_id accoring to the value...
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
CBioseq_set_Handle GetBioseq_setHandle(const CBioseq_set &seqset, EMissing action=eMissing_Default)
vector< CSeq_entry_Handle > TTSE_Handles
const CTSE_Handle & GetTSE_Handle(void) const
Get CTSE_Handle of containing TSE.
CSeq_id_Handle GetAccessSeq_id_Handle(void) const
Get any CSeq_id_Handle handle that can be used to access this bioseq Use GetSeq_id_Handle() if it's n...
CScope & GetScope(void) const
Get scope this handle belongs to.
CSeq_entry_Handle GetSeq_entry_Handle(void) const
Get parent Seq-entry handle.
CConstRef< CSeq_entry > GetCompleteSeq_entry(void) const
Complete and get const reference to the seq-entry.
CScope & GetScope(void) const
Get scope this handle belongs to.
CRef< CSeq_loc > GetRangeSeq_loc(TSeqPos start, TSeqPos stop, ENa_strand strand=eNa_strand_unknown) const
Return CSeq_loc referencing the given range and strand on the bioseq If start == 0,...
void Rewind(void)
Move to the first object in iterated sequence.
@ fIncludeGivenEntry
Include the top (given) entry.
@ fRecursive
Iterate recursively.
TObjectType * GetNCPointerOrNull(void) const THROWS_NONE
Get pointer value.
TObjectType * GetPointer(void) const THROWS_NONE
Get pointer,.
bool IsNull(void) const THROWS_NONE
Check if pointer is null – same effect as Empty().
CConstRef< C > ConstRef(const C *object)
Template function for conversion of const object pointer to CConstRef.
void Reset(void)
Reset reference object.
void Reset(void)
Reset reference object.
TObjectType * GetPointerOrNull(void) const THROWS_NONE
Get pointer value.
TObjectType & GetNCObject(void) const
Get object.
bool Empty(void) const THROWS_NONE
Check if CRef is empty – not pointing to any object, which means having a null value.
int64_t Int8
8-byte (64-bit) signed integer
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define USING_SCOPE(ns)
Use the specified namespace.
#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 list< string > & SplitByPattern(const CTempString str, const CTempString delim, list< string > &arr, TSplitFlags flags=0, vector< SIZE_TYPE > *token_pos=NULL)
Variation of Split() with fSplit_ByPattern flag applied by default.
static string Int8ToString(Int8 value, TNumToStringFlags flags=0, int base=10)
Convert Int8 to string.
static void TruncateSpacesInPlace(string &str, ETrunc where=eTrunc_Both)
Truncate spaces in a string (in-place)
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static bool SplitInTwo(const CTempString str, const CTempString delim, string &str1, string &str2, TSplitFlags flags=0)
Split a string into two pieces using the specified delimiters.
static enable_if< is_arithmetic< TNumeric >::value||is_convertible< TNumeric, Int8 >::value, string >::type NumericToString(TNumeric value, TNumToStringFlags flags=0, int base=10)
Convert numeric value to string.
static string & ReplaceInPlace(string &src, const string &search, const string &replace, SIZE_TYPE start_pos=0, SIZE_TYPE max_replace=0, SIZE_TYPE *num_replace=0)
Replace occurrences of a substring within a string.
@ fSplit_MergeDelimiters
Merge adjacent delimiters.
static const char label[]
const TLocation & GetLocation(void) const
Get the Location member data.
void SetData(TData &value)
Assign a value to Data data member.
const TSet & GetSet(void) const
Get the variant data.
bool IsSet(void) const
Check if variant Set is selected.
TPub & SetPub(void)
Select the variant.
const TPub & GetPub(void) const
Get the variant data.
TSource & SetSource(void)
Select the variant.
TUser & SetUser(void)
Select the variant.
TMolinfo & SetMolinfo(void)
Select the variant.
@ e_User
user defined object
@ e_Pub
a reference to the publication
@ e_Molinfo
info on the molecule and techniques
@ e_Source
source of materials, includes Org-ref
@ eMol_na
just a nucleic acid
const TSub & GetSub(void) const
Get the Sub member data.
bool IsSetCit(void) const
citation for this submission Check if a value has been assigned to Cit data member.
Lightweight interface for getting lines of data with minimal memory copying.
Biodata iterators for macro execution.
Functions that resolve field names described in asn format.
range(_Ty, _Ty) -> range< _Ty >
Miscellaneous common-use basic types and functionality.
static const char delimiter[]
Utility macros and typedefs for exploring NCBI objects from seq.asn.
Utility macros and typedefs for exploring NCBI objects from seqset.asn.
void GetProductToCDSMap(objects::CScope &scope, map< objects::CBioseq_Handle, set< objects::CSeq_feat_Handle > > &product_to_cds)
CRef< CCmdComposite > GetDeleteFeatureCommand(const objects::CSeq_feat_Handle &fh, bool remove_proteins=true)