Main Page | Class Hierarchy | Class List | File List | Class Members

SeqLoc.h

00001 
00002 // Copyright (c) 2003, The Institute for Genomic Research (TIGR), Rockville,
00003 // Maryland, U.S.A.  All rights reserved.
00005 #ifndef SEQLOC_H
00006 #define SEQLOC_H
00007 
00008 #include <string>
00009 #include <iostream>
00010 #include <dsu.h>
00011 #include "DnaStr.h"
00012 
00025 class SeqLoc {
00026   friend std::ostream& operator<<(std::ostream&,const SeqLoc&);
00027   inline friend bool operator<(const SeqLoc&, const SeqLoc&);
00028 public:
00040    SeqLoc(dsu::Strand_t, int, int);
00041 
00045    SeqLoc(const SeqLoc&);
00046 
00050    virtual ~SeqLoc() { }
00051 
00055    inline dsu::Strand_t getStrnd() const;
00056 
00060    inline int getEnd5() const;
00061 
00065    inline int getEnd3() const;
00066 
00074    bool inRange(int) const;
00075 
00079    unsigned length() const;
00080 
00084    bool isEnd5Set() const;
00085 
00089    bool isEnd3Set() const;
00090    
00096    bool operator==(const SeqLoc& sl) const {
00097      return _strnd == sl._strnd && _end5 == sl._end5 && sl._end3 == _end3;
00098    }
00099         
00103    virtual const string& getTypeStr() const;
00104 
00110    virtual void print(std::ostream&,const string& = "") const;
00111 
00115    virtual int getClosestEnd5(int) const { return getEnd5(); } 
00116 
00120    virtual int getClosestEnd3(int,int) const { return getEnd3(); } 
00121 
00127    virtual bool isActualOverlap(int,int) const { return true; }
00128 
00132    void setEnd5(int);
00133 
00137    void setEnd3(int);
00138 
00142    void setStrnd(dsu::Strand_t strnd) { _strnd = strnd; }
00143 
00144    friend bool isOverlap(const SeqLoc&, const SeqLoc&);
00145 
00146 private:
00147    dsu::Strand_t _strnd;
00148    int _end5, _end3;
00149 };
00150 
00151 #include "inline/SeqLoc.hpp"
00152 
00153 #endif //SEQLOC_H