X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Fapi%2FSamSequenceDictionary.h;h=cf7c2f3eb4049fef90739a77e6c7ce6ba7556911;hb=af6a3d8491e485969d2df306e41cb9439dec4039;hp=37ac824ef63de30102b1ca208513cea27be004c3;hpb=dc965ab6cd68e6e4b29544ae7340c571b0c7cf9f;p=bamtools.git diff --git a/src/api/SamSequenceDictionary.h b/src/api/SamSequenceDictionary.h index 37ac824..cf7c2f3 100644 --- a/src/api/SamSequenceDictionary.h +++ b/src/api/SamSequenceDictionary.h @@ -1,18 +1,18 @@ // *************************************************************************** // SamSequenceDictionary.h (c) 2010 Derek Barnett // Marth Lab, Department of Biology, Boston College -// All rights reserved. // --------------------------------------------------------------------------- -// Last modified: 23 December 2010 (DB) +// Last modified: 14 October 2011 // --------------------------------------------------------------------------- -// Provides container operations for collection of sequence entries -// ************************************************************************* +// Provides methods for operating on a collection of SamSequence entries. +// *************************************************************************** #ifndef SAM_SEQUENCE_DICTIONARY_H #define SAM_SEQUENCE_DICTIONARY_H -#include -#include +#include "api/api_global.h" +#include "api/SamSequence.h" +#include #include #include @@ -27,20 +27,21 @@ class API_EXPORT SamSequenceDictionary { // ctor & dtor public: SamSequenceDictionary(void); - explicit SamSequenceDictionary(const SamSequenceDictionary& other); + SamSequenceDictionary(const SamSequenceDictionary& other); ~SamSequenceDictionary(void); // query/modify sequence data public: - // add a sequence + // adds a sequence void Add(const SamSequence& sequence); - void Add(const std::string& sequenceNames); + void Add(const std::string& name, const int& length); - // add multiple sequences + // adds multiple sequences + void Add(const SamSequenceDictionary& sequences); void Add(const std::vector& sequences); - void Add(const std::vector& sequenceNames); + void Add(const std::map& sequenceMap); - // clear all sequence records + // clears all sequence entries void Clear(void); // returns true if dictionary contains this sequence @@ -50,46 +51,36 @@ class API_EXPORT SamSequenceDictionary { // returns true if dictionary is empty bool IsEmpty(void) const; - // remove a single sequence (does nothing if sequence not found) + // removes sequence, if found void Remove(const SamSequence& sequence); void Remove(const std::string& sequenceName); - // remove multiple sequences + // removes multiple sequences void Remove(const std::vector& sequences); void Remove(const std::vector& sequenceNames); - // returns size of dictionary (number of current elements) + // returns number of sequences in dictionary int Size(void) const; - // retrieves the SamSequence object associated with this name - // if sequenceName is unknown, a new SamSequence is created with this name (and invalid length 0) - // and a reference to this new sequence entry is returned (like std::map) - // - // * To avoid these partial entries being created, it is recommended to check - // for existence first using Contains() + // retrieves a modifiable reference to the SamSequence object associated with this name SamSequence& operator[](const std::string& sequenceName); - // retrieve sequence iterators - // these are typedefs for STL iterators and thus are compatible with STL containers/algorithms + // retrieve STL-compatible iterators public: - SamSequenceIterator Begin(void); - SamSequenceConstIterator Begin(void) const; - SamSequenceConstIterator ConstBegin(void) const; - SamSequenceIterator End(void); - SamSequenceConstIterator End(void) const; - SamSequenceConstIterator ConstEnd(void) const; - - // internal methods - private: - int IndexOf(const SamSequence& sequence) const; - int IndexOf(const std::string& sequenceName) const; + SamSequenceIterator Begin(void); // returns iterator to begin() + SamSequenceConstIterator Begin(void) const; // returns const_iterator to begin() + SamSequenceConstIterator ConstBegin(void) const; // returns const_iterator to begin() + SamSequenceIterator End(void); // returns iterator to end() + SamSequenceConstIterator End(void) const; // returns const_iterator to end() + SamSequenceConstIterator ConstEnd(void) const; // returns const_iterator to end() // data members private: SamSequenceContainer m_data; + std::map m_lookupData; }; } // namespace BamTools -#endif // SAM_SEQUENCE_DICTIONARY +#endif // SAM_SEQUENCE_DICTIONARY_H