00001 00034 #ifndef H_IFGSHIFT 00035 #define H_IFGSHIFT 00036 00037 #ifndef NO_DEPENDENCY_INCLUDES 00038 // GIPS includes 00039 #include "Physics.h" 00040 #include "Instrument.h" 00041 #include "ProtocolRole.h" 00042 #include "Operator.h" 00043 00044 #endif 00045 00046 namespace IfgShift 00047 { 00048 00050 struct Config_t { 00051 size_t npts; 00052 explicit Config_t( size_t n ): npts( n ) { }; 00053 }; // struct Config_t 00054 00055 // these are useful enough to be promoted... no? 00056 typedef Connector::InputPort< Instrument::BlitzCplxDoubleVector > &JackIn; 00057 typedef Connector::OutputPort< Instrument::BlitzCplxDoubleVector > &JackOut; 00058 typedef Connector::InputPort< Config_t > &JackConfig; 00059 00060 00062 00063 struct Ports { 00064 JackIn unshiftedInterferogram; 00065 JackOut shiftedInterferogram; 00066 JackConfig config; 00067 00068 Ports( JackIn i, JackOut o, JackConfig c): 00069 unshiftedInterferogram(i), shiftedInterferogram(o), config(c) 00070 {}; 00071 ~Ports() {}; 00072 }; 00073 00079 class IfgShiftOperator: Operator::AbstractOperator 00080 { 00081 private: 00082 Ports &ports; 00083 public: 00084 IfgShiftOperator( Ports &p ): ports(p) { }; 00085 virtual ~IfgShiftOperator() { }; 00086 virtual Operator::Result operator() ( ); 00087 }; // class Operator 00088 00089 00090 } // namespace 00091 #endif