]> git.donarmstrong.com Git - bamtools.git/blob - src/api/SamProgram.cpp
Brought API up to compliance with recent SAM Format Spec (v1.4-r962)
[bamtools.git] / src / api / SamProgram.cpp
1 // ***************************************************************************
2 // SamProgram.cpp (c) 2011 Derek Barnett
3 // Marth Lab, Department of Biology, Boston College
4 // All rights reserved.
5 // ---------------------------------------------------------------------------
6 // Last modified: 19 April 2011 (DB)
7 // ---------------------------------------------------------------------------
8 // Provides direct read/write access to the SAM header program records.
9 // ***************************************************************************
10
11 #include <api/SamProgram.h>
12 using namespace BamTools;
13 using namespace std;
14
15 /*! \struct BamTools::SamProgram
16     \brief Represents a SAM program record.
17
18     Provides direct read/write access to the SAM header program records.
19
20     \sa \samSpecURL
21 */
22 /*! \var SamProgram::CommandLine
23     \brief corresponds to \@PG CL:\<CommandLine\>
24 */
25 /*! \var SamProgram::ID
26     \brief corresponds to \@PG ID:\<ID\>
27
28     Required for valid SAM header.
29 */
30 /*! \var SamProgram::Name
31     \brief corresponds to \@PG PN:\<Name\>
32 */
33 /*! \var SamProgram::PreviousProgramID
34     \brief corresponds to \@PG PP:\<PreviousProgramID\>
35 */
36 /*! \var SamProgram::Version
37     \brief corresponds to \@PG VN:\<Version\>
38 */
39 /*! \var SamProgram::NextProgramID
40     \internal
41     Holds ID of the "next" program record in a SamProgramChain
42 */
43
44 /*! \fn SamProgram::SamProgram(void)
45     \brief default constructor
46 */
47 SamProgram::SamProgram(void)
48     : CommandLine("")
49     , ID("")
50     , Name("")
51     , PreviousProgramID("")
52     , Version("")
53     , NextProgramID("")
54 { }
55
56 /*! \fn SamProgram::SamProgram(const std::string& id)
57     \brief constructs program record with \a id
58
59     \param id desired program record ID
60 */
61 SamProgram::SamProgram(const std::string& id)
62     : CommandLine("")
63     , ID(id)
64     , Name("")
65     , PreviousProgramID("")
66     , Version("")
67     , NextProgramID("")
68 { }
69
70 /*! \fn SamProgram::SamProgram(const SamProgram& other)
71     \brief copy constructor
72 */
73 SamProgram::SamProgram(const SamProgram& other)
74     : CommandLine(other.CommandLine)
75     , ID(other.ID)
76     , Name(other.Name)
77     , PreviousProgramID(other.PreviousProgramID)
78     , Version(other.Version)
79     , NextProgramID(other.NextProgramID)
80 { }
81
82 /*! \fn SamProgram::~SamProgram(void)
83     \brief destructor
84 */
85 SamProgram::~SamProgram(void) { }
86
87 /*! \fn void SamProgram::Clear(void)
88     \brief Clears all data fields.
89 */
90 void SamProgram::Clear(void) {
91     CommandLine.clear();
92     ID.clear();
93     Name.clear();
94     PreviousProgramID.clear();
95     Version.clear();
96     NextProgramID.clear();
97 }
98
99 /*! \fn bool SamProgram::HasCommandLine(void) const
100     \brief Returns \c true if program record contains \@PG: CL:\<CommandLine\>
101 */
102 bool SamProgram::HasCommandLine(void) const {
103     return (!CommandLine.empty());
104 }
105
106 /*! \fn bool SamProgram::HasID(void) const
107     \brief Returns \c true if program record contains \@PG: ID:\<ID\>
108 */
109 bool SamProgram::HasID(void) const {
110     return (!ID.empty());
111 }
112
113 /*! \fn bool SamProgram::HasName(void) const
114     \brief Returns \c true if program record contains \@PG: PN:\<Name\>
115 */
116 bool SamProgram::HasName(void) const {
117     return (!Name.empty());
118 }
119
120 /*! \fn bool SamProgram::HasNextProgramID(void) const
121     \internal
122     \return true if program has a "next" record in a SamProgramChain
123 */
124 bool SamProgram::HasNextProgramID(void) const {
125     return (!NextProgramID.empty());
126 }
127
128 /*! \fn bool SamProgram::HasPreviousProgramID(void) const
129     \brief Returns \c true if program record contains \@PG: PP:\<PreviousProgramID\>
130 */
131 bool SamProgram::HasPreviousProgramID(void) const {
132     return (!PreviousProgramID.empty());
133 }
134
135 /*! \fn bool SamProgram::HasVersion(void) const
136     \brief Returns \c true if program record contains \@PG: VN:\<Version\>
137 */
138 bool SamProgram::HasVersion(void) const {
139     return (!Version.empty());
140 }