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)19 bool 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)34 bool 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)47 bool 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