blob: 44fa7edc85888ffb86f0a34cb78bf589c0b5671a [file] [log] [blame]
Keith Davis554fa092021-07-20 11:25:22 +01001//
2// Copyright © 2021 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include <iomanip>
9
10#include "armnn/Types.hpp"
11#include "armnn/backends/WorkloadInfo.hpp"
12
13namespace armnn
14{
15
16class JsonUtils
17{
18public:
19 JsonUtils(std::ostream& outputStream)
20 : m_NumTabs(0), m_OutputStream(outputStream)
21 {}
22
23 void PrintTabs()
24 {
25 unsigned int numTabs = m_NumTabs;
26 while ( numTabs-- > 0 )
27 {
28 m_OutputStream << "\t";
29 }
30 }
31
32 void DecrementNumberOfTabs()
33 {
34 if ( m_NumTabs == 0 )
35 {
36 return;
37 }
38 --m_NumTabs;
39 }
40
41 void IncrementNumberOfTabs()
42 {
43 ++m_NumTabs;
44 }
45
46 void PrintNewLine()
47 {
48 m_OutputStream << std::endl;
49 }
50
51 void PrintFooter()
52 {
53 DecrementNumberOfTabs();
54 PrintTabs();
55 m_OutputStream << "}";
56 }
57
58 void PrintHeader()
59 {
60 m_OutputStream << "{" << std::endl;
61 IncrementNumberOfTabs();
62 }
63
64 void PrintArmNNHeader()
65 {
66 PrintTabs();
67 m_OutputStream << R"("ArmNN": {)" << std::endl;
68 IncrementNumberOfTabs();
69 }
70 void PrintSeparator()
71 {
72 m_OutputStream << ",";
73 }
74
75private:
76 unsigned int m_NumTabs;
77 std::ostream& m_OutputStream;
78};
79
80} // namespace armnn