00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
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
00025 class GNDLLEXPORT gnStringSpec :
public gnContigSpec
00026 {
00027
public:
00031 gnStringSpec();
00040 gnStringSpec(
const string& m_string,
const gnSeqI startI=0,
const gnSeqI endI=
GNSEQI_END,
const boolean revComp =
false);
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
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