static void UnpackSeqEntry(CSeq_entry& seqEntry, SequenceSet *parent, SequenceSet::SequenceList& seqlist) { if (seqEntry.IsSeq()) { const Sequence *sequence = new Sequence(parent, seqEntry.SetSeq()); if (!sequence || !sequence->identifier) FATALMSG("Can't create Sequence object, aborting..."); seqlist.push_back(sequence); } else { // Bioseq-set UnpackSeqSet(seqEntry.SetSet(), parent, seqlist); } }
void SequenceTable::addSequences(CSeq_entry& seqEntry) { if (seqEntry.IsSet()) { list< CRef< CSeq_entry > >& seqSet = seqEntry.SetSet().SetSeq_set(); list< CRef< CSeq_entry > >::iterator it = seqSet.begin(); for (; it != seqSet.end(); it++) addSequences(*(*it)); } else { CRef< CBioseq > bioseq(&(seqEntry.SetSeq())); addSequence(bioseq); } }