diff --git a/alib2algo/src/measurements/MeasurementResults.cpp b/alib2algo/src/measurements/MeasurementResults.cpp index 01ea0d03e5c8fe2710506ec94b5cc5705abc261f..dfd9d5a50dff5716e7ce9cd10884f1fd9f9d8925 100644 --- a/alib2algo/src/measurements/MeasurementResults.cpp +++ b/alib2algo/src/measurements/MeasurementResults.cpp @@ -104,9 +104,24 @@ void MeasurementResults::print_as_tree ( std::ostream & os, unsigned idx, std::s } } +const int MeasurementXalloc::FORMAT = std::ios::xalloc ( ); + std::ostream & operator <<( std::ostream & os, const MeasurementResults & mr ) { + MeasurementFormat mf = static_cast < MeasurementFormat > ( os.iword ( MeasurementXalloc::FORMAT ) ); + + switch ( mf ) { + case MeasurementFormat::LIST: + mr.print_as_list ( os ); + break; - mr.print_as_tree ( os ); + case MeasurementFormat::TREE: + mr.print_as_tree ( os ); + break; + + case MeasurementFormat::XML: + sax::SaxComposeInterface::printStream ( os, mr.xml_tokens ( ) ); + break; + } return os; } diff --git a/alib2algo/src/measurements/MeasurementResults.hpp b/alib2algo/src/measurements/MeasurementResults.hpp index 4a7dd5f4509402e9b929e92017264591ad8de909..56b665342613b017e9f15ce331f277793761f9a0 100644 --- a/alib2algo/src/measurements/MeasurementResults.hpp +++ b/alib2algo/src/measurements/MeasurementResults.hpp @@ -12,6 +12,14 @@ namespace measurements { +enum class MeasurementFormat { + LIST = 1, TREE = 2, XML = 4 +}; + +struct MeasurementXalloc { + static const int FORMAT; +}; + struct MeasurementResults { measurements::stealth_vector < MeasurementFrame > frames; @@ -28,6 +36,13 @@ private: }; std::ostream & operator <<( std::ostream &, const MeasurementResults & ); + +template < typename _CharT, typename _Traits > +inline std::basic_ostream < _CharT, _Traits > & operator <<( std::basic_ostream < _CharT, _Traits > & x, MeasurementFormat f ) { + x.iword ( MeasurementXalloc::FORMAT ) = static_cast < int > ( f ); + return x; +} + } #endif /* MEASUREMENT_RESULTS_HPP_ */ diff --git a/alib2algo/test-src/measurements/MeasurementsTest.cpp b/alib2algo/test-src/measurements/MeasurementsTest.cpp index 9bc30fc45ea4951ca9eb5090c3117e7d52d3cc55..59f8ca838349e138d166a194727d9d71ab375de4 100644 --- a/alib2algo/test-src/measurements/MeasurementsTest.cpp +++ b/alib2algo/test-src/measurements/MeasurementsTest.cpp @@ -58,9 +58,9 @@ void MeasurementsTest::testTimeMeasurements ( ) { measurements::end ( ); measurements::end ( ); - std::cout << measurements::results ( ) << std::endl; - - sax::SaxComposeInterface::printStdout ( measurements::results ( ).xml_tokens ( ) ); + std::cout << measurements::MeasurementFormat::LIST << measurements::results ( ) << std::endl; + std::cout << measurements::MeasurementFormat::TREE << measurements::results ( ) << std::endl; + std::cout << measurements::MeasurementFormat::XML << measurements::results ( ) << std::endl; } void MeasurementsTest::testMemoryMeasurements ( ) { @@ -80,7 +80,7 @@ void MeasurementsTest::testMemoryMeasurements ( ) { delete[] bar; measurements::end ( ); - std::cout << measurements::results ( ) << std::endl; - - sax::SaxComposeInterface::printStdout ( measurements::results ( ).xml_tokens ( ) ); + std::cout << measurements::MeasurementFormat::LIST << measurements::results ( ) << std::endl; + std::cout << measurements::MeasurementFormat::TREE << measurements::results ( ) << std::endl; + std::cout << measurements::MeasurementFormat::XML << measurements::results ( ) << std::endl; }