00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00012
#ifndef _gnBaseFeature_h_
00013
#define _gnBaseFeature_h_
00014
00015
#include "gn/gnDefs.h"
00016
#include <string>
00017
#include <vector>
00018
#include "gn/gnClone.h"
00019
#include "gn/gnLocation.h"
00020
#include "gn/gnBaseQualifier.h"
00021
00022
class gnFragmentSpec;
00023
00030 class GNDLLEXPORT gnBaseFeature :
public gnClone
00031 {
00032
public:
00033 gnBaseFeature();
00034 gnBaseFeature( string& name,
uint32 id = 0,
gnFragmentSpec* spec = NULL, gnLocation::gnLocationType lt = gnLocation::LT_Nothing,
boolean broken =
false );
00038 ~gnBaseFeature();
00039
00040
virtual gnBaseFeature*
Clone()
const = 0;
00045
virtual string GetName()
const;
00050
virtual void SetName(
const string& name );
00055
virtual uint32 GetID()
const;
00060
virtual void SetID(
uint32 id);
00066
virtual gnFragmentSpec* GetSpec()
const;
00071
virtual void SetSpec(
gnFragmentSpec* spec);
00077
virtual gnLocation::gnLocationType GetLocationType()
const;
00084
virtual void SetLocationType( gnLocation::gnLocationType lType );
00089
virtual uint32 GetLocationListLength()
const;
00097
virtual boolean AddLocation(
const gnLocation& l,
uint32 listI = 0);
00103
virtual gnLocation GetLocation(
uint32 listI )
const;
00109
virtual boolean RemoveLocation(
uint32 listI );
00116
virtual boolean SetLocation(
const gnLocation& l,
uint32 listI );
00122
virtual boolean MovePositive(
const gnSeqI i );
00128
virtual boolean MoveNegative(
const gnSeqI i );
00134
virtual boolean CropStart(
const gnSeqI i );
00140
virtual boolean CropEnd(
const gnSeqI i );
00146
virtual boolean Crop(
const gnLocation& l );
00151
virtual boolean IsBroken()
const;
00156
virtual void SetBroken(
boolean broke);
00157
00163
virtual boolean Contains(
gnSeqI i )
const;
00169
virtual boolean Contains(
const gnLocation& l )
const;
00175
virtual boolean Contains( gnBaseFeature* feature )
const;
00181
virtual boolean IsContainedBy(
const gnLocation& l )
const;
00187
virtual boolean Intersects(
const gnLocation& l )
const;
00193
virtual boolean Intersects( gnBaseFeature* feature )
const;
00194
00199
virtual uint32 GetQualifierListLength()
const;
00205
virtual boolean AddQualifier(
gnBaseQualifier* qualifier );
00211
virtual boolean HasQualifier(
const string& name )
const;
00218
virtual uint32 FirstIndexOfQualifier(
const string& name,
uint32 listI )
const;
00225
virtual uint32 LastIndexOfQualifier(
const string& name,
uint32 listI )
const;
00231
virtual string GetQualifierName(
uint32 listI )
const;
00237
virtual string GetQualifierValue(
uint32 listI )
const;
00243
virtual gnBaseQualifier* GetQualifier(
uint32 listI );
00249
virtual boolean RemoveQualifier(
uint32 listI );
00257
virtual boolean SetQualifier( string& name, string& value,
uint32 listI );
00264
virtual boolean SetQualifierName( string& name,
uint32 listI );
00271
virtual boolean SetQualifierValue( string& value,
uint32 listI );
00272
protected:
00273 uint32 m_id;
00274 string m_name;
00275 boolean m_broken;
00276 gnLocation::gnLocationType m_locationType;
00277 vector< gnLocation > m_locationList;
00278 vector< gnBaseQualifier* > m_qualifierList;
00279 gnFragmentSpec* m_spec;
00280 };
00281
00282
inline
00283 string
gnBaseFeature::GetName()
const{
00284
return m_name;
00285 }
00286
inline
00287 void gnBaseFeature::SetName(
const string& name ){
00288
m_name = name;
00289 }
00290
inline
00291 uint32 gnBaseFeature::GetID()
const{
00292
return m_id;
00293 }
00294
inline
00295 void gnBaseFeature::SetID(
uint32 id){
00296
m_id =
id;
00297 }
00298
inline
00299 gnFragmentSpec*
gnBaseFeature::GetSpec()
const{
00300
return m_spec;
00301 }
00302
inline
00303 void gnBaseFeature::SetSpec(
gnFragmentSpec* spec){
00304
m_spec = spec;
00305 }
00306
inline
00307 boolean gnBaseFeature::IsBroken()
const{
00308
return m_broken;
00309 }
00310
inline
00311 void gnBaseFeature::SetBroken(
boolean broke){
00312
m_broken = broke;
00313 }
00314
00315
inline
00316 gnLocation::gnLocationType
gnBaseFeature::GetLocationType()
const{
00317
return m_locationType;
00318 }
00319
inline
00320 void gnBaseFeature::SetLocationType( gnLocation::gnLocationType lType ){
00321
m_locationType = lType;
00322 }
00323
inline
00324 uint32 gnBaseFeature::GetLocationListLength()
const{
00325
return m_locationList.size();
00326 }
00327
inline
00328 boolean gnBaseFeature::Crop(
const gnLocation& l ){
00329
return CropStart(l.
GetStart()) &&
CropEnd(l.
GetEnd());
00330 }
00331
inline
00332 uint32 gnBaseFeature::GetQualifierListLength()
const{
00333
return m_qualifierList.size();
00334 }
00335
00336
#endif
00337