- Main Page
- Related Pages
- Classes
- Files

- File List
- File Members

# loggers.h

Go to the documentation of this file.

    00001
    00013 #ifndef LGR_H
    00014 #define LGR_H
    00015
    00016 #include "bdmbase.h"
    00017 #include "user_info.h"
    00018
    00019 namespace bdm {
    00020 using std::string;
    00021
    00025 class memlog : public logger {
    00026
    00027 protected:
    00029         int maxlen;
    00031         int ind;
    00033         Array<mat> vectors;
    00035         string itfilename;
    00036 public:
    00038         memlog ( int maxlen0, string itf = "" ) : maxlen ( maxlen0 ), ind ( 0 ), vectors ( 0 ), itfilename ( itf ) {}
    00039
    00041         memlog() : maxlen ( 0 ), ind ( 0 ), vectors ( 0 ) {}
    00042
    00044         void init();
    00045
    00046         void step() {
    00047                 if ( ind < maxlen ) ind++;
    00048                 else bdm_error ( "memlog::ind is too high;" );
    00049         }
    00050
    00051         void logit ( int id, const vec &v ) {
    00052                 bdm_assert ( id < vectors.length(), "Logger was not initialized, run init()." );
    00053                 if ( id >= 0 ) {
    00054                         vectors ( id ).set_row ( ind, v );
    00055                 }
    00056         }
    00057         void logit ( int id, const double &d ) {
    00058                 bdm_assert_debug ( id < vectors.length(), "Logger was not initialized, run init()." );
    00059                 bdm_assert_debug ( vectors ( id ).cols() == 1, "Vector expected" );
    00060                 if ( id >= 0 ) {
    00061                         vectors ( id ) ( ind ) = d;
    00062                 }
    00063         }
    00065         void itsave ( const char* fname );
    00067         void finalize() {
    00068                 if ( itfilename.length() > 0 ) itsave ( itfilename.c_str() );
    00069         };
    00070
    00071
    00084         void from_setting ( const Setting &set );
    00085
    00086         // TODO dodelat void to_setting( Setting &set ) const;
    00087 };
    00088
    00089 UIREGISTER ( memlog );
    00090 SHAREDPTR ( memlog );
    00091
    00092
    00096 class stdlog: public memlog{
    00097         public:
    00099                 stdlog():memlog(1){};
    00100
    00101                 void init() {
    00102                         memlog::init();
    00103                         for (int i=0; i<entries.length();i++){
    00104                                 if (entries(i)._dsize()==1) {
    00105                                         cout << names(i) << entries(i).name(0) << "\t";
    00106                                 }
    00107                                 else
    00108                                 for (int j=0; j<vectors(i).cols(); j++){
    00109                                         cout << names(i) << entries(i).scalarname(j) << "\t";
    00110                                 }
    00111                         }
    00112                         cout << endl;
    00113
    00114
    00115                 }
    00117                 void step() {
    00118                         for (int i=0; i<vectors.length();i++){
    00119                                 for (int j=0; j<vectors(i).cols(); j++){
    00120                                         cout << vectors(i)(0,j) << "\t";
    00121                                 }
    00122                         }
    00123                         cout << endl;
    00124                 }
    00135                 void from_setting ( const Setting &set ){
    00136                 }
    00137
    00138 };
    00139 UIREGISTER(stdlog);
    00140
    00148 class dirfilelog : public memlog {
    00149
    00150 protected:
    00152         string dirname;
    00154         Array<string> scalarnames;
    00155 public:
    00159         dirfilelog ( string dirname0, int maxlen0 ) : memlog ( maxlen0 ), dirname ( dirname0 ), scalarnames ( 0 ) {}
    00160
    00161         dirfilelog() {}
    00162
    00164         void init();
    00165         void step();
    00166         void finalize();
    00170         void write_buffers ( int Len );
    00171
    00181         void from_setting ( const Setting &set );
    00182
    00183         // TODO dodelat void to_setting( Setting &set ) const;
    00184 };
    00185
    00186 UIREGISTER ( dirfilelog );
    00187 SHAREDPTR ( dirfilelog );
    00188
    00189 };
    00190 #endif // LGR_H