Hybrid.h
Go to the documentation of this file.
00001 /*
00002  * Hybrid.h
00003  *
00004  *  Created on: Sep 20, 2011
00005  *      Author: sdries
00006  */
00007 
00008 #ifndef PROBLIB_HYBRIDPDF_H_
00009 #define PROBLIB_HYBRIDPDF_H_
00010 
00011 #include "PDF.h"
00012 
00013 namespace pbl {
00014 
00015 class Hybrid: public PDF {
00016 
00017 public:
00018 
00019     Hybrid();
00020 
00021     Hybrid(const Hybrid& orig);
00022 
00023     virtual ~Hybrid();
00024 
00025     Hybrid& operator=(const Hybrid& other);
00026 
00027     Hybrid* clone() const;
00028 
00029     virtual double getLikelihood(const PDF& pdf) const;
00030 
00031         void clear();
00032 
00033         double getMaxDensity() const;
00034 
00035     void addPDF(const PDF& pdf, double priority);
00036 
00037     const std::vector<PDF*>& getPDFS() const;
00038 
00039         std::string toString(const std::string& indent = "") const;
00040 
00041 protected:
00042 
00043     struct HybridStruct {
00044 
00045         std::vector<PDF*> pdfs_;
00046 
00047                 int n_ptrs_;
00048 
00049         HybridStruct() : n_ptrs_(1) { }
00050 
00051         HybridStruct(const HybridStruct& orig) : n_ptrs_(1) {
00052 
00053             for (std::vector<PDF*>::const_iterator it_pdf = orig.pdfs_.begin(); it_pdf != orig.pdfs_.end(); ++it_pdf) {
00054                 pdfs_.push_back((*it_pdf)->clone());
00055                         }
00056                 }
00057 
00058         ~HybridStruct() {
00059             for (std::vector<PDF*>::const_iterator it_pdf = pdfs_.begin(); it_pdf != pdfs_.end(); ++it_pdf) {
00060                                 delete *it_pdf;
00061                         }
00062                 }
00063         };
00064 
00065     HybridStruct* ptr_;
00066 
00067         void cloneStruct();
00068 
00069 };
00070 
00071 }
00072 
00073 #endif /* HYBRIDPDF_H_ */


problib
Author(s): Sjoerd van den Dries
autogenerated on Tue Jan 7 2014 11:42:42