Skip to content
Snippets Groups Projects
Commit b4e0c3ee authored by Radovan Červený's avatar Radovan Červený
Browse files

refactored the xml interface a little bit

parent c7368358
No related branches found
No related tags found
1 merge request!14BP_cervera3 - new measurements
......@@ -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 );
 
......
......@@ -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 & );
......
......@@ -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;
}
......
......@@ -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;
......
......@@ -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 );
}
......
......@@ -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 );
}
......
......@@ -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 ( ) );
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment