]> git.donarmstrong.com Git - bamtools.git/blob - src/api/SamSequence.cpp
Brought API up to compliance with recent SAM Format Spec (v1.4-r962)
[bamtools.git] / src / api / SamSequence.cpp
1 // ***************************************************************************
2 // SamSequence.cpp (c) 2010 Derek Barnett
3 // Marth Lab, Department of Biology, Boston College
4 // All rights reserved.
5 // ---------------------------------------------------------------------------
6 // Last modified: 18 April 2011 (DB)
7 // ---------------------------------------------------------------------------
8 // Provides direct read/write access to the SAM sequence data fields.
9 // ***************************************************************************
10
11 #include <api/SamSequence.h>
12 #include <sstream>
13 using namespace BamTools;
14 using namespace std;
15
16 /*! \struct BamTools::SamSequence
17     \brief Represents a SAM sequence entry.
18
19     Provides direct read/write access to the SAM sequence data fields.
20
21     \sa \samSpecURL
22 */
23 /*! \var SamSequence::AssemblyID
24     \brief corresponds to \@SQ AS:\<AssemblyID\>
25 */
26 /*! \var SamSequence::Checksum
27     \brief corresponds to \@SQ M5:\<Checksum\>
28 */
29 /*! \var SamSequence::Length
30     \brief corresponds to \@SQ LN:\<Length\>
31
32     Required for valid SAM header.
33 */
34 /*! \var SamSequence::Name
35     \brief corresponds to \@SQ SN:\<Name\>
36
37     Required for valid SAM header.
38 */
39 /*! \var SamSequence::Species
40     \brief corresponds to \@SQ SP:\<Species\>
41 */
42 /*! \var SamSequence::URI
43     \brief corresponds to \@SQ UR:\<URI\>
44 */
45
46 /*! \fn SamSequence::SamSequence(void)
47     \brief default constructor
48 */
49 SamSequence::SamSequence(void)
50     : AssemblyID("")
51     , Checksum("")
52     , Length("")
53     , Name("")
54     , Species("")
55     , URI("")
56 { }
57
58 /*! \fn SamSequence::SamSequence(const std::string& name, const int& length)
59     \brief constructs sequence with \a name and \a length
60
61     \param name   desired sequence name
62     \param length desired sequence length (numeric value)
63 */
64 SamSequence::SamSequence(const std::string& name,
65                          const int& length)
66     : AssemblyID("")
67     , Checksum("")
68     , Name(name)
69     , Species("")
70     , URI("")
71 {
72     stringstream s("");
73     s << length;
74     Length = s.str();
75 }
76
77 /*! \fn SamSequence::SamSequence(const std::string& name, const std::string& length)
78     \brief constructs sequence with \a name and \a length
79
80     \param name   desired sequence name
81     \param length desired sequence length (string value)
82 */
83 SamSequence::SamSequence(const std::string& name,
84                          const std::string& length)
85     : AssemblyID("")
86     , Checksum("")
87     , Length(length)
88     , Name(name)
89     , Species("")
90     , URI("")
91 { }
92
93 /*! \fn SamSequence::SamSequence(const SamSequence& other)
94     \brief copy constructor
95 */
96 SamSequence::SamSequence(const SamSequence& other)
97     : AssemblyID(other.AssemblyID)
98     , Checksum(other.Checksum)
99     , Length(other.Length)
100     , Name(other.Name)
101     , Species(other.Species)
102     , URI(other.URI)
103 { }
104
105 /*! \fn SamSequence::~SamSequence(void)
106     \brief destructor
107 */
108 SamSequence::~SamSequence(void) { }
109
110 /*! \fn void SamSequence::Clear(void)
111     \brief Clears all data fields.
112 */
113 void SamSequence::Clear(void) {
114     AssemblyID.clear();
115     Checksum.clear();
116     Length.clear();
117     Name.clear();
118     Species.clear();
119     URI.clear();
120 }
121
122 /*! \fn bool SamSequence::HasAssemblyID(void) const
123     \brief Returns \c true if sequence contains \@SQ AS:\<AssemblyID\>
124 */
125 bool SamSequence::HasAssemblyID(void) const {
126     return (!AssemblyID.empty());
127 }
128
129 /*! \fn bool SamSequence::HasChecksum(void) const
130     \brief Returns \c true if sequence contains \@SQ M5:\<Checksum\>
131 */
132 bool SamSequence::HasChecksum(void) const {
133     return (!Checksum.empty());
134 }
135
136 /*! \fn bool SamSequence::HasLength(void) const
137     \brief Returns \c true if sequence contains \@SQ LN:\<Length\>
138 */
139 bool SamSequence::HasLength(void) const {
140     return (!Length.empty());
141 }
142
143 /*! \fn bool SamSequence::HasName(void) const
144     \brief Returns \c true if sequence contains \@SQ SN:\<Name\>
145 */
146 bool SamSequence::HasName(void) const {
147     return (!Name.empty());
148 }
149
150 /*! \fn bool SamSequence::HasSpecies(void) const
151     \brief Returns \c true if sequence contains \@SQ SP:\<Species\>
152 */
153 bool SamSequence::HasSpecies(void) const {
154     return (!Species.empty());
155 }
156
157 /*! \fn bool SamSequence::HasURI(void) const
158     \brief Returns \c true if sequence contains \@SQ UR:\<URI\>
159 */
160 bool SamSequence::HasURI(void) const {
161     return (!URI.empty());
162 }