50 bool modified =
false;
56 vector<CSeqdesc_CI> descs;
57 vector<const CBioSource*> biosources;
58 vector<CSeq_feat_Handle> feats;
61 const CBioSource* biosource = &source_ci->GetSource();
62 biosources.push_back(biosource);
63 descs.push_back(source_ci);
69 const CBioSource* biosource = &feat_ci->GetData().GetBiosrc();
70 biosources.push_back(biosource);
72 feats.push_back(feat_ci->GetSeq_feat_Handle());
75 for (
size_t i = 0;
i < biosources.size();
i++)
76 if (biosources[
i] !=
NULL)
78 for (
size_t j =
i + 1; j < biosources.size(); j++)
79 if (biosources[j] !=
NULL)
84 if (new_biosources[
i])
85 new_biosource->
Assign(*new_biosources[
i]);
87 new_biosource->
Assign(*biosources[
i]);
90 new_feat->
SetData().SetBiosrc(*new_biosource);
104 biosources[j] =
NULL;
110 for (
size_t i = 0;
i < new_biosources.size();
i++)
111 if (new_biosources[
i])
124 new_feat->
Assign(*feats[
i].GetOriginalSeq_feat());
125 new_feat->
SetData().SetBiosrc(*new_biosources[
i]);
static CSeq_entry_Handle GetSeq_entry_Handle(TTypeInfo type, TConstObjectPtr ptr, CScope &scope)
static CRef< CBioSource > BioSrcFromFeat(const CSeq_feat &f)
Get BioSource from feature to use for source descriptor.
static bool MergeDupBioSources(CSeq_descr &descr)
static bool AreBioSourcesMergeable(const CBioSource &src1, const CBioSource &src2)
void AddCommand(IEditCommand &command)
static CRef< CCmdComposite > apply(objects::CSeq_entry_Handle tse)
namespace ncbi::objects::
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
void Reset(void)
Reset reference object.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
void SetData(TData &value)
Assign a value to Data data member.
TSource & SetSource(void)
Select the variant.
@ e_Source
source of materials, includes Org-ref
USING_SCOPE(ncbi::objects)