00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef _gnStringSpec_h_
00013 #define _gnStringSpec_h_
00014
00015 #include "gn/gnDefs.h"
00016
00017 #include <string>
00018 #include "gn/gnContigSpec.h"
00019 #include "gn/gnBaseSource.h"
00020
00021
00022
00023
00024
00025 class GNDLLEXPORT gnStringSpec : public gnContigSpec
00026 {
00027 public:
00028
00029
00030
00031 gnStringSpec();
00032
00033
00034
00035
00036
00037
00038
00039
00040 gnStringSpec( const string& m_string, const gnSeqI startI=0, const gnSeqI endI=GNSEQI_END, const boolean revComp = false);
00041
00042
00043
00044
00045 gnStringSpec( const gnStringSpec& s );
00046 ~gnStringSpec();
00047
00048 gnStringSpec* Clone() const;
00049 virtual void Clear();
00050
00051
00052 virtual gnSeqI GetSourceLength() const;
00053
00054
00055
00056 virtual gnBaseSource *GetSource() const;
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066 virtual gnStringSpec* CloneRange( const gnSeqI startI, const gnSeqI len ) const;
00067
00068 protected:
00069 virtual boolean Read(const gnSeqI start, gnSeqC* buf, gnSeqI& bufLen ) const;
00070 string m_seqString;
00071
00072 };
00073
00074 inline
00075 gnStringSpec* gnStringSpec::Clone() const
00076 {
00077 return new gnStringSpec( *this );
00078 }
00079 inline
00080 gnSeqI gnStringSpec::GetSourceLength() const{
00081 return m_seqString.length();
00082 }
00083 inline
00084 gnBaseSource* gnStringSpec::GetSource() const
00085 {
00086 return NULL;
00087 }
00088
00089 inline
00090 boolean gnStringSpec::Read(const gnSeqI start, gnSeqC* buf, gnSeqI& bufLen) const{
00091 memcpy(buf, m_seqString.data() + start, bufLen);
00092 return true;
00093 }
00094
00095 #endif
00096