xref: /aosp_15_r20/external/armnn/src/armnn/JsonUtils.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1 //
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 
13 namespace armnn
14 {
15 
16 class JsonUtils
17 {
18 public:
JsonUtils(std::ostream & outputStream)19     JsonUtils(std::ostream& outputStream)
20         : m_NumTabs(0), m_OutputStream(outputStream)
21     {}
22 
PrintTabs()23     void PrintTabs()
24     {
25         unsigned int numTabs = m_NumTabs;
26         while ( numTabs-- > 0 )
27         {
28             m_OutputStream << "\t";
29         }
30     }
31 
DecrementNumberOfTabs()32     void DecrementNumberOfTabs()
33     {
34         if ( m_NumTabs == 0 )
35         {
36             return;
37         }
38         --m_NumTabs;
39     }
40 
IncrementNumberOfTabs()41     void IncrementNumberOfTabs()
42     {
43         ++m_NumTabs;
44     }
45 
PrintNewLine()46     void PrintNewLine()
47     {
48         m_OutputStream << std::endl;
49     }
50 
PrintFooter()51     void PrintFooter()
52     {
53         DecrementNumberOfTabs();
54         PrintTabs();
55         m_OutputStream << "}";
56     }
57 
PrintHeader()58     void PrintHeader()
59     {
60         m_OutputStream << "{" << std::endl;
61         IncrementNumberOfTabs();
62     }
63 
PrintArmNNHeader()64     void PrintArmNNHeader()
65     {
66         PrintTabs();
67         m_OutputStream << R"("ArmNN": {)" << std::endl;
68         IncrementNumberOfTabs();
69     }
PrintSeparator()70     void PrintSeparator()
71     {
72         m_OutputStream << ",";
73     }
74 
75 private:
76     unsigned int m_NumTabs;
77     std::ostream& m_OutputStream;
78 };
79 
80 } // namespace armnn