contrib/mul/pdf1d/pdf1d_builder.cxx
Go to the documentation of this file.
00001 // This is mul/pdf1d/pdf1d_builder.cxx
00002 
00003 //:
00004 // \file
00005 // \author Tim Cootes
00006 // \brief Base for classes to build pdf1d_pdf objects.
00007 
00008 #include "pdf1d_builder.h"
00009 #include <vsl/vsl_indent.h>
00010 #include <vsl/vsl_binary_loader.h>
00011 #include <mbl/mbl_data_array_wrapper.h>
00012 
00013 //=======================================================================
00014 
00015 pdf1d_builder::pdf1d_builder()
00016 {
00017 }
00018 
00019 //=======================================================================
00020 
00021 pdf1d_builder::~pdf1d_builder()
00022 {
00023 }
00024 
00025 //: Build model from data
00026 void pdf1d_builder::build_from_array(pdf1d_pdf& model, const double* data, int n) const
00027 {
00028   mbl_data_array_wrapper<double> wrapper(data,n);
00029   build(model,wrapper);
00030 }
00031 
00032 
00033 //=======================================================================
00034 
00035 short pdf1d_builder::version_no() const
00036 {
00037   return 1;
00038 }
00039 
00040 //=======================================================================
00041 
00042 void vsl_add_to_binary_loader(const pdf1d_builder& b)
00043 {
00044   vsl_binary_loader<pdf1d_builder>::instance().add(b);
00045 }
00046 
00047 //=======================================================================
00048 
00049 vcl_string pdf1d_builder::is_a() const
00050 {
00051   return vcl_string("pdf1d_builder");
00052 }
00053 
00054 //=======================================================================
00055 
00056 bool pdf1d_builder::is_class(vcl_string const& s) const
00057 {
00058   return s==pdf1d_builder::is_a();
00059 }
00060 
00061 //=======================================================================
00062 
00063 void vsl_b_write(vsl_b_ostream& bfs, const pdf1d_builder& b)
00064 {
00065   b.b_write(bfs);
00066 }
00067 
00068 //=======================================================================
00069 
00070 void vsl_b_read(vsl_b_istream& bfs, pdf1d_builder& b)
00071 {
00072   b.b_read(bfs);
00073 }
00074 
00075 //=======================================================================
00076 
00077 void vsl_print_summary(vcl_ostream& os,const pdf1d_builder& b)
00078 {
00079   os << b.is_a() << ": ";
00080   vsl_indent_inc(os);
00081   b.print_summary(os);
00082   vsl_indent_dec(os);
00083 }
00084 
00085 //=======================================================================
00086 
00087 void vsl_print_summary(vcl_ostream& os,const pdf1d_builder* b)
00088 {
00089   if (b)
00090     vsl_print_summary(os, *b);
00091   else
00092     os << "No pdf1d_builder defined.";
00093 }
00094 
00095 //=======================================================================
00096 
00097 //: Stream output operator for class reference
00098 vcl_ostream& operator<<(vcl_ostream& os,const pdf1d_builder& b)
00099 {
00100   vsl_print_summary(os,b);
00101   return os;
00102 }
00103 
00104 //=======================================================================
00105 
00106 //: Stream output operator for class pointer
00107 vcl_ostream& operator<<(vcl_ostream& os,const pdf1d_builder* b)
00108 {
00109   vsl_print_summary(os,b);
00110   return os;
00111 }