00001
00013 #ifndef LGR_H
00014 #define LGR_H
00015
00016 #include "libBM.h"
00017
00018 namespace bdm{
00019 using std::string;
00020
00027 class memlog : public logger {
00028
00029 protected:
00031 int maxlen;
00033 int ind;
00035 Array<mat> vectors;
00037 public:
00039 memlog ( int maxlen0 ) : logger(),maxlen ( maxlen0 ),ind ( 0 ),vectors ( 0 ) {}
00041 void init() {
00042 int i; int n =entries.length();
00043 vectors.set_size ( n );
00044 for ( i=0;i<n;i++ ) {vectors(i).set_size (maxlen,entries(i).count() );}
00045 ;
00046 }
00047 void step() {if ( ind<maxlen ) ind++; else it_error ( "memlog::ind is too high;" );}
00048 void logit ( int id, const vec &v ) {
00049 it_assert_debug(id<vectors.length(),"Logger was not initialized, run init().");
00050 vectors ( id ).set_row ( ind,v );}
00052 void itsave(const char* fname);
00053 };
00054
00063 class dirfilelog : public memlog {
00064
00065 protected:
00067 string dirname;
00069 Array<string> scalarnames;
00070 public:
00074 dirfilelog ( std::string dirname0, int maxlen0 ) : memlog ( maxlen0 ), dirname ( dirname0 ), scalarnames ( 0 ) {}
00076 void init();
00077 void step();
00078 void finalize();
00082 void write_buffers ( int Len );
00083 };
00084
00085 };
00086 #endif // LGR_H