1 #include "brad_eigenspace_base.h"
2 //
3 #include <brad/brad_eigenspace.h>
4 #include <brad/brad_hist_prob_feature_vector.h>
5 #include <brad/brad_grad_hist_feature_vector.h>
6 #include <brad/brad_grad_int_feature_vector.h>
7 
vsl_b_write(vsl_b_ostream & os,const brad_eigenspace_sptr & es_ptr)8 void vsl_b_write(vsl_b_ostream &os, const brad_eigenspace_sptr& es_ptr)
9 {
10   if (es_ptr->feature_vector_type() == "brad_hist_prob_feature_vector"){
11     std::string t = "brad_hist_prob_feature_vector";
12     auto* hp =
13       dynamic_cast<brad_eigenspace<brad_hist_prob_feature_vector>* >(es_ptr.ptr());
14     vsl_b_write(os, t);
15     vsl_b_write(os, *hp);
16     return;
17   }
18   else if (es_ptr->feature_vector_type() == "brad_grad_hist_feature_vector"){
19     std::string t = "brad_grad_hist_feature_vector";
20     auto* hp =
21       dynamic_cast<brad_eigenspace<brad_grad_hist_feature_vector>* >(es_ptr.ptr());
22     vsl_b_write(os, t);
23     vsl_b_write(os, *hp);
24     return;
25   }
26   else if (es_ptr->feature_vector_type() == "brad_grad_int_feature_vector"){
27     std::string t = "brad_grad_int_feature_vector";
28     auto* hp =
29       dynamic_cast<brad_eigenspace<brad_grad_int_feature_vector>* >(es_ptr.ptr());
30     vsl_b_write(os, t);
31     vsl_b_write(os, *hp);
32     return;
33   }
34   std::cout << "Attempt to binary write eigenspace with unknown feature vector\n";
35 }
36 
37 
vsl_b_read(vsl_b_istream & is,brad_eigenspace_sptr & es_ptr)38 void vsl_b_read(vsl_b_istream &is, brad_eigenspace_sptr& es_ptr)
39 {
40   std::string t;
41   vsl_b_read(is, t);
42   if (t == "brad_hist_prob_feature_vector"){
43     brad_eigenspace<brad_hist_prob_feature_vector> beig;
44     vsl_b_read(is, beig);
45     es_ptr = new brad_eigenspace<brad_hist_prob_feature_vector>(beig);
46     return;
47   }
48   else if (t == "brad_grad_hist_feature_vector"){
49     brad_eigenspace<brad_grad_hist_feature_vector> beig;
50     vsl_b_read(is, beig);
51     es_ptr = new brad_eigenspace<brad_grad_hist_feature_vector>(beig);
52     return;
53   }
54   else if (t == "brad_grad_int_feature_vector"){
55     brad_eigenspace<brad_grad_int_feature_vector> beig;
56     vsl_b_read(is, beig);
57     es_ptr = new brad_eigenspace<brad_grad_int_feature_vector>(beig);
58     return;
59   }
60   std::cout << "Attempt to binary read eigenspace with unknown feature vector\n";
61 }
62