diff options
author | telsoa01 <telmo.soares@arm.com> | 2018-08-31 09:22:23 +0100 |
---|---|---|
committer | telsoa01 <telmo.soares@arm.com> | 2018-08-31 09:22:23 +0100 |
commit | c577f2c6a3b4ddb6ba87a882723c53a248afbeba (patch) | |
tree | bd7d4c148df27f8be6649d313efb24f536b7cf34 /src/armnn/JsonPrinter.hpp | |
parent | 4c7098bfeab1ffe1cdc77f6c15548d3e73274746 (diff) | |
download | armnn-c577f2c6a3b4ddb6ba87a882723c53a248afbeba.tar.gz |
Release 18.08
Diffstat (limited to 'src/armnn/JsonPrinter.hpp')
-rw-r--r-- | src/armnn/JsonPrinter.hpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/armnn/JsonPrinter.hpp b/src/armnn/JsonPrinter.hpp new file mode 100644 index 0000000000..1bf9e3175b --- /dev/null +++ b/src/armnn/JsonPrinter.hpp @@ -0,0 +1,82 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// See LICENSE file in the project root for full license information. +// + +#pragma once + +#include <ostream> +#include <string.h> +#include <map> + +#include "Instrument.hpp" + +namespace armnn +{ + +struct JsonChildObject +{ + JsonChildObject(const std::string& label) + : m_Label(label), m_Unit(Measurement::Unit::TIME_MS) + {} + JsonChildObject(const JsonChildObject&) = default; + + void AddMeasurement(const double measurement) + { + m_Measurements.push_back(measurement); + } + + void AddChild(const JsonChildObject& childObject) + { + m_Children.push_back(childObject); + } + + JsonChildObject GetChild(const unsigned int index) + { + return m_Children[index]; + } + + void SetUnit(const Measurement::Unit unit) + { + m_Unit = unit; + } + + ~JsonChildObject() = default; + + std::string m_Label; + Measurement::Unit m_Unit; + std::vector<double> m_Measurements; + std::vector<JsonChildObject> m_Children; + +private: + JsonChildObject() = delete; +}; + +class JsonPrinter +{ +public: + void PrintJsonChildObject(const JsonChildObject& object); + void PrintHeader(); + void PrintArmNNHeader(); + void PrintFooter(); + void PrintSeparator(); + void PrintNewLine(); + void PrintLabel(const std::string& label); + void PrintUnit(armnn::Measurement::Unit unit); + void PrintMeasurementsList(const std::vector<double>& measurementsVector); + +public: + JsonPrinter(std::ostream &outputStream) + : m_OutputStream(outputStream), m_NumTabs(0) + {} + +private: + void PrintTabs(); + void DecrementNumberOfTabs(); + void IncrementNumberOfTabs(); + + std::ostream &m_OutputStream; + unsigned int m_NumTabs; +}; + +} // namespace armnn
\ No newline at end of file |