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