1 // This is mul/pdf1d/pdf1d_builder.cxx
2 
3 //:
4 // \file
5 // \author Tim Cootes
6 // \brief Base for classes to build pdf1d_pdf objects.
7 
8 #include "pdf1d_builder.h"
9 #include "vsl/vsl_indent.h"
10 #include "vsl/vsl_binary_loader.h"
11 #include <mbl/mbl_data_array_wrapper.h>
12 
13 //=======================================================================
14 
15 pdf1d_builder::pdf1d_builder() = default;
16 
17 //=======================================================================
18 
19 pdf1d_builder::~pdf1d_builder() = default;
20 
21 //: Build model from data
build_from_array(pdf1d_pdf & model,const double * data,int n) const22 void pdf1d_builder::build_from_array(pdf1d_pdf& model, const double* data, int n) const
23 {
24   mbl_data_array_wrapper<double> wrapper(data,n);
25   build(model,wrapper);
26 }
27 
28 
29 //=======================================================================
30 
version_no() const31 short pdf1d_builder::version_no() const
32 {
33   return 1;
34 }
35 
36 //=======================================================================
37 
vsl_add_to_binary_loader(const pdf1d_builder & b)38 void vsl_add_to_binary_loader(const pdf1d_builder& b)
39 {
40   vsl_binary_loader<pdf1d_builder>::instance().add(b);
41 }
42 
43 //=======================================================================
44 
is_a() const45 std::string pdf1d_builder::is_a() const
46 {
47   return std::string("pdf1d_builder");
48 }
49 
50 //=======================================================================
51 
is_class(std::string const & s) const52 bool pdf1d_builder::is_class(std::string const& s) const
53 {
54   return s==pdf1d_builder::is_a();
55 }
56 
57 //=======================================================================
58 
vsl_b_write(vsl_b_ostream & bfs,const pdf1d_builder & b)59 void vsl_b_write(vsl_b_ostream& bfs, const pdf1d_builder& b)
60 {
61   b.b_write(bfs);
62 }
63 
64 //=======================================================================
65 
vsl_b_read(vsl_b_istream & bfs,pdf1d_builder & b)66 void vsl_b_read(vsl_b_istream& bfs, pdf1d_builder& b)
67 {
68   b.b_read(bfs);
69 }
70 
71 //=======================================================================
72 
vsl_print_summary(std::ostream & os,const pdf1d_builder & b)73 void vsl_print_summary(std::ostream& os,const pdf1d_builder& b)
74 {
75   os << b.is_a() << ": ";
76   vsl_indent_inc(os);
77   b.print_summary(os);
78   vsl_indent_dec(os);
79 }
80 
81 //=======================================================================
82 
vsl_print_summary(std::ostream & os,const pdf1d_builder * b)83 void vsl_print_summary(std::ostream& os,const pdf1d_builder* b)
84 {
85   if (b)
86     vsl_print_summary(os, *b);
87   else
88     os << "No pdf1d_builder defined.";
89 }
90 
91 //=======================================================================
92 
93 //: Stream output operator for class reference
operator <<(std::ostream & os,const pdf1d_builder & b)94 std::ostream& operator<<(std::ostream& os,const pdf1d_builder& b)
95 {
96   vsl_print_summary(os,b);
97   return os;
98 }
99 
100 //=======================================================================
101 
102 //: Stream output operator for class pointer
operator <<(std::ostream & os,const pdf1d_builder * b)103 std::ostream& operator<<(std::ostream& os,const pdf1d_builder* b)
104 {
105   vsl_print_summary(os,b);
106   return os;
107 }
108