From 6f5c226a2892eca7e3446db18928ed0ce9f65daf Mon Sep 17 00:00:00 2001 From: derek Date: Wed, 12 Jan 2011 17:47:04 -0500 Subject: [PATCH] Minor update to API version 0.9.3 - addition of SamHeader::SetHeaderText(). --- src/api/CMakeLists.txt | 2 +- src/api/SamHeader.cpp | 10 ++++++++++ src/api/SamHeader.h | 5 ++++- src/api/internal/BamHeader_p.cpp | 13 +++++++++---- src/api/internal/SamHeaderVersion_p.h | 20 ++++++++++++++++++++ 5 files changed, 44 insertions(+), 6 deletions(-) diff --git a/src/api/CMakeLists.txt b/src/api/CMakeLists.txt index 6aab198..b97239b 100644 --- a/src/api/CMakeLists.txt +++ b/src/api/CMakeLists.txt @@ -37,7 +37,7 @@ set( BamToolsAPISources # create main BamTools API shared library add_library( BamTools SHARED ${BamToolsAPISources} ) -set_target_properties( BamTools PROPERTIES SOVERSION "0.9.2" ) +set_target_properties( BamTools PROPERTIES SOVERSION "0.9.3" ) set_target_properties( BamTools PROPERTIES OUTPUT_NAME "bamtools" ) # create main BamTools API static library diff --git a/src/api/SamHeader.cpp b/src/api/SamHeader.cpp index 74381f0..5134630 100644 --- a/src/api/SamHeader.cpp +++ b/src/api/SamHeader.cpp @@ -58,6 +58,16 @@ void SamHeader::Clear(void) { Comments.clear(); } +void SamHeader::SetHeaderText(const std::string& headerText) { + + // clear prior data + Clear(); + + // parse header text into data + SamFormatParser parser(*this); + parser.Parse(headerText); +} + // retrieve the SAM header, with any local modifications string SamHeader::ToString(void) const { SamFormatPrinter printer(*this); diff --git a/src/api/SamHeader.h b/src/api/SamHeader.h index 899459c..5de1560 100644 --- a/src/api/SamHeader.h +++ b/src/api/SamHeader.h @@ -3,7 +3,7 @@ // Marth Lab, Department of Biology, Boston College // All rights reserved. // --------------------------------------------------------------------------- -// Last modified: 23 December 2010 (DB) +// Last modified: 12 January 2011 (DB) // --------------------------------------------------------------------------- // Provides functionality for querying/manipulating SAM header data // ************************************************************************** @@ -38,6 +38,9 @@ struct API_EXPORT SamHeader { // otherwise, output is suppressed and only validation check occurs bool IsValid(bool verbose = false) const; + // replaces SamHeader contents with headerText + void SetHeaderText(const std::string& headerText); + // retrieves the printable, SAM-formatted header // (with any local modifications since construction) std::string ToString(void) const; diff --git a/src/api/internal/BamHeader_p.cpp b/src/api/internal/BamHeader_p.cpp index c613b12..2fb8257 100644 --- a/src/api/internal/BamHeader_p.cpp +++ b/src/api/internal/BamHeader_p.cpp @@ -31,9 +31,15 @@ struct BamHeader::BamHeaderPrivate { // ctor BamHeaderPrivate(void) - : m_samHeader(0) + : m_samHeader(new SamHeader("")) { } + // dtor + ~BamHeaderPrivate(void) { + delete m_samHeader; + m_samHeader = 0; + } + // 'public' interface bool Load(BgzfData* stream); @@ -110,7 +116,7 @@ bool BamHeader::BamHeaderPrivate::ReadHeaderText(BgzfData* stream, const uint32_ const unsigned bytesRead = stream->Read(headerText, length); const bool readOk = ( bytesRead == length ); if ( readOk ) - m_samHeader = new SamHeader( (string)((const char*)headerText) ); + m_samHeader->SetHeaderText( (string)((const char*)headerText) ); else fprintf(stderr, "BAM header error - could not read header text\n"); @@ -134,8 +140,7 @@ BamHeader::~BamHeader(void) { } void BamHeader::Clear(void) { - delete d->m_samHeader; - d->m_samHeader = new SamHeader(""); + d->m_samHeader->Clear(); } bool BamHeader::IsValid(void) const { diff --git a/src/api/internal/SamHeaderVersion_p.h b/src/api/internal/SamHeaderVersion_p.h index ff96471..b569248 100644 --- a/src/api/internal/SamHeaderVersion_p.h +++ b/src/api/internal/SamHeaderVersion_p.h @@ -1,6 +1,26 @@ +// *************************************************************************** +// SamHeaderVersion.h (c) 2010 Derek Barnett +// Marth Lab, Department of Biology, Boston College +// All rights reserved. +// --------------------------------------------------------------------------- +// Last modified: 23 December 2010 (DB) +// --------------------------------------------------------------------------- +// Provides functionality for comparing SAM header versions +// ************************************************************************* + #ifndef SAM_HEADERVERSION_P_H #define SAM_HEADERVERSION_P_H +// ------------- +// W A R N I N G +// ------------- +// +// This file is not part of the BamTools API. It exists purely as an +// implementation detail. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. + #include #include #include -- 2.39.5