/*! \file \brief Bayesian Models (bm) that use Bayes rule to learn from observations \author Vaclav Smidl. ----------------------------------- BDM++ - C++ library for Bayesian Decision Making under Uncertainty Using IT++ for numerical operations ----------------------------------- */ #ifndef root_H #define root_H #include #include "itpp_ext.h" #include "base/libconfig/libconfig.h++" using namespace libconfig; using namespace itpp; using namespace std; namespace bdm { //forward declaration class logger; //! information about connection to a logger class log_record { public: //!remember which logger is registered logger &L; //! vector of log IDs - one element for each entry ivec ids; //!default constructor log_record(logger &L0): L(L0),ids(0){} }; //! Root class of BDM objects class root { protected: //! record of connections to the logger log_record* logrec; //! level of details that will be logged to a logger int log_level; public: //!default constructor root() : logrec(NULL),log_level(0) {}; //! make sure this is a virtual object virtual ~root() { if (logrec) delete logrec; } //! Returns a basic textual info about the current instance virtual string to_string() const { return ""; } //! Register itself in a logger, i.e. allocate space for data from this class //! The level of details (parameter \c level ) is individual for each class. virtual void log_register(logger &L, const string &prefix){ logrec = new log_record(L); } //! Write current information into the given logger virtual void log_write() const { } //! set level of details to be logged - needs to be called before log_register! virtual void set_log_level(int level) {log_level = level;} //! Read instance properties according the data stored in the Setting structure virtual void from_setting ( const Setting &set ) { } //! Save all the instance properties into the Setting structure virtual void to_setting ( Setting &set ) const { } //! Check that all internal structures has been correctly set-up. Called at the end of from_setting. virtual void validate() { } }; }; //namespace #endif // root_H