1 // ***************************************************************************
2 // SamSequenceDictionary.h (c) 2010 Derek Barnett
3 // Marth Lab, Department of Biology, Boston College
4 // All rights reserved.
5 // ---------------------------------------------------------------------------
6 // Last modified: 1 October 2011
7 // ---------------------------------------------------------------------------
8 // Provides methods for operating on a collection of SamSequence entries.
9 // ***************************************************************************
11 #ifndef SAM_SEQUENCE_DICTIONARY_H
12 #define SAM_SEQUENCE_DICTIONARY_H
14 #include <api/api_global.h>
15 #include <api/SamSequence.h>
22 typedef std::vector<SamSequence> SamSequenceContainer;
23 typedef SamSequenceContainer::iterator SamSequenceIterator;
24 typedef SamSequenceContainer::const_iterator SamSequenceConstIterator;
26 class API_EXPORT SamSequenceDictionary {
30 SamSequenceDictionary(void);
31 SamSequenceDictionary(const SamSequenceDictionary& other);
32 ~SamSequenceDictionary(void);
34 // query/modify sequence data
37 void Add(const SamSequence& sequence);
38 void Add(const std::string& name, const int& length);
40 // adds multiple sequences
41 void Add(const SamSequenceDictionary& sequences);
42 void Add(const std::vector<SamSequence>& sequences);
43 void Add(const std::map<std::string, int>& sequenceMap);
45 // clears all sequence entries
48 // returns true if dictionary contains this sequence
49 bool Contains(const SamSequence& sequence) const;
50 bool Contains(const std::string& sequenceName) const;
52 // returns true if dictionary is empty
53 bool IsEmpty(void) const;
55 // removes sequence, if found
56 void Remove(const SamSequence& sequence);
57 void Remove(const std::string& sequenceName);
59 // removes multiple sequences
60 void Remove(const std::vector<SamSequence>& sequences);
61 void Remove(const std::vector<std::string>& sequenceNames);
63 // returns number of sequences in dictionary
66 // retrieves a modifiable reference to the SamSequence object associated with this name
67 SamSequence& operator[](const std::string& sequenceName);
69 // retrieve STL-compatible iterators
71 SamSequenceIterator Begin(void); // returns iterator to begin()
72 SamSequenceConstIterator Begin(void) const; // returns const_iterator to begin()
73 SamSequenceConstIterator ConstBegin(void) const; // returns const_iterator to begin()
74 SamSequenceIterator End(void); // returns iterator to end()
75 SamSequenceConstIterator End(void) const; // returns const_iterator to end()
76 SamSequenceConstIterator ConstEnd(void) const; // returns const_iterator to end()
80 int IndexOf(const std::string& name) const;
84 SamSequenceContainer m_data;
87 } // namespace BamTools
89 #endif // SAM_SEQUENCE_DICTIONARY_H