00001 00002 // File: gnContigSpec.h 00003 // Purpose: Abstract Contig Spec class 00004 // Description: Defines an interface for contig specs 00005 // Changes: 00006 // Version: libGenome 0.5.1 00007 // Author: Aaron Darling 00008 // Modified by: 00009 // Copyright: (c) Aaron Darling 00010 // Licenses: See COPYING file for details 00012 #ifndef _gnContigSpec_h_ 00013 #define _gnContigSpec_h_ 00014 00015 #include "gn/gnDefs.h" 00016 00017 #include <vector> 00018 #include <string> 00019 00020 #include "gn/gnBaseSpec.h" 00021 #include "gn/gnBaseFeature.h" 00022 #include "gn/gnDebug.h" 00027 class GNDLLEXPORT gnContigSpec : public gnBaseSpec 00028 { 00029 public: 00030 gnContigSpec(){} 00034 virtual ~gnContigSpec(){} 00035 virtual gnContigSpec* Clone() const = 0; 00036 virtual gnContigSpec* CloneRange( const gnSeqI startI, const gnSeqI len ) const = 0; 00041 virtual string GetSourceName() const; 00046 virtual gnSeqI GetStart() const; 00051 virtual gnSeqI GetLength() const; 00056 virtual gnSeqI GetSourceLength() const = 0; 00061 virtual uint32 GetSourceContigIndex() const; 00067 virtual void SetSourceName( const string& sourceName ); 00075 virtual void SetStart( const gnSeqI start ); 00083 virtual void SetLength( const gnSeqI len ); 00088 virtual void SetSourceContigIndex( const uint32 contigI ); 00095 virtual void SetReverseComplement( const boolean value ); 00096 00097 virtual void CropStart( gnSeqI cropLen ); 00098 virtual void CropEnd( gnSeqI cropLen ); 00099 00100 virtual boolean SeqRead(const gnSeqI start, gnSeqC* buf, gnSeqI& bufLen, const uint32 contigI ) const; 00101 virtual void Clear(); 00102 protected: 00103 gnSeqI m_start; //start within the genome. 00104 gnSeqI m_length; 00105 uint32 m_SourceContigIndex; 00106 00111 virtual boolean Read(const gnSeqI start, gnSeqC* buf, gnSeqI& bufLen ) const = 0; 00112 00113 private: 00114 00115 }; // class gnContigSpec 00116 00117 00118 inline 00119 string gnContigSpec::GetSourceName() const{ 00120 return m_sourceName; 00121 } 00122 inline 00123 void gnContigSpec::SetSourceName(const string& sourceName){ 00124 m_sourceName = sourceName; 00125 } 00126 00127 inline 00128 gnSeqI gnContigSpec::GetStart() const 00129 { 00130 return m_start; 00131 } 00132 inline 00133 gnSeqI gnContigSpec::GetLength() const 00134 { 00135 return m_length; 00136 } 00137 // SET 00138 inline 00139 void gnContigSpec::SetStart( const gnSeqI start ) 00140 { 00141 m_start = start; 00142 } 00143 inline 00144 void gnContigSpec::SetLength( const gnSeqI len ) 00145 { 00146 m_length = len; 00147 } 00148 inline 00149 uint32 gnContigSpec::GetSourceContigIndex() const{ 00150 return m_SourceContigIndex; 00151 } 00152 inline 00153 void gnContigSpec::SetSourceContigIndex( const uint32 contigI ){ 00154 m_SourceContigIndex = contigI; 00155 } 00156 00157 #endif 00158 // _gnContigSpec_h_