00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
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
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,
gnSeqI& 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_