📄 const_06.cc
字号:
// file: $isip/class/algo/Constant/const_06.cc// version: $Id: const_06.cc,v 1.2 2002/07/07 23:49:32 picone Exp $//// isip include files//#include "Constant.h"// method: computeWrite//// arguments:// Vector<AlgorithmData>& output: (output) output data// const Vector< CircularBuffer<AlgorithmData> >& input: (input) input data//// return: a boolean value indicating status//// this method writes a constant to a file.//boolean Constant::computeWrite(Vector<AlgorithmData>& output_a, const Vector< CircularBuffer<AlgorithmData> >& input_a) { // error: unknown implementation // if (implementation_d != WRITE) { return Error::handle(name(), L"computeWrite", ERR_UNKIMP, __FILE__, __LINE__); } // declare an sof object // Sof sof; String filename = filename_d; // open the sof file // if (!sof.open(filename, File::WRITE_ONLY)) { return Error::handle(filename, L"computeWrite", Error::TEST, __FILE__, __LINE__); } // loop over the channels // long len = input_a.length(); for (long c = 0; c < len; c++) { // display the channel number // displayChannel(c); // check for the specified data type (set by the user) // if (data_type_d == input_a(c)(0).getDataType()) { // branch on the data type: VECTOR_FLOAT // AlgorithmData::DATA_TYPE dtype = input_a(c)(0).getDataType() ; if (dtype == AlgorithmData::VECTOR_FLOAT) { output_a(c).makeVectorFloat().assign(input_a(c)(0).getVectorFloat()); // write the data // if (!output_a(c).getVectorFloat().write(sof, (long)c)) { return Error::handle(name(), L"computeWrite", Error::WRITE, __FILE__, __LINE__, Error::WARNING); } output_a(c).getVectorFloat().setLength(0); } // branch on the data type: VECTOR_COMPLEX_FLOAT // else if (dtype == AlgorithmData::VECTOR_COMPLEX_FLOAT) { output_a(c).makeVectorComplexFloat().assign(input_a(c)(0).getVectorComplexFloat()); // write the data // if (!output_a(c).getVectorComplexFloat().write(sof, (long)c)) { return Error::handle(name(), L"computeWrite", Error::WRITE, __FILE__, __LINE__, Error::WARNING); } output_a(c).getVectorComplexFloat().setLength(0); } // branch on the data type: MATRIX_FLOAT // else if (dtype == AlgorithmData::MATRIX_FLOAT) { output_a(c).makeMatrixFloat().assign(input_a(c)(0).getMatrixFloat()); // write the data // if (!output_a(c).getMatrixFloat().write(sof, (long)c)) { return Error::handle(name(), L"computeWrite", Error::WRITE, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: MATRIX_COMPELX_FLOAT // else if (dtype == AlgorithmData::MATRIX_COMPLEX_FLOAT) { output_a(c).makeMatrixComplexFloat().assign(input_a(c)(0).getMatrixComplexFloat()); // write the data // if (!output_a(c).getMatrixComplexFloat().write(sof, (long)c)) { return Error::handle(name(), L"computeWrite", Error::WRITE, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: VECTOR_DOUBLE // else if (dtype == AlgorithmData::VECTOR_DOUBLE) { output_a(c).makeVectorDouble().assign(input_a(c)(0).getVectorDouble()); // write the data // if (!output_a(c).getVectorDouble().write(sof, (long)c)) { return Error::handle(name(), L"computeWrite", Error::WRITE, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: VECTOR_COMPLEX_DOUBLE // else if (dtype == AlgorithmData::VECTOR_COMPLEX_DOUBLE) { output_a(c).makeVectorComplexDouble().assign(input_a(c)(0).getVectorComplexDouble()); // write the data // if (!output_a(c).getVectorComplexDouble().write(sof, (long)c)) { return Error::handle(name(), L"computeWrite", Error::WRITE, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: MATRIX_DOUBLE // else if (dtype == AlgorithmData::MATRIX_DOUBLE) { output_a(c).makeMatrixDouble().assign(input_a(c)(0).getMatrixDouble()); // write the data // if (!output_a(c).getMatrixDouble().write(sof, (long)c)) { return Error::handle(name(), L"computeWrite", Error::WRITE, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: MATRIX_COMPLEX_DOUBLE // else if (dtype == AlgorithmData::MATRIX_COMPLEX_DOUBLE) { output_a(c).makeVectorComplexDouble().assign(input_a(c)(0).getVectorComplexDouble()); // write the data // if (!output_a(c).getMatrixComplexDouble().write(sof, (long)c)) { return Error::handle(name(), L"computeWrite", Error::WRITE, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: COMBINATION // else if (dtype == AlgorithmData::COMBINATION) { return Error::handle(name(), L"computeWrite", ERR_UNSUPM, __FILE__, __LINE__); } } // error: unsupported data type // else { return Error::handle(name(), L"computeWrite", ERR_UNSUPM, __FILE__, __LINE__); } // possibly display the data // display(output_a, input_a, name()); data_d(c).assign(input_a(c)(0)); } // close file // sof.close(); // exit gracefully // return true;}// method: computeRead//// arguments:// Vector<AlgorithmData>& output: (output) output data// const Vector< CircularBuffer<AlgorithmData> >& input: (input) input data//// return: a boolean value indicating status//// this method reads a constant from a file.//boolean Constant::computeRead(Vector<AlgorithmData>& output_a, const Vector< CircularBuffer<AlgorithmData> >& input_a) { // error: unknown implementation // if (implementation_d != READ) { return Error::handle(name(), L"computeRead", ERR_UNKIMP, __FILE__, __LINE__); } // set the number of channels // long len = channels_d; output_a.setLength(len); // check if the data exists (implies it has already has been read) // if (data_exist_d) { output_a.assign(data_d); return true; } // else: read the data // else { // declare an sof object // Sof sof; String filename = filename_d; // open the sof file // if (!sof.open(filename, File::READ_ONLY)) { return Error::handle(filename, L"computeRead", Error::TEST, __FILE__, __LINE__); } // loop over the channels // for (long c = 0; c < len; c++) { // display the channel number // displayChannel(c); // branch on the data type: VECTOR_FLOAT // if (data_type_d == AlgorithmData::VECTOR_FLOAT || data_type_d == AlgorithmData::DEF_DTYPE) { output_a(c).makeVectorFloat(); // read the data // if (!output_a(c).getVectorFloat().read(sof, (long)c)) { return Error::handle(name(), L"computeRead", Error::READ, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: VECTOR_COMPLEX_FLOAT // else if (data_type_d == AlgorithmData::VECTOR_COMPLEX_FLOAT) { output_a(c).makeVectorComplexFloat(); // read the data // if (!output_a(c).getVectorComplexFloat().read(sof, (long)c)) { return Error::handle(name(), L"computeRead", Error::READ, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: MATRIX_FLOAT // else if (data_type_d == AlgorithmData::MATRIX_FLOAT) { output_a(c).makeMatrixFloat(); // read the data // if (!output_a(c).getMatrixFloat().read(sof, (long)c)) { return Error::handle(name(), L"computeRead", Error::READ, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: MATRIX_COMPLEX_FLOAT // else if (data_type_d == AlgorithmData::MATRIX_COMPLEX_FLOAT) { output_a(c).makeMatrixComplexFloat(); // read the data // if (!output_a(c).getMatrixComplexFloat().read(sof, (long)c)) { return Error::handle(name(), L"computeRead", Error::READ, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: VECTOR_DOUBLE // else if (data_type_d == AlgorithmData::VECTOR_DOUBLE) { output_a(c).makeVectorDouble(); // read the data // if (!output_a(c).getVectorDouble().read(sof, (long)c)) { return Error::handle(name(), L"computeRead", Error::READ, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: VECTOR_COMPLEX_DOUBLE // else if (data_type_d == AlgorithmData::VECTOR_COMPLEX_DOUBLE) { output_a(c).makeVectorComplexDouble(); // read the data // if (!output_a(c).getVectorComplexDouble().read(sof, (long)c)) { return Error::handle(name(), L"computeRead", Error::READ, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: MATRIX_DOUBLE // else if (data_type_d == AlgorithmData::MATRIX_DOUBLE) { output_a(c).makeMatrixDouble(); // read the data // if (!output_a(c).getMatrixDouble().read(sof, (long)c)) { return Error::handle(name(), L"computeRead", Error::READ, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: MATRIX_COMPLEX_DOUBLE // else if (data_type_d == AlgorithmData::MATRIX_COMPLEX_DOUBLE) { output_a(c).makeMatrixComplexDouble(); // read the data // if (!output_a(c).getMatrixComplexDouble().read(sof, (long)c)) { return Error::handle(name(), L"computeRead", Error::READ, __FILE__, __LINE__, Error::WARNING); } } // branch on the data type: COMBINATION // else if (data_type_d == AlgorithmData::COMBINATION) { return Error::handle(name(), L"computeRead", ERR_UNSUPM, __FILE__, __LINE__); } // set the coefficient type for the output // output_a(c).setCoefType(AlgorithmData::GENERIC); // possibly display the data // display(output_a, input_a, name()); } // close the open file // sof.close(); } // save the data // data_d.assign(output_a); data_exist_d = true; // exit gracefully // return true;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -