fix uninitialized pointer
[mussa.git] / alg / sequence.cpp
index 608ddd3b2059ba808c283e7726b181bfb27e0ce2..6cb4e2cf001b443be1bb5f10d0ceda96be9eb7aa 100644 (file)
@@ -80,7 +80,8 @@ motif::~motif()
 
 
 Sequence::Sequence(AlphabetRef alphabet)
-  : seq(new SeqSpan("", alphabet, SeqSpan::PlusStrand))
+  : seq(new SeqSpan("", alphabet, SeqSpan::PlusStrand)),    
+    motif_list(new MotifList)
 {
 }
 
@@ -90,7 +91,8 @@ Sequence::~Sequence()
 
 Sequence::Sequence(const char *seq, AlphabetRef alphabet_, SeqSpan::strand_type strand_)
   : header(""),
-    species("")
+    species(""),
+    motif_list(new MotifList)
 {
   set_filtered_sequence(seq, alphabet_, 0, npos, strand_);
 }
@@ -99,7 +101,8 @@ Sequence::Sequence(const std::string& seq,
                    AlphabetRef alphabet_,
                    SeqSpan::strand_type strand_) 
   : header(""),
-    species("")
+    species(""),
+    motif_list(new MotifList)
 {
   set_filtered_sequence(seq, alphabet_, 0, seq.size(), strand_);
 }
@@ -134,7 +137,8 @@ Sequence::Sequence(const SequenceRef o)
 Sequence::Sequence(const SeqSpanRef& seq_ref)
   : seq(seq_ref),
     header(""),
-    species("")
+    species(""),
+    motif_list(new MotifList)
 {
 }
 
@@ -637,7 +641,7 @@ Sequence::clear()
   header.clear();
   species.clear();
   annots.clear();
-  motif_list.clear();
+  motif_list.reset(new MotifList);
 }
 
 void
@@ -755,18 +759,21 @@ void Sequence::add_motif(const Sequence& a_motif)
       motif_start_i != motif_starts.end();
       ++motif_start_i)
   {
-    motif_list.push_back(motif(*motif_start_i, a_motif.get_sequence()));
+    motif_list->push_back(motif(*motif_start_i, a_motif.get_sequence()));
   }
 }
 
 void Sequence::clear_motifs()
 {
-  motif_list.clear();
+  if (motif_list) 
+    motif_list->clear();
+  else 
+    motif_list.reset(new MotifList);
 }
 
-const std::list<motif>& Sequence::motifs() const
+const Sequence::MotifList& Sequence::motifs() const
 {
-  return motif_list;
+  return *motif_list;
 }
 
 std::vector<int>