BamTools  2.5.2
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 
18 namespace BamTools {
19 
20 // chain is *NOT* sorted in any order
21 // use First()/Last() to retrieve oldest/newest programs, respectively
22 typedef std::vector<SamProgram> SamProgramContainer;
23 typedef SamProgramContainer::iterator SamProgramIterator;
24 typedef SamProgramContainer::const_iterator SamProgramConstIterator;
25 
26 class API_EXPORT SamProgramChain
27 {
28 
29  // ctor & dtor
30 public:
32 
33  // query/modify program data
34 public:
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
64 public:
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
73 private:
74  int IndexOf(const std::string& programId) const;
75  const std::string NextIdFor(const std::string& programId) const;
76 
77  // data members
78 private:
79  SamProgramContainer m_data;
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