Update mussa to build on ubuntu 10.04 with qt 4.6.2 +boost 1.40.0.1
[mussa.git] / alg / sequence_location.cpp
1 #include "alg/sequence_location.hpp"
2
3 #include <cstdlib>
4     
5 SequenceLocation::SequenceLocation(
6     const boost::shared_ptr<Sequence> s, 
7     int l, 
8     int r
9 ) : sequence(s), 
10     left(l), 
11     right(r)
12 {
13 }
14
15 SequenceLocation::SequenceLocation(
16     const Sequence& s, 
17     int l, 
18     int r
19 ) : left(l), 
20     right(r)
21 {
22   boost::shared_ptr<Sequence> copy(new Sequence(s));
23   sequence = copy;
24 }
25
26
27 SequenceLocation::SequenceLocation(const SequenceLocation& o) 
28   : sequence(o.sequence),
29     left(o.left),
30     right(o.right)
31 {
32 }
33
34 SequenceLocation& SequenceLocation::operator=(const SequenceLocation& o)
35 {
36   if (this != &o) {
37     sequence = o.sequence;
38     left = o.getLeft();
39     right = o.getRight();
40   }
41   return *this;
42 }
43
44
45 const Sequence& SequenceLocation::getSequence() const
46 {
47   return *sequence;
48 }
49
50 Sequence SequenceLocation::getSelectedSequence() const
51 {
52   return sequence->subseq(getLeft(), getCount());
53 }
54
55 void SequenceLocation::setLeft(int l)
56 {
57   left = l;
58 }
59
60 int SequenceLocation::getLeft() const
61 {
62   return left;
63 }
64
65 void SequenceLocation::setCount(SequenceLocation::size_type c)
66 {
67   right = left + c;
68 }
69
70 SequenceLocation::size_type SequenceLocation::getCount() const
71 {
72   return std::max(right - left, 0);
73 }
74
75 void SequenceLocation::setRight(int r)
76 {
77   right = r;
78 }
79
80 int SequenceLocation::getRight() const
81 {
82   return right;
83 }
84
85 SequenceLocation::size_type SequenceLocation::size() const
86 {
87   return getCount();
88 }