X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fapi%2FSamHeader.h;h=50049947e627a29f5b077cb719b0c1a7874bb75a;hb=9f1ce8c47aeadb6dc1320b52ee671c3341b97935;hp=3ff4946dc18fe6d57f08c3629c6609ff783ae6c2;hpb=8c80d760637f8df39262683cd2570f0589423d36;p=bamtools.git diff --git a/src/api/SamHeader.h b/src/api/SamHeader.h index 3ff4946..5004994 100644 --- a/src/api/SamHeader.h +++ b/src/api/SamHeader.h @@ -1,9 +1,8 @@ // *************************************************************************** // SamHeader.h (c) 2010 Derek Barnett // Marth Lab, Department of Biology, Boston College -// All rights reserved. // --------------------------------------------------------------------------- -// Last modified: 4 March 2011 (DB) +// Last modified: 10 October 2011 (DB) // --------------------------------------------------------------------------- // Provides direct read/write access to the SAM header data fields. // *************************************************************************** @@ -11,9 +10,10 @@ #ifndef SAM_HEADER_H #define SAM_HEADER_H -#include -#include -#include +#include "api/api_global.h" +#include "api/SamProgramChain.h" +#include "api/SamReadGroupDictionary.h" +#include "api/SamSequenceDictionary.h" #include #include @@ -28,27 +28,29 @@ struct API_EXPORT SamHeader { // query/modify entire SamHeader void Clear(void); // clears all header contents + std::string GetErrorString(void) const; + bool HasError(void) const; bool IsValid(bool verbose = false) const; // returns true if SAM header is well-formed void SetHeaderText(const std::string& headerText); // replaces data fields with contents of SAM-formatted text std::string ToString(void) const; // returns the printable, SAM-formatted header text // convenience query methods - bool HasVersion(void) const; // returns true if header contains format version entry - bool HasSortOrder(void) const; // returns true if header contains sort order entry - bool HasGroupOrder(void) const; // returns true if header contains group order entry - bool HasSequences(void) const; // returns true if header contains any sequence entries - bool HasReadGroups(void) const; // returns true if header contains any read group entries - bool HasProgramName(void) const; // returns true if header contains program name - bool HasProgramVersion(void) const; // returns true if header contains program version - bool HasProgramCommandLine(void) const; // returns true if header contains program command line - bool HasComments(void) const; // returns true if header contains comments + bool HasVersion(void) const; // returns true if header contains format version entry + bool HasSortOrder(void) const; // returns true if header contains sort order entry + bool HasGroupOrder(void) const; // returns true if header contains group order entry + bool HasSequences(void) const; // returns true if header contains any sequence entries + bool HasReadGroups(void) const; // returns true if header contains any read group entries + bool HasPrograms(void) const; // returns true if header contains any program record entries + bool HasComments(void) const; // returns true if header contains comments + // -------------- // data members + // -------------- // header metadata (@HD line) - std::string Version; // VN: - std::string SortOrder; // SO: - std::string GroupOrder; // GO: + std::string Version; // VN: *Required, if @HD record is present* + std::string SortOrder; // SO: + std::string GroupOrder; // GO: // header sequences (@SQ entries) SamSequenceDictionary Sequences; @@ -57,12 +59,14 @@ struct API_EXPORT SamHeader { SamReadGroupDictionary ReadGroups; // header program data (@PG entries) - std::string ProgramName; // ID: - std::string ProgramVersion; // VN: - std::string ProgramCommandLine; // CL: + SamProgramChain Programs; // header comments (@CO entries) std::vector Comments; + + // internal data + private: + mutable std::string m_errorString; }; } // namespace BamTools