]> git.donarmstrong.com Git - bamtools.git/blob - src/api/SamSequence.h
4dedcaaac4171e4bff38811b9c6718af16441832
[bamtools.git] / src / api / SamSequence.h
1 // ***************************************************************************
2 // SamSequence.h (c) 2010 Derek Barnett
3 // Marth Lab, Department of Biology, Boston College
4 // All rights reserved.
5 // ---------------------------------------------------------------------------
6 // Last modified: 23 December 2010 (DB)
7 // ---------------------------------------------------------------------------
8 // Provides functionality for querying/manipulating sequence data
9 // **************************************************************************
10
11 #ifndef SAM_SEQUENCE_H
12 #define SAM_SEQUENCE_H
13
14 #include <api/api_global.h>
15 #include <string>
16
17 namespace BamTools {
18
19 class API_EXPORT SamSequence {
20
21     // ctor & dtor
22     public:
23         SamSequence(const std::string& name = "");
24         SamSequence(const SamSequence& other);
25         ~SamSequence(void);
26
27     // public methods
28     public:
29
30         // clear all contents
31         void Clear(void);
32
33         // convenience methods to check if SamSequence contains these values:
34         bool HasName(void) const;
35         bool HasLength(void) const;
36         bool HasAssemblyID(void) const;
37         bool HasChecksum(void) const;
38         bool HasURI(void) const;
39         bool HasSpecies(void) const;
40
41     // data members
42     public:
43         std::string Name;       // SN:<Name>
44         std::string Length;     // LN:<Length>
45         std::string AssemblyID; // AS:<AssemblyID>
46         std::string Checksum;   // M5:<Checksum>
47         std::string URI;        // UR:<URI>
48         std::string Species;    // SP:<Species>
49 };
50
51 // ---------------------------------------------------
52 // comparison operators
53
54 // for equality: compare Name, Length, & Checksum (if it exists for both)
55 inline bool operator==(const SamSequence& lhs, const SamSequence& rhs) {
56     if ( lhs.Name   != rhs.Name   ) return false;
57     if ( lhs.Length != rhs.Length ) return false;
58     if ( lhs.HasChecksum() && rhs.HasChecksum() )
59         return (lhs.Checksum == rhs.Checksum);
60     else return true;
61 }
62
63 } // namespace BamTools
64
65 #endif // SAM_SEQUENCE_H