1 // ***************************************************************************
2 // SamProgram.cpp (c) 2011 Derek Barnett
3 // Marth Lab, Department of Biology, Boston College
4 // ---------------------------------------------------------------------------
5 // Last modified: 10 October 2011 (DB)
6 // ---------------------------------------------------------------------------
7 // Provides direct read/write access to the SAM header program records.
8 // ***************************************************************************
10 #include "api/SamProgram.h"
11 using namespace BamTools;
14 /*! \struct BamTools::SamProgram
15 \brief Represents a SAM program record.
17 Provides direct read/write access to the SAM header program records.
21 /*! \var SamProgram::CommandLine
22 \brief corresponds to \@PG CL:\<CommandLine\>
24 /*! \var SamProgram::ID
25 \brief corresponds to \@PG ID:\<ID\>
27 Required for valid SAM header.
29 /*! \var SamProgram::Name
30 \brief corresponds to \@PG PN:\<Name\>
32 /*! \var SamProgram::PreviousProgramID
33 \brief corresponds to \@PG PP:\<PreviousProgramID\>
35 /*! \var SamProgram::Version
36 \brief corresponds to \@PG VN:\<Version\>
38 /*! \var SamProgram::NextProgramID
40 Holds ID of the "next" program record in a SamProgramChain
43 /*! \fn SamProgram::SamProgram(void)
44 \brief default constructor
46 SamProgram::SamProgram(void)
50 , PreviousProgramID("")
55 /*! \fn SamProgram::SamProgram(const std::string& id)
56 \brief constructs program record with \a id
58 \param id desired program record ID
60 SamProgram::SamProgram(const std::string& id)
64 , PreviousProgramID("")
69 /*! \fn SamProgram::SamProgram(const SamProgram& other)
70 \brief copy constructor
72 SamProgram::SamProgram(const SamProgram& other)
73 : CommandLine(other.CommandLine)
76 , PreviousProgramID(other.PreviousProgramID)
77 , Version(other.Version)
78 , NextProgramID(other.NextProgramID)
81 /*! \fn SamProgram::~SamProgram(void)
84 SamProgram::~SamProgram(void) { }
86 /*! \fn void SamProgram::Clear(void)
87 \brief Clears all data fields.
89 void SamProgram::Clear(void) {
93 PreviousProgramID.clear();
95 NextProgramID.clear();
98 /*! \fn bool SamProgram::HasCommandLine(void) const
99 \brief Returns \c true if program record contains \@PG: CL:\<CommandLine\>
101 bool SamProgram::HasCommandLine(void) const {
102 return (!CommandLine.empty());
105 /*! \fn bool SamProgram::HasID(void) const
106 \brief Returns \c true if program record contains \@PG: ID:\<ID\>
108 bool SamProgram::HasID(void) const {
109 return (!ID.empty());
112 /*! \fn bool SamProgram::HasName(void) const
113 \brief Returns \c true if program record contains \@PG: PN:\<Name\>
115 bool SamProgram::HasName(void) const {
116 return (!Name.empty());
119 /*! \fn bool SamProgram::HasNextProgramID(void) const
121 \return true if program has a "next" record in a SamProgramChain
123 bool SamProgram::HasNextProgramID(void) const {
124 return (!NextProgramID.empty());
127 /*! \fn bool SamProgram::HasPreviousProgramID(void) const
128 \brief Returns \c true if program record contains \@PG: PP:\<PreviousProgramID\>
130 bool SamProgram::HasPreviousProgramID(void) const {
131 return (!PreviousProgramID.empty());
134 /*! \fn bool SamProgram::HasVersion(void) const
135 \brief Returns \c true if program record contains \@PG: VN:\<Version\>
137 bool SamProgram::HasVersion(void) const {
138 return (!Version.empty());