00001 00050 #ifndef H_IFG2SPEC_STAGE 00051 #define H_IFG2SPEC_STAGE 00052 00053 #ifndef NO_DEPENDENCY_INCLUDES 00054 // GIPS includes 00055 #include "Physics.h" 00056 #include "Instrument.h" 00057 #include "ProtocolRole.h" 00058 #include "Operator.h" 00059 00060 #endif 00061 00062 namespace Ifg2Spectrum 00063 { 00065 struct Config_t { 00066 size_t npts; 00067 int foldPoint; 00068 Config_t( size_t n, int f ): npts( n ), foldPoint( f ) { }; 00069 }; 00070 00071 typedef Connector::InputPort< Instrument::BlitzCplxDoubleVector > &JackIn; 00072 typedef Connector::OutputPort< Instrument::BlitzCplxDoubleVector > &JackOut; 00073 typedef Connector::InputPort< Config_t > &JackConfig; 00074 00075 00077 struct Ports { 00078 JackIn inputInterferogram; 00079 JackOut outputSpectrum; 00080 JackConfig config; 00081 00082 Ports( JackIn, JackOut, JackConfig ); 00083 }; 00084 00085 00089 class Ifg2SpectrumStage: Operator::AbstractOperator 00090 { 00091 protected: 00092 Ports &ports; 00093 explicit Ifg2SpectrumStage( Ports & ); 00094 public: 00095 virtual Operator::Result operator()( ); 00096 virtual ~Ifg2SpectrumStage(); // abstract class 00097 00099 static Ifg2SpectrumStage *Factory( Instrument::Implementation, Ports & ); 00100 }; // class Ifg2SpectrumStage 00101 00102 } // namespace 00103 #endif