1 // This is brl/bpro/core/bbas_pro/processes/bbas_string_array_process.cxx 2 #include <iostream> 3 #include <fstream> 4 #include <bprb/bprb_func_process.h> 5 //: 6 // \file 7 8 #include <bpro/core/bbas_pro/bbas_1d_array_string.h> 9 #ifdef _MSC_VER 10 # include "vcl_msvc_warnings.h" 11 #endif 12 13 namespace bbas_core_string_array 14 { 15 std::vector<std::string> strings; 16 } 17 18 //: Constructor bbas_string_array_process_cons(bprb_func_process & pro)19bool bbas_string_array_process_cons(bprb_func_process& pro) 20 { 21 using namespace bbas_core_string_array; 22 // inputs 23 std::vector<std::string> input_types; 24 input_types.emplace_back("vcl_string"); //input string 25 //outputs 26 std::vector<std::string> output_types; 27 output_types.emplace_back("bbas_1d_array_string_sptr"); //string array 28 29 return pro.set_input_types(input_types) && 30 pro.set_output_types(output_types); 31 } 32 33 //: Execute the process bbas_string_array_process(bprb_func_process & pro)34bool bbas_string_array_process(bprb_func_process& pro) 35 { 36 using namespace bbas_core_string_array; 37 // Sanity check 38 if (pro.n_inputs()< 1) { 39 std::cout << "brad_string_array_process: The input number should be 1" << std::endl; 40 return false; 41 } 42 std::string path = pro.get_input<std::string>(0); 43 strings.push_back(path); 44 return true; 45 } 46 bbas_string_array_process_finish(bprb_func_process & pro)47bool bbas_string_array_process_finish(bprb_func_process& pro) 48 { 49 using namespace bbas_core_string_array; 50 unsigned n = strings.size(); 51 bbas_1d_array_string_sptr ar = new bbas_1d_array_string(n); 52 for (unsigned i = 0; i<n; ++i) 53 (*ar).data_array[i]=strings[i]; 54 pro.set_output_val<bbas_1d_array_string_sptr>(0, ar); 55 strings.clear(); 56 return true; 57 } 58