40 | | //! convenience constructor |
41 | | memlog ( int maxlen0, string fn = "" ) : logger ( "_" ), maxlen ( maxlen0 ), ind ( 0 ), vectors ( 0 ), filename ( fn ), file_saved(false) {} |
42 | | |
43 | | //!Default constructor |
44 | | memlog() : logger ( "_" ), maxlen ( 0 ), ind ( 0 ), vectors ( 0 ), file_saved(false) {} |
45 | | |
46 | | //! Initialize storage |
47 | | void init(); |
48 | | |
49 | | void step() { |
50 | | if ( ind < maxlen ) ind++; |
51 | | else bdm_error ( "memlog::ind is too high;" ); |
52 | | } |
53 | | |
54 | | void log_vector ( int id, const vec &v ) { |
55 | | bdm_assert ( id < vectors.length(), "Logger was not initialized, run init()." ); |
56 | | if ( id >= 0 ) { |
57 | | vectors ( id ).set_row ( ind, v ); |
58 | | } |
59 | | } |
60 | | void log_double ( int id, const double &d ) { |
61 | | bdm_assert ( id < vectors.length(), "Logger was not initialized, run init()." ); |
62 | | if ( id >= 0 ) { |
63 | | vectors ( id )( ind, 0 )=d; |
64 | | } |
65 | | } |
66 | | void logit ( int id, const double &d ) { |
67 | | bdm_assert_debug ( id < vectors.length(), "Logger was not initialized, run init()." ); |
68 | | bdm_assert_debug ( vectors ( id ).cols() == 1, "Vector expected" ); |
69 | | if ( id >= 0 ) { |
70 | | vectors ( id ) ( ind ) = d; |
71 | | } |
72 | | } |
73 | | //! Save values into an itfile named after \c fname. |
74 | | void itsave ( const char* fname ); |
75 | | //! |
76 | | void finalize() { |
77 | | if ( filename.length() > 0 && !file_saved ) { |
78 | | itsave ( ( filename + ".it" ).c_str() ); |
79 | | if ( settings.length() > 0 ) { |
80 | | setting_conf.writeFile ( ( filename + ".cfg" ).c_str() ); |
81 | | } |
82 | | file_saved = true; |
83 | | } |
84 | | |
85 | | }; |
86 | | |
87 | | |
88 | | /*! \brief UI for memlog |
89 | | |
90 | | \code |
91 | | logger = { |
92 | | class = "memlog"; |
93 | | filename = "file_name"; // resulting filename with vectors in it format and setting in cfg |
94 | | maxlen = 100; // size of memory buffer |
95 | | } |
96 | | \endcode |
97 | | */ |
98 | | void from_setting ( const Setting &set ); |
99 | | |
100 | | // TODO dodelat void to_setting( Setting &set ) const; |
| 40 | //! convenience constructor |
| 41 | memlog ( int maxlen0, string fn = "" ) : logger ( "_" ), maxlen ( maxlen0 ), ind ( 0 ), vectors ( 0 ), filename ( fn ), file_saved(false) {} |
| 42 | |
| 43 | //!Default constructor |
| 44 | memlog() : logger ( "_" ), maxlen ( 0 ), ind ( 0 ), vectors ( 0 ), file_saved(false) {} |
| 45 | |
| 46 | //! Initialize storage |
| 47 | void init(); |
| 48 | |
| 49 | void step() { |
| 50 | if ( ind < maxlen ) ind++; |
| 51 | else bdm_error ( "memlog::ind is too high;" ); |
| 52 | } |
| 53 | |
| 54 | void log_vector ( int id, const vec &v ) { |
| 55 | bdm_assert ( id < vectors.length(), "Logger was not initialized, run init()." ); |
| 56 | if ( id >= 0 ) { |
| 57 | vectors ( id ).set_row ( ind, v ); |
| 58 | } |
| 59 | } |
| 60 | void log_double ( int id, const double &d ) { |
| 61 | bdm_assert ( id < vectors.length(), "Logger was not initialized, run init()." ); |
| 62 | if ( id >= 0 ) { |
| 63 | vectors ( id )( ind, 0 )=d; |
| 64 | } |
| 65 | } |
| 66 | void logit ( int id, const double &d ) { |
| 67 | bdm_assert_debug ( id < vectors.length(), "Logger was not initialized, run init()." ); |
| 68 | bdm_assert_debug ( vectors ( id ).cols() == 1, "Vector expected" ); |
| 69 | if ( id >= 0 ) { |
| 70 | vectors ( id ) ( ind ) = d; |
| 71 | } |
| 72 | } |
| 73 | //! Save values into an itfile named after \c fname. |
| 74 | void itsave ( const char* fname ); |
| 75 | //! |
| 76 | void finalize() { |
| 77 | if ( filename.length() > 0 && !file_saved ) { |
| 78 | itsave ( ( filename + ".it" ).c_str() ); |
| 79 | if ( settings.length() > 0 ) { |
| 80 | setting_conf.writeFile ( ( filename + ".cfg" ).c_str() ); |
| 81 | } |
| 82 | file_saved = true; |
| 83 | } |
| 84 | |
| 85 | }; |
| 86 | |
| 87 | |
| 88 | /*! \brief UI for memlog |
| 89 | |
| 90 | \code |
| 91 | logger = { |
| 92 | class = "memlog"; |
| 93 | filename = "file_name"; // resulting filename with vectors in it format and setting in cfg |
| 94 | maxlen = 100; // size of memory buffer |
| 95 | } |
| 96 | \endcode |
| 97 | */ |
| 98 | void from_setting ( const Setting &set ); |
| 99 | |
| 100 | // TODO dodelat void to_setting( Setting &set ) const; |
112 | | //! default constructor |
113 | | stdlog() : memlog ( 1 ) {}; |
114 | | |
115 | | void init() { |
116 | | memlog::init(); |
117 | | for ( int i = 0; i < entries.length(); i++ ) { |
118 | | if ( entries ( i )._dsize() == 1 ) { |
119 | | cout << names ( i ) << separator << entries ( i ).name ( 0 ) << "\t"; |
120 | | } else |
121 | | for ( int j = 0; j < vectors ( i ).cols(); j++ ) { |
122 | | cout << names ( i ) << separator << entries ( i ).scalarname ( j ) << "\t"; |
123 | | } |
124 | | } |
125 | | cout << endl; |
126 | | |
127 | | |
128 | | } |
129 | | //!writes everything out |
130 | | void step() { |
131 | | for ( int i = 0; i < vectors.length(); i++ ) { |
132 | | for ( int j = 0; j < vectors ( i ).cols(); j++ ) { |
133 | | cout << vectors ( i ) ( 0, j ) << "\t"; |
134 | | } |
135 | | } |
136 | | cout << endl; |
137 | | } |
138 | | /*! \brief UI for stdlog |
139 | | |
140 | | \code |
141 | | logger = { |
142 | | class = "stdlog"; // no parameterization needed |
143 | | } |
144 | | \endcode |
145 | | */ |
146 | | void from_setting ( const Setting &set ) { |
147 | | } |
| 112 | //! default constructor |
| 113 | stdlog() : memlog ( 1 ) {}; |
| 114 | |
| 115 | void init() { |
| 116 | memlog::init(); |
| 117 | for ( int i = 0; i < entries.length(); i++ ) { |
| 118 | if ( entries ( i )._dsize() == 1 ) { |
| 119 | cout << names ( i ) << separator << entries ( i ).name ( 0 ) << "\t"; |
| 120 | } else |
| 121 | for ( int j = 0; j < vectors ( i ).cols(); j++ ) { |
| 122 | cout << names ( i ) << separator << entries ( i ).scalarname ( j ) << "\t"; |
| 123 | } |
| 124 | } |
| 125 | cout << endl; |
| 126 | |
| 127 | |
| 128 | } |
| 129 | //!writes everything out |
| 130 | void step() { |
| 131 | for ( int i = 0; i < vectors.length(); i++ ) { |
| 132 | for ( int j = 0; j < vectors ( i ).cols(); j++ ) { |
| 133 | cout << vectors ( i ) ( 0, j ) << "\t"; |
| 134 | } |
| 135 | } |
| 136 | cout << endl; |
| 137 | } |
| 138 | /*! \brief UI for stdlog |
| 139 | |
| 140 | \code |
| 141 | logger = { |
| 142 | class = "stdlog"; // no parameterization needed |
| 143 | } |
| 144 | \endcode |
| 145 | */ |
| 146 | void from_setting ( const Setting &set ) { |
| 147 | } |
169 | | /*!\brief Default constructor |
170 | | @param dirname0 name of the directory in which to store the results |
171 | | @param maxlen0 length of the memory buffers, when full the buffers will be dumped to HDD and returned to the beginning. */ |
172 | | dirfilelog ( string dirname0, int maxlen0 ) : memlog ( maxlen0 ), dirname ( dirname0 ), scalarnames ( 0 ), buffers_written(false) {} |
173 | | |
174 | | dirfilelog() : buffers_written(false) {} |
175 | | |
176 | | //! Initialize storage |
177 | | void init(); |
178 | | void step(); |
179 | | void finalize(); |
180 | | /*! \brief Write memory storage to disk. |
181 | | @param Len length of buffer to be written, if 0 the file is truncated at 0. |
182 | | */ |
183 | | void write_buffers ( int Len ); |
184 | | |
185 | | /*! \brief UI for dirfilelog (Kst file format) |
186 | | \code |
187 | | logger = { |
188 | | class = "dirfilelog"; |
189 | | dirname = "directory_for_files"; // resulting files will be stored there |
190 | | maxlen = 100; // size of memory buffer, when full results are written to disk |
191 | | } |
192 | | \endcode |
193 | | */ |
194 | | void from_setting ( const Setting &set ); |
195 | | |
196 | | // TODO dodelat void to_setting( Setting &set ) const; |
| 169 | /*!\brief Default constructor |
| 170 | @param dirname0 name of the directory in which to store the results |
| 171 | @param maxlen0 length of the memory buffers, when full the buffers will be dumped to HDD and returned to the beginning. */ |
| 172 | dirfilelog ( string dirname0, int maxlen0 ) : memlog ( maxlen0 ), dirname ( dirname0 ), scalarnames ( 0 ), buffers_written(false) {} |
| 173 | |
| 174 | dirfilelog() : buffers_written(false) {} |
| 175 | |
| 176 | //! Initialize storage |
| 177 | void init(); |
| 178 | void step(); |
| 179 | void finalize(); |
| 180 | /*! \brief Write memory storage to disk. |
| 181 | @param Len length of buffer to be written, if 0 the file is truncated at 0. |
| 182 | */ |
| 183 | void write_buffers ( int Len ); |
| 184 | |
| 185 | /*! \brief UI for dirfilelog (Kst file format) |
| 186 | \code |
| 187 | logger = { |
| 188 | class = "dirfilelog"; |
| 189 | dirname = "directory_for_files"; // resulting files will be stored there |
| 190 | maxlen = 100; // size of memory buffer, when full results are written to disk |
| 191 | } |
| 192 | \endcode |
| 193 | */ |
| 194 | void from_setting ( const Setting &set ); |
| 195 | |
| 196 | // TODO dodelat void to_setting( Setting &set ) const; |