From b4e0c3ee05216c57b20bbc84660598ab743a77df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radovan=20=C4=8Cerven=C3=BD?= <radovan.cerveny@gmail.com> Date: Thu, 4 Feb 2016 03:01:56 +0100 Subject: [PATCH] refactored the xml interface a little bit --- .../src/measurements/MeasurementFrame.cpp | 18 +++++++++++------- .../src/measurements/MeasurementFrames.hpp | 9 +++------ .../src/measurements/MeasurementResults.cpp | 7 +++---- .../src/measurements/MeasurementResults.hpp | 2 +- alib2algo/src/measurements/MemoryDataFrame.cpp | 10 ++++++---- alib2algo/src/measurements/TimeDataFrame.cpp | 8 +++++--- .../test-src/measurements/MeasurementsTest.cpp | 4 ++-- 7 files changed, 31 insertions(+), 27 deletions(-) diff --git a/alib2algo/src/measurements/MeasurementFrame.cpp b/alib2algo/src/measurements/MeasurementFrame.cpp index 248034122f..042ed6b06e 100644 --- a/alib2algo/src/measurements/MeasurementFrame.cpp +++ b/alib2algo/src/measurements/MeasurementFrame.cpp @@ -10,22 +10,26 @@ namespace measurements { MeasurementFrame::MeasurementFrame ( measurements::stealth_string name, measurements::Type type, unsigned parent_idx ) : name ( std::move ( name ) ), type ( type ), parent_idx ( parent_idx ), time ( ), memory ( ) { } -void MeasurementFrame::to_xml_tokens ( std::deque < sax::Token > & tokens, const measurements::stealth_vector < MeasurementFrame > & frames ) const { +void MeasurementFrame::xml_tokens ( std::deque < sax::Token > & tokens, unsigned idx, const measurements::stealth_vector < MeasurementFrame > & frames ) { + const MeasurementFrame & frame = frames[idx]; + tokens.emplace_back ( "MeasurementFrame", sax::Token::TokenType::START_ELEMENT ); tokens.emplace_back ( "Name", sax::Token::TokenType::START_ELEMENT ); - tokens.emplace_back ( measurements::to_string ( name ), sax::Token::TokenType::CHARACTER ); + tokens.emplace_back ( measurements::to_string ( frame.name ), sax::Token::TokenType::CHARACTER ); tokens.emplace_back ( "Name", sax::Token::TokenType::END_ELEMENT ); tokens.emplace_back ( "Type", sax::Token::TokenType::START_ELEMENT ); - tokens.emplace_back ( measurements::to_string ( type ), sax::Token::TokenType::CHARACTER ); + tokens.emplace_back ( measurements::to_string ( frame.type ), sax::Token::TokenType::CHARACTER ); tokens.emplace_back ( "Type", sax::Token::TokenType::END_ELEMENT ); - time.to_xml_tokens ( tokens ); - memory.to_xml_tokens ( tokens ); + if ( frame.type != measurements::Type::ROOT ) { + TimeDataFrame::xml_tokens ( tokens, idx, frames ); + MemoryDataFrame::xml_tokens ( tokens, idx, frames ); + } tokens.emplace_back ( "SubFrames", sax::Token::TokenType::START_ELEMENT ); - for ( unsigned sub_idx : sub_idxs ) - frames[sub_idx].to_xml_tokens ( tokens, frames ); + for ( unsigned sub_idx : frame.sub_idxs ) + xml_tokens ( tokens, sub_idx, frames ); tokens.emplace_back ( "SubFrames", sax::Token::TokenType::END_ELEMENT ); diff --git a/alib2algo/src/measurements/MeasurementFrames.hpp b/alib2algo/src/measurements/MeasurementFrames.hpp index 9112432a89..40c869fe1e 100644 --- a/alib2algo/src/measurements/MeasurementFrames.hpp +++ b/alib2algo/src/measurements/MeasurementFrames.hpp @@ -31,11 +31,10 @@ struct MemoryDataFrame { size_t current_heap_usage; - void to_xml_tokens ( std::deque < sax::Token > & ) const; - static void init ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); static void update ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); static void hint ( unsigned, measurements::stealth_vector < MeasurementFrame > &, MemoryHint ); + static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & ); }; std::ostream & operator <<( std::ostream &, const MemoryDataFrame & ); @@ -46,10 +45,9 @@ struct TimeDataFrame { std::chrono::microseconds duration; std::chrono::microseconds real_duration; - void to_xml_tokens ( std::deque < sax::Token > & ) const; - static void init ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); static void update ( unsigned, measurements::stealth_vector < MeasurementFrame > & ); + static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & ); }; std::ostream & operator <<( std::ostream &, const TimeDataFrame & ); @@ -64,9 +62,8 @@ struct MeasurementFrame { TimeDataFrame time; MemoryDataFrame memory; - void to_xml_tokens ( std::deque < sax::Token > &, const measurements::stealth_vector < MeasurementFrame > & ) const; - MeasurementFrame ( measurements::stealth_string, measurements::Type, unsigned ); + static void xml_tokens ( std::deque < sax::Token > &, unsigned, const measurements::stealth_vector < MeasurementFrame > & ); }; std::ostream & operator <<( std::ostream &, const MeasurementFrame & ); diff --git a/alib2algo/src/measurements/MeasurementResults.cpp b/alib2algo/src/measurements/MeasurementResults.cpp index 347538dea7..01ea0d03e5 100644 --- a/alib2algo/src/measurements/MeasurementResults.cpp +++ b/alib2algo/src/measurements/MeasurementResults.cpp @@ -8,14 +8,13 @@ namespace measurements { MeasurementResults::MeasurementResults ( const measurements::stealth_vector < MeasurementFrame > & frames ) : frames ( frames ) { } -std::deque < sax::Token > MeasurementResults::to_xml_tokens ( ) const { +std::deque < sax::Token > MeasurementResults::xml_tokens ( ) const { std::deque < sax::Token > tokens; tokens.emplace_back ( "MeasurementResults", sax::Token::TokenType::START_ELEMENT ); - for(unsigned sub_idx : frames[0].sub_idxs) { - frames[sub_idx].to_xml_tokens ( tokens, frames ); - } + MeasurementFrame::xml_tokens ( tokens, 0, frames ); + tokens.emplace_back ( "MeasurementResults", sax::Token::TokenType::END_ELEMENT ); return tokens; } diff --git a/alib2algo/src/measurements/MeasurementResults.hpp b/alib2algo/src/measurements/MeasurementResults.hpp index ef38fcc193..4a7dd5f450 100644 --- a/alib2algo/src/measurements/MeasurementResults.hpp +++ b/alib2algo/src/measurements/MeasurementResults.hpp @@ -20,7 +20,7 @@ struct MeasurementResults { void print_as_list ( std::ostream & ) const; void print_as_tree ( std::ostream & ) const; - std::deque < sax::Token > to_xml_tokens ( ) const; + std::deque < sax::Token > xml_tokens ( ) const; private: void print_as_list ( std::ostream &, unsigned ) const; diff --git a/alib2algo/src/measurements/MemoryDataFrame.cpp b/alib2algo/src/measurements/MemoryDataFrame.cpp index 5a0659dce2..b15685a496 100644 --- a/alib2algo/src/measurements/MemoryDataFrame.cpp +++ b/alib2algo/src/measurements/MemoryDataFrame.cpp @@ -52,16 +52,18 @@ void MemoryDataFrame::hint ( unsigned frame_idx, measurements::stealth_vector < } } -void MemoryDataFrame::to_xml_tokens ( std::deque < sax::Token > & tokens ) const { +void MemoryDataFrame::xml_tokens ( std::deque < sax::Token > & tokens, unsigned idx, const measurements::stealth_vector < MeasurementFrame > & frames ) { + const MemoryDataFrame & frame = frames[idx].memory; + tokens.emplace_back ( "MemoryData", sax::Token::TokenType::START_ELEMENT ); tokens.emplace_back ( "StartHeapUsage", sax::Token::TokenType::START_ELEMENT ); - tokens.emplace_back ( std::to_string ( start_heap_usage ), sax::Token::TokenType::CHARACTER ); + tokens.emplace_back ( std::to_string ( frame.start_heap_usage ), sax::Token::TokenType::CHARACTER ); tokens.emplace_back ( "StartHeapUsage", sax::Token::TokenType::END_ELEMENT ); tokens.emplace_back ( "EndHeapUsage", sax::Token::TokenType::START_ELEMENT ); - tokens.emplace_back ( std::to_string ( end_heap_usage ), sax::Token::TokenType::CHARACTER ); + tokens.emplace_back ( std::to_string ( frame.end_heap_usage ), sax::Token::TokenType::CHARACTER ); tokens.emplace_back ( "EndHeapUsage", sax::Token::TokenType::END_ELEMENT ); tokens.emplace_back ( "HighWatermark", sax::Token::TokenType::START_ELEMENT ); - tokens.emplace_back ( std::to_string ( high_watermark ), sax::Token::TokenType::CHARACTER ); + tokens.emplace_back ( std::to_string ( frame.high_watermark ), sax::Token::TokenType::CHARACTER ); tokens.emplace_back ( "HighWatermark", sax::Token::TokenType::END_ELEMENT ); tokens.emplace_back ( "MemoryData", sax::Token::TokenType::END_ELEMENT ); } diff --git a/alib2algo/src/measurements/TimeDataFrame.cpp b/alib2algo/src/measurements/TimeDataFrame.cpp index cc448d34ef..6965d96b76 100644 --- a/alib2algo/src/measurements/TimeDataFrame.cpp +++ b/alib2algo/src/measurements/TimeDataFrame.cpp @@ -26,13 +26,15 @@ void TimeDataFrame::update ( unsigned frame_idx, measurements::stealth_vector < parent_frame.time.real_duration -= current_frame.time.duration; } -void TimeDataFrame::to_xml_tokens ( std::deque < sax::Token > & tokens ) const { +void TimeDataFrame::xml_tokens ( std::deque < sax::Token > & tokens, unsigned idx, const measurements::stealth_vector < MeasurementFrame > & frames ) { + const TimeDataFrame & frame = frames[idx].time; + tokens.emplace_back ( "TimeData", sax::Token::TokenType::START_ELEMENT ); tokens.emplace_back ( "Duration", sax::Token::TokenType::START_ELEMENT ); - tokens.emplace_back ( std::to_string ( duration.count ( ) ), sax::Token::TokenType::CHARACTER ); + tokens.emplace_back ( std::to_string ( frame.duration.count ( ) ), sax::Token::TokenType::CHARACTER ); tokens.emplace_back ( "Duration", sax::Token::TokenType::END_ELEMENT ); tokens.emplace_back ( "RealDuration", sax::Token::TokenType::START_ELEMENT ); - tokens.emplace_back ( std::to_string ( real_duration.count ( ) ), sax::Token::TokenType::CHARACTER ); + tokens.emplace_back ( std::to_string ( frame.real_duration.count ( ) ), sax::Token::TokenType::CHARACTER ); tokens.emplace_back ( "RealDuration", sax::Token::TokenType::END_ELEMENT ); tokens.emplace_back ( "TimeData", sax::Token::TokenType::END_ELEMENT ); } diff --git a/alib2algo/test-src/measurements/MeasurementsTest.cpp b/alib2algo/test-src/measurements/MeasurementsTest.cpp index b9e805c9a0..9bc30fc45e 100644 --- a/alib2algo/test-src/measurements/MeasurementsTest.cpp +++ b/alib2algo/test-src/measurements/MeasurementsTest.cpp @@ -60,7 +60,7 @@ void MeasurementsTest::testTimeMeasurements ( ) { std::cout << measurements::results ( ) << std::endl; - sax::SaxComposeInterface::printStdout ( measurements::results ( ).to_xml_tokens ( ) ); + sax::SaxComposeInterface::printStdout ( measurements::results ( ).xml_tokens ( ) ); } void MeasurementsTest::testMemoryMeasurements ( ) { @@ -82,5 +82,5 @@ void MeasurementsTest::testMemoryMeasurements ( ) { std::cout << measurements::results ( ) << std::endl; - sax::SaxComposeInterface::printStdout ( measurements::results ( ).to_xml_tokens ( ) ); + sax::SaxComposeInterface::printStdout ( measurements::results ( ).xml_tokens ( ) ); } -- GitLab