From 5c0c280aa4a820ea98ba615cb22a29c1c20f3b16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radovan=20=C4=8Cerven=C3=BD?= <radovan.cerveny@gmail.com> Date: Fri, 5 Feb 2016 16:28:48 +0100 Subject: [PATCH] added output formatting --- .../src/measurements/MeasurementResults.cpp | 17 ++++++++++++++++- .../src/measurements/MeasurementResults.hpp | 15 +++++++++++++++ .../test-src/measurements/MeasurementsTest.cpp | 12 ++++++------ 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/alib2algo/src/measurements/MeasurementResults.cpp b/alib2algo/src/measurements/MeasurementResults.cpp index 01ea0d03e5..dfd9d5a50d 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 4a7dd5f450..56b6653426 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 9bc30fc45e..59f8ca8383 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; } -- GitLab