include/gn/gnBaseFeature.h

Go to the documentation of this file.
00001 00002 // File: gnBaseFeature.h 00003 // Purpose: abstract Feature class 00004 // Description: Provides an interface for Features in memory and on disk. 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 _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 };// class gnBaseFeature 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 // _gnBaseFeature_h_

Generated on Mon Feb 14 19:28:17 2005 for libGenome by doxygen 1.3.8