Marsyas
0.6.0-alpha
|
00001 #include "Map.h" 00002 00003 namespace Marsyas { 00004 00005 Map::Map(const std::string & name): 00006 MarSystem("Map", name) 00007 { 00008 addControl("mrs_realvec/input", realvec(), m_input_ctl); 00009 addControl("mrs_realvec/output", realvec(), m_output_ctl); 00010 } 00011 00012 Map::Map( const Map & other ): 00013 MarSystem(other) 00014 { 00015 m_input_ctl = getControl("mrs_realvec/input"); 00016 m_output_ctl = getControl("mrs_realvec/output"); 00017 } 00018 00019 void Map::myUpdate(MarControlPtr cause) 00020 { 00021 MarSystem::myUpdate(cause); 00022 00023 const bool do_not_update = false; 00024 00025 MarControlAccessor access_input(m_input_ctl, do_not_update); 00026 MarControlAccessor access_output(m_output_ctl, do_not_update); 00027 00028 realvec & input = access_input.to<realvec>(); 00029 realvec & output = access_output.to<realvec>(); 00030 00031 if (input.getRows() != inObservations_ || 00032 input.getCols() != inSamples_) 00033 { 00034 input.create(inObservations_, inSamples_); 00035 } 00036 00037 if (output.getRows() != onObservations_ || 00038 output.getCols() != onSamples_) 00039 { 00040 output.create(onObservations_, onSamples_); 00041 } 00042 } 00043 00044 void Map::myProcess(realvec & in, realvec & out) 00045 { 00046 { 00047 MarControlAccessor input_access(m_input_ctl); 00048 realvec & input_data = input_access.to<realvec>(); 00049 00050 assert(input_data.getRows() == in.getRows() && 00051 input_data.getCols() == in.getCols()); 00052 00053 input_data = in; 00054 } 00055 00056 const realvec & output_data = m_output_ctl->to<realvec>(); 00057 00058 assert(output_data.getRows() == out.getRows() && 00059 output_data.getCols() == out.getCols()); 00060 00061 out = output_data; 00062 } 00063 00064 } // namespace Marsyas