BamTools  2.5.1
SamSequenceDictionary.h
Go to the documentation of this file.
1 // ***************************************************************************
2 // SamSequenceDictionary.h (c) 2010 Derek Barnett
3 // Marth Lab, Department of Biology, Boston College
4 // ---------------------------------------------------------------------------
5 // Last modified: 16 October 2011
6 // ---------------------------------------------------------------------------
7 // Provides methods for operating on a collection of SamSequence entries.
8 // ***************************************************************************
9 
10 #ifndef SAM_SEQUENCE_DICTIONARY_H
11 #define SAM_SEQUENCE_DICTIONARY_H
12 
13 #include <cstddef>
14 #include <map>
15 #include <string>
16 #include <vector>
17 #include "api/SamSequence.h"
18 #include "api/api_global.h"
19 
20 namespace BamTools {
21 
22 typedef std::vector<SamSequence> SamSequenceContainer;
23 typedef SamSequenceContainer::iterator SamSequenceIterator;
24 typedef SamSequenceContainer::const_iterator SamSequenceConstIterator;
25 
27 {
28 
29  // ctor & dtor
30 public:
34 
35  // query/modify sequence data
36 public:
37  // adds a sequence
38  void Add(const SamSequence& sequence);
39  void Add(const std::string& name, const int& length);
40 
41  // adds multiple sequences
42  void Add(const SamSequenceDictionary& sequences);
43  void Add(const std::vector<SamSequence>& sequences);
44  void Add(const std::map<std::string, int>& sequenceMap);
45 
46  // clears all sequence entries
47  void Clear();
48 
49  // returns true if dictionary contains this sequence
50  bool Contains(const SamSequence& sequence) const;
51  bool Contains(const std::string& sequenceName) const;
52 
53  // returns true if dictionary is empty
54  bool IsEmpty() const;
55 
56  // removes sequence, if found
57  void Remove(const SamSequence& sequence);
58  void Remove(const std::string& sequenceName);
59 
60  // removes multiple sequences
61  void Remove(const std::vector<SamSequence>& sequences);
62  void Remove(const std::vector<std::string>& sequenceNames);
63 
64  // returns number of sequences in dictionary
65  int Size() const;
66 
67  // retrieves a modifiable reference to the SamSequence object associated with this name
68  SamSequence& operator[](const std::string& sequenceName);
69 
70  // retrieve STL-compatible iterators
71 public:
72  SamSequenceIterator Begin(); // returns iterator to begin()
73  SamSequenceConstIterator Begin() const; // returns const_iterator to begin()
74  SamSequenceConstIterator ConstBegin() const; // returns const_iterator to begin()
75  SamSequenceIterator End(); // returns iterator to end()
76  SamSequenceConstIterator End() const; // returns const_iterator to end()
77  SamSequenceConstIterator ConstEnd() const; // returns const_iterator to end()
78 
79  // data members
80 private:
81  SamSequenceContainer m_data;
82  std::map<std::string, std::size_t> m_lookupData;
83 };
84 
85 } // namespace BamTools
86 
87 #endif // SAM_SEQUENCE_DICTIONARY_H
BamTools::SamSequenceConstIterator
SamSequenceContainer::const_iterator SamSequenceConstIterator
Definition: SamSequenceDictionary.h:24
BamTools::SamSequenceIterator
SamSequenceContainer::iterator SamSequenceIterator
Definition: SamSequenceDictionary.h:23
SamSequence.h
BamTools::SamSequenceContainer
std::vector< SamSequence > SamSequenceContainer
Definition: SamSequenceDictionary.h:22
BamTools::SamSequenceDictionary
Container of SamSequence entries.
Definition: SamSequenceDictionary.h:26
BamTools
Contains all BamTools classes & methods.
Definition: Sort.h:24
API_EXPORT
#define API_EXPORT
Definition: api_global.h:18
BamTools::SamSequence
Represents a SAM sequence entry.
Definition: SamSequence.h:20
api_global.h