loggers.h itpp/itbase.h libBM.h ../itpp_ext.h work/git/mixpp/bdm/stat/loggers.cpp work/git/mixpp/mpdm/merg_pred.cpp work/git/mixpp/pmsm/pmsm_mix.cpp work/git/mixpp/pmsm/pmsm_sim2.cpp work/git/mixpp/pmsm/sim_var.cpp work/git/mixpp/pmsm/sim_var_arx.cpp work/git/mixpp/tests/loggers_test.cpp logger memlog dirfilelog Loggers for storing results of experiments. Vaclav Smidl. ----------------------------------- BDM++ - C++ library for Bayesian Decision Making under UncertaintyUsing IT++ for numerical operations ----------------------------------- #ifndefLGR_H #defineLGR_H #include<itpp/itbase.h> #include"libBM.h" #include"../itpp_ext.h" usingnamespaceitpp; usingstd::string; classlogger{ protected: Array<RV>entries; Array<string>names; public: logger():entries(0),names(0){} virtualintadd(constRV&rv,stringname=""){ intid=entries.length(); names=concat(names,name);//diff entries.set_length(id+1,true); entries(id)=rv; returnid;//identifierofthelastentry } virtualvoidlogit(intid,vecv)=0; virtualvoidstep()=0; virtualvoidfinalize(){}; virtual~logger(){}; }; classmemlog:publiclogger{ protected: intmaxlen; intind; Array<mat>vectors; public: memlog(intmaxlen0):logger(),maxlen(maxlen0),ind(0),vectors(0){} voidinit(){ inti;intn=entries.length(); vectors.set_size(n); for(i=0;i<n;i++){vectors(i).set_size(maxlen,entries(i).count());} ; } voidstep(){if(ind<maxlen)ind++;elseit_error("memlog::indistoohigh;");} voidlogit(intid,vecv){ it_assert_debug(id<vectors.length(),"Loggerwasnotinitialized,runinit()."); vectors(id).set_row(ind,v);} voiditsave(constchar*fname); }; classdirfilelog:publicmemlog{ protected: stringdirname; Array<string>scalarnames; public: dirfilelog(std::stringdirname0,intmaxlen0):memlog(maxlen0),dirname(dirname0),scalarnames(0){} voidinit(); voidstep(); voidfinalize(); voidwrite_buffers(intLen); }; #endif//LGR_H