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 // ***************************************************************************
11 #include <api/SamProgram.h>
12 using namespace BamTools;
15 /*! \struct BamTools::SamProgram
16 \brief Represents a SAM program record.
18 Provides direct read/write access to the SAM header program records.
22 /*! \var SamProgram::CommandLine
23 \brief corresponds to \@PG CL:\<CommandLine\>
25 /*! \var SamProgram::ID
26 \brief corresponds to \@PG ID:\<ID\>
28 Required for valid SAM header.
30 /*! \var SamProgram::Name
31 \brief corresponds to \@PG PN:\<Name\>
33 /*! \var SamProgram::PreviousProgramID
34 \brief corresponds to \@PG PP:\<PreviousProgramID\>
36 /*! \var SamProgram::Version
37 \brief corresponds to \@PG VN:\<Version\>
39 /*! \var SamProgram::NextProgramID
41 Holds ID of the "next" program record in a SamProgramChain
44 /*! \fn SamProgram::SamProgram(void)
45 \brief default constructor
47 SamProgram::SamProgram(void)
51 , PreviousProgramID("")
56 /*! \fn SamProgram::SamProgram(const std::string& id)
57 \brief constructs program record with \a id
59 \param id desired program record ID
61 SamProgram::SamProgram(const std::string& id)
65 , PreviousProgramID("")
70 /*! \fn SamProgram::SamProgram(const SamProgram& other)
71 \brief copy constructor
73 SamProgram::SamProgram(const SamProgram& other)
74 : CommandLine(other.CommandLine)
77 , PreviousProgramID(other.PreviousProgramID)
78 , Version(other.Version)
79 , NextProgramID(other.NextProgramID)
82 /*! \fn SamProgram::~SamProgram(void)
85 SamProgram::~SamProgram(void) { }
87 /*! \fn void SamProgram::Clear(void)
88 \brief Clears all data fields.
90 void SamProgram::Clear(void) {
94 PreviousProgramID.clear();
96 NextProgramID.clear();
99 /*! \fn bool SamProgram::HasCommandLine(void) const
100 \brief Returns \c true if program record contains \@PG: CL:\<CommandLine\>
102 bool SamProgram::HasCommandLine(void) const {
103 return (!CommandLine.empty());
106 /*! \fn bool SamProgram::HasID(void) const
107 \brief Returns \c true if program record contains \@PG: ID:\<ID\>
109 bool SamProgram::HasID(void) const {
110 return (!ID.empty());
113 /*! \fn bool SamProgram::HasName(void) const
114 \brief Returns \c true if program record contains \@PG: PN:\<Name\>
116 bool SamProgram::HasName(void) const {
117 return (!Name.empty());
120 /*! \fn bool SamProgram::HasNextProgramID(void) const
122 \return true if program has a "next" record in a SamProgramChain
124 bool SamProgram::HasNextProgramID(void) const {
125 return (!NextProgramID.empty());
128 /*! \fn bool SamProgram::HasPreviousProgramID(void) const
129 \brief Returns \c true if program record contains \@PG: PP:\<PreviousProgramID\>
131 bool SamProgram::HasPreviousProgramID(void) const {
132 return (!PreviousProgramID.empty());
135 /*! \fn bool SamProgram::HasVersion(void) const
136 \brief Returns \c true if program record contains \@PG: VN:\<Version\>
138 bool SamProgram::HasVersion(void) const {
139 return (!Version.empty());