BamTools 2.5.2
Loading...
Searching...
No Matches
SamProgramChain.h
Go to the documentation of this file.
1// ***************************************************************************
2// SamProgramChain.h (c) 2011 Derek Barnett
3// Marth Lab, Department of Biology, Boston College
4// ---------------------------------------------------------------------------
5// Last modified: 10 October 2011 (DB)
6// ---------------------------------------------------------------------------
7// Provides methods for operating on a SamProgram record "chain"
8// ***************************************************************************
9
10#ifndef SAM_PROGRAMCHAIN_H
11#define SAM_PROGRAMCHAIN_H
12
13#include <string>
14#include <vector>
15#include "api/SamProgram.h"
16#include "api/api_global.h"
17
18namespace BamTools {
19
20// chain is *NOT* sorted in any order
21// use First()/Last() to retrieve oldest/newest programs, respectively
22typedef std::vector<SamProgram> SamProgramContainer;
23typedef SamProgramContainer::iterator SamProgramIterator;
24typedef SamProgramContainer::const_iterator SamProgramConstIterator;
25
26class API_EXPORT SamProgramChain
27{
28
29 // ctor & dtor
30public:
32
33 // query/modify program data
34public:
35 // appends a program record to the chain
36 void Add(SamProgram& program);
37 void Add(std::vector<SamProgram>& programs);
38
39 // clears all read group entries
40 void Clear();
41
42 // returns true if chain contains this program record (matches on ID)
43 bool Contains(const SamProgram& program) const;
44 bool Contains(const std::string& programId) const;
45
46 // returns the first (oldest) program in the chain
47 SamProgram& First();
48 const SamProgram& First() const;
49
50 // returns true if chain is empty
51 bool IsEmpty() const;
52
53 // returns last (most recent) program in the chain
54 SamProgram& Last();
55 const SamProgram& Last() const;
56
57 // returns number of program records in the chain
58 int Size() const;
59
60 // retrieves a modifiable reference to the SamProgram object associated with this ID
61 SamProgram& operator[](const std::string& programId);
62
63 // retrieve STL-compatible iterators
64public:
65 SamProgramIterator Begin(); // returns iterator to begin()
66 SamProgramConstIterator Begin() const; // returns const_iterator to begin()
67 SamProgramConstIterator ConstBegin() const; // returns const_iterator to begin()
68 SamProgramIterator End(); // returns iterator to end()
69 SamProgramConstIterator End() const; // returns const_iterator to end()
70 SamProgramConstIterator ConstEnd() const; // returns const_iterator to end()
71
72 // internal methods
73private:
74 int IndexOf(const std::string& programId) const;
75 const std::string NextIdFor(const std::string& programId) const;
76
77 // data members
78private:
80};
81
82} // namespace BamTools
83
84#endif // SAM_PROGRAMCHAIN_H
Sorted container "chain" of SamProgram records.
Definition SamProgramChain.h:27
Contains all BamTools classes & methods.
Definition Sort.h:24
std::vector< SamProgram > SamProgramContainer
Definition SamProgramChain.h:22
SamProgramContainer::iterator SamProgramIterator
Definition SamProgramChain.h:23
SamProgramContainer::const_iterator SamProgramConstIterator
Definition SamProgramChain.h:24
Represents a SAM program record.
Definition SamProgram.h:22