00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef _gnPosSpecificTranslator_h_
00015 #define _gnPosSpecificTranslator_h_
00016
00017
00018 #include "gn/gnDefs.h"
00019
00020 #include <string>
00021 #include <vector>
00022 #include <map>
00023 #include "gn/gnClone.h"
00024 #include "gn/gnBaseFilter.h"
00025 #include "gn/gnFastTranslator.h"
00026
00027
00028
00029
00030
00031
00032 class GNDLLEXPORT gnPosSpecificTranslator : public gnBaseFilter
00033 {
00034 public:
00035
00036 static const gnPosSpecificTranslator *ProteinDNATranslator();
00037 static const gnPosSpecificTranslator *DNAProteinTranslator();
00038
00039 enum gnTranslatorType{
00040 ProteinDNATranslatorType,
00041 DNAProteinTranslatorType,
00042 };
00043
00044 gnPosSpecificTranslator();
00045 gnPosSpecificTranslator( gnTranslatorType t_type );
00046 gnPosSpecificTranslator( const gnPosSpecificTranslator& sf );
00047 gnPosSpecificTranslator& operator= (const gnPosSpecificTranslator& sf);
00048 gnPosSpecificTranslator* Clone() const;
00049
00050
00051
00052 virtual gnSeqC Filter( const gnSeqC ch ) const;
00053
00054 virtual void Filter( gnSeqC** seq, uint32& len ) const;
00055
00056 virtual void Filter( string &seq ) const;
00057
00058 private:
00059 gnTranslatorType m_type;
00060 const gnBaseFilter* filter;
00061 void CreateProteinDNATranslator();
00062 void CreateDNAProteinTranslator();
00063
00064 };
00065
00066 inline
00067 gnPosSpecificTranslator* gnPosSpecificTranslator::Clone() const
00068 {
00069 return new gnPosSpecificTranslator(*this);
00070 }
00071
00072 #endif // _gnPosSpecificTranslator_h_