aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/JsonPrinter.hpp
diff options
context:
space:
mode:
authortelsoa01 <telmo.soares@arm.com>2018-08-31 09:22:23 +0100
committertelsoa01 <telmo.soares@arm.com>2018-08-31 09:22:23 +0100
commitc577f2c6a3b4ddb6ba87a882723c53a248afbeba (patch)
treebd7d4c148df27f8be6649d313efb24f536b7cf34 /src/armnn/JsonPrinter.hpp
parent4c7098bfeab1ffe1cdc77f6c15548d3e73274746 (diff)
downloadarmnn-c577f2c6a3b4ddb6ba87a882723c53a248afbeba.tar.gz
Release 18.08
Diffstat (limited to 'src/armnn/JsonPrinter.hpp')
-rw-r--r--src/armnn/JsonPrinter.hpp82
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