libStatGen Software
1
SamHeaderRecord.h
1
/*
2
* Copyright (C) 2010 Regents of the University of Michigan
3
*
4
* This program is free software: you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation, either version 3 of the License, or
7
* (at your option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16
*/
17
18
#ifndef __SAMHEADER_RECORD_H__
19
#define __SAMHEADER_RECORD_H__
20
21
#include "StringArray.h"
22
#include "StringHash.h"
23
#include "SamHeaderTag.h"
24
25
/// This class encapsulates the tag value pairs contained with a SAM Header
26
/// line with accessors for getting and setting the tags within this header.
27
class
SamHeaderRecord
28
{
29
public
:
30
/// Specifies the Type for the sam header record (line).
31
enum
SamHeaderRecordType
{
32
HD
,
///< Header
33
SQ
,
///< Sequence Dictionary
34
RG
,
///< Read Group
35
PG
///< Program
36
};
37
38
/// Constructor
39
SamHeaderRecord
();
40
41
/// Destructor
42
virtual
~SamHeaderRecord
();
43
44
/// Return a pointer to a newly created header record of the appropriate type
45
/// that is a copy of this record. The newly created record will not be
46
/// deleted by this class and it is the responsibility of the calling method
47
/// to handle the deletion.
48
/// Returns NULL on failure to copy.
49
virtual
SamHeaderRecord
*
createCopy
()
const
= 0;
50
51
/// Set the fields from the passed in line.
52
/// Return true if successfully set.
53
bool
setFields
(
const
StringArray
& tokens);
54
55
/// Check to see if the record is valid.
56
bool
isValid
();
57
58
/// Return the value associated with the specified tag. Returns "" if it
59
/// is not set.
60
const
char
*
getTagValue
(
const
char
* tag)
const
;
61
62
/// Set the value of the specified tag to the specified value, deletes
63
/// the tag when value is NULL.
64
/// Returns whether or not it was successful, fails if tag is the key tag
65
/// and the key tag already exists.
66
bool
setTag
(
const
char
* tag,
const
char
* value);
67
68
/// Reset this header record to an empty state with no tags.
69
void
reset
();
70
71
/// Appends the string representation of this header record
72
/// to the passed in string.
73
bool
appendString
(std::string& header);
74
75
/// Add the key tag with the specified value (not for HD headers).
76
bool
addKey
(
const
char
* value);
77
78
/// Get the value associated with the key tag. Returns "" if it is not set.
79
const
char
*
getKeyValue
()
const
;
80
81
/// This record is active (true) if there is at least one tag set.
82
bool
isActiveHeaderRecord
();
83
84
/// Return the type of this header record (HD, SQ, RG, or PG) as a string.
85
const
char
*
getTypeString
();
86
87
/// Return the type of this header record (HD, SQ, RG, or PG) as an enum.
88
SamHeaderRecordType
getType
();
89
90
protected
:
91
void
addRequiredTag(
const
char
* requiredTag);
92
93
// Copy this record into the specified new one.
94
virtual
void
internalCopy(
SamHeaderRecord
& newRec)
const
;
95
96
// The type for this header record.
97
std::string myTypeString;
98
99
// The type for this header record.
100
SamHeaderRecordType
myType;
101
102
// The TAG name that is the key for this record
103
// Only applicable if more than one of this type
104
// of record is allowed.
105
std::string myKeyTag;
106
107
private
:
108
SamHeaderRecord
(
const
SamHeaderRecord
& samHeaderRecord);
109
SamHeaderRecord
& operator=(
const
SamHeaderRecord
& samHeaderRecord);
110
111
// hash from tag name to index into the tag values vector.
112
StringIntHash
myTagHash;
113
std::vector<SamHeaderTag*> myTags;
114
115
// The tags that are required for this record.
116
std::vector<String> myRequiredTags;
117
118
int
myNumActiveTags;
119
};
120
121
#endif
SamHeaderRecord
This class encapsulates the tag value pairs contained with a SAM Header line with accessors for getti...
Definition:
SamHeaderRecord.h:28
SamHeaderRecord::getKeyValue
const char * getKeyValue() const
Get the value associated with the key tag. Returns "" if it is not set.
Definition:
SamHeaderRecord.cpp:284
SamHeaderRecord::getTagValue
const char * getTagValue(const char *tag) const
Return the value associated with the specified tag.
Definition:
SamHeaderRecord.cpp:100
SamHeaderRecord::getTypeString
const char * getTypeString()
Return the type of this header record (HD, SQ, RG, or PG) as a string.
Definition:
SamHeaderRecord.cpp:308
SamHeaderRecord::reset
void reset()
Reset this header record to an empty state with no tags.
Definition:
SamHeaderRecord.cpp:212
SamHeaderRecord::getType
SamHeaderRecordType getType()
Return the type of this header record (HD, SQ, RG, or PG) as an enum.
Definition:
SamHeaderRecord.cpp:315
SamHeaderRecord::~SamHeaderRecord
virtual ~SamHeaderRecord()
Destructor.
Definition:
SamHeaderRecord.cpp:30
SamHeaderRecord::isValid
bool isValid()
Check to see if the record is valid.
Definition:
SamHeaderRecord.cpp:78
SamHeaderRecord::setFields
bool setFields(const StringArray &tokens)
Set the fields from the passed in line.
Definition:
SamHeaderRecord.cpp:38
SamHeaderRecord::isActiveHeaderRecord
bool isActiveHeaderRecord()
This record is active (true) if there is at least one tag set.
Definition:
SamHeaderRecord.cpp:301
SamHeaderRecord::appendString
bool appendString(std::string &header)
Appends the string representation of this header record to the passed in string.
Definition:
SamHeaderRecord.cpp:234
SamHeaderRecord::createCopy
virtual SamHeaderRecord * createCopy() const =0
Return a pointer to a newly created header record of the appropriate type that is a copy of this reco...
SamHeaderRecord::addKey
bool addKey(const char *value)
Add the key tag with the specified value (not for HD headers).
Definition:
SamHeaderRecord.cpp:273
SamHeaderRecord::SamHeaderRecordType
SamHeaderRecordType
Specifies the Type for the sam header record (line).
Definition:
SamHeaderRecord.h:31
SamHeaderRecord::HD
@ HD
Header.
Definition:
SamHeaderRecord.h:32
SamHeaderRecord::SQ
@ SQ
Sequence Dictionary.
Definition:
SamHeaderRecord.h:33
SamHeaderRecord::PG
@ PG
Program.
Definition:
SamHeaderRecord.h:35
SamHeaderRecord::RG
@ RG
Read Group.
Definition:
SamHeaderRecord.h:34
SamHeaderRecord::SamHeaderRecord
SamHeaderRecord()
Constructor.
Definition:
SamHeaderRecord.cpp:21
SamHeaderRecord::setTag
bool setTag(const char *tag, const char *value)
Set the value of the specified tag to the specified value, deletes the tag when value is NULL.
Definition:
SamHeaderRecord.cpp:119
StringArray
Definition:
StringArray.h:24
StringIntHash
Definition:
StringHash.h:194
bam
SamHeaderRecord.h
Generated by
1.9.1