Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00032 #ifndef ACADO_TOOLKIT_LOG_RECORD_HPP
00033 #define ACADO_TOOLKIT_LOG_RECORD_HPP
00034
00035 #include <acado/utils/acado_utils.hpp>
00036 #include <acado/matrix_vector/matrix_vector.hpp>
00037 #include <acado/symbolic_expression/symbolic_expression.hpp>
00038 #include <acado/variables_grid/variables_grid.hpp>
00039
00040 #include <map>
00041 #include <iterator>
00042
00043 BEGIN_NAMESPACE_ACADO
00044
00045 class Logging;
00046
00072 class LogRecord
00073 {
00074 friend class Logging;
00075
00076
00077
00078
00079 public:
00080
00087 LogRecord( LogFrequency _frequency = LOG_AT_EACH_ITERATION,
00088 PrintScheme _printScheme = PS_DEFAULT
00089 );
00090
00092 ~LogRecord( );
00093
00103 returnValue operator<<( LogName _name
00104 );
00105
00115 returnValue operator<<( const Expression& _name
00116 );
00117
00127 returnValue addItem( LogName _name,
00128 const char* const _label = DEFAULT_LABEL
00129 );
00130
00140 returnValue addItem( const Expression& _name,
00141 const char* const _label = DEFAULT_LABEL
00142 );
00143
00155 inline returnValue getAll( LogName _name,
00156 MatrixVariablesGrid& values
00157 ) const;
00158
00170 inline returnValue getAll( const Expression& _name,
00171 MatrixVariablesGrid& values
00172 ) const;
00173
00174
00186 inline returnValue getFirst( LogName _name,
00187 DMatrix& firstValue
00188 ) const;
00189
00201 inline returnValue getFirst( const Expression& _name,
00202 DMatrix& firstValue
00203 ) const;
00204
00216 inline returnValue getFirst( LogName _name,
00217 VariablesGrid& firstValue
00218 ) const;
00219
00231 inline returnValue getFirst( const Expression& _name,
00232 VariablesGrid& firstValue
00233 ) const;
00234
00235
00247 inline returnValue getLast( LogName _name,
00248 DMatrix& lastValue
00249 ) const;
00250
00262 inline returnValue getLast( const Expression& _name,
00263 DMatrix& lastValue
00264 ) const;
00265
00277 inline returnValue getLast( LogName _name,
00278 VariablesGrid& lastValue
00279 ) const;
00280
00292 inline returnValue getLast( const Expression& _name,
00293 VariablesGrid& lastValue
00294 ) const;
00295
00296
00308 inline returnValue setAll( LogName _name,
00309 const MatrixVariablesGrid& values
00310 );
00311
00323 inline returnValue setAll( const Expression& _name,
00324 const MatrixVariablesGrid& values
00325 );
00326
00327
00340 inline returnValue setLast( LogName _name,
00341 const DMatrix& value,
00342 double time = -INFTY
00343 );
00344
00357 inline returnValue setLast( const Expression& _name,
00358 const DMatrix& value,
00359 double time = -INFTY
00360 );
00361
00374 inline returnValue setLast( LogName _name,
00375 VariablesGrid& value,
00376 double time = -INFTY
00377 );
00378
00391 inline returnValue setLast( const Expression& _name,
00392 VariablesGrid& value,
00393 double time = -INFTY
00394 );
00395
00406 returnValue print( std::ostream& _stream = std::cout,
00407 LogPrintMode _mode = PRINT_ITEM_BY_ITEM
00408 ) const;
00409
00414 returnValue printInfo( ) const;
00415
00423 uint getMaxNumMatrices( ) const;
00424
00429 inline uint getNumItems( ) const;
00430
00436 inline BooleanType isEmpty( ) const;
00437
00443 inline LogFrequency getLogFrequency( ) const;
00444
00449 inline PrintScheme getPrintScheme( ) const;
00450
00458 inline returnValue setLogFrequency( LogFrequency _frequency
00459 );
00460
00467 inline returnValue setPrintScheme( PrintScheme _printScheme
00468 );
00469
00478 inline BooleanType hasItem( LogName _name
00479 ) const;
00480
00489 inline BooleanType hasItem( const Expression& _name
00490 ) const;
00491
00499 inline BooleanType hasNonEmptyItem( LogName _name
00500 ) const;
00501
00509 inline BooleanType hasNonEmptyItem( const Expression& _name
00510 ) const;
00511
00512
00513 inline uint getNumDoubles( ) const;
00514
00527 returnValue getAll( uint _name,
00528 LogRecordItemType _type,
00529 MatrixVariablesGrid& values
00530 ) const;
00531
00544 returnValue getFirst( uint _name,
00545 LogRecordItemType _type,
00546 DMatrix& firstValue
00547 ) const;
00548
00561 returnValue getLast( uint _name,
00562 LogRecordItemType _type,
00563 DMatrix& lastValue
00564 ) const;
00565
00578 returnValue setAll( uint _name,
00579 LogRecordItemType _type,
00580 const MatrixVariablesGrid& values
00581 );
00582
00596 returnValue setLast( uint _name,
00597 LogRecordItemType _type,
00598 const DMatrix& value,
00599 double time = -INFTY
00600 );
00601
00602
00612 inline BooleanType hasItem( uint _name,
00613 LogRecordItemType _type
00614 ) const;
00615
00623 inline returnValue enableWriteProtection(LogName _name);
00624
00632 inline returnValue enableWriteProtection(const Expression& _name);
00633
00641 inline returnValue disableWriteProtection(LogName _name);
00642
00650 inline returnValue disableWriteProtection(const Expression& _name);
00651
00653 returnValue updateLogRecord( LogRecord& _record
00654 ) const;
00655
00656
00657
00658
00659 protected:
00661 int aliasIdx;
00663 LogFrequency frequency;
00665 PrintScheme printScheme;
00666
00668 struct LogRecordData
00669 {
00670 LogRecordData()
00671 : label( DEFAULT_LABEL ), writeProtection( false )
00672 {}
00673
00674 LogRecordData( const std::string& _label
00675 )
00676 : label( _label ), writeProtection( false )
00677 {}
00678
00679 LogRecordData( const MatrixVariablesGrid& _values,
00680 const std::string& _label,
00681 bool _writeProtection
00682 )
00683 : values( _values ), label( _label ), writeProtection( _writeProtection )
00684 {}
00685
00686 MatrixVariablesGrid values;
00687 std::string label;
00688 bool writeProtection;
00689 };
00690
00692 typedef std::map<std::pair<int, LogRecordItemType>, LogRecordData> LogRecordItems;
00694 LogRecordItems items;
00695 };
00696
00697 CLOSE_NAMESPACE_ACADO
00698
00699 #include <acado/user_interaction/log_record.ipp>
00700
00701 #endif // ACADO_TOOLKIT_LOG_RECORD_HPP
00702
00703
00704
00705