ArmNN
 25.11
Loading...
Searching...
No Matches
DotSerializer.hpp
Go to the documentation of this file.
1//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include <armnn/Types.hpp>
9
10#include <ostream>
11#include <vector>
12#include <memory>
13
14namespace armnn
15{
16
18{
19public:
20 explicit DotBase(std::ostream& stream)
21 : m_Stream(stream) {}
22
23 std::ostream& GetStream() { return m_Stream; }
24
25private:
26 std::ostream& m_Stream;
27};
28
29class HtmlSection : public DotBase
30{
31public:
32 explicit HtmlSection(std::ostream& stream)
33 : DotBase(stream) { GetStream() << "<";}
34 ~HtmlSection() { GetStream() << ">"; }
35};
36
37class HtmlSimpleTag : public DotBase
38{
39public:
40 explicit HtmlSimpleTag(std::ostream& stream, const char* name)
41 : DotBase(stream)
42 , m_Name(name){ GetStream() << "<" << m_Name << ">"; }
43 ~HtmlSimpleTag() { GetStream() << "</" << m_Name << ">"; }
44
45private:
46 const char* m_Name;
47};
48
49class HtmlBold : public HtmlSimpleTag
50{
51public:
52 explicit HtmlBold(std::ostream &stream)
53 : HtmlSimpleTag(stream, "B") {}
54};
55
56class HtmlFont : public DotBase
57{
58public:
59 explicit HtmlFont(std::ostream& stream, int fontSize, const char* color, const char* face);
60 explicit HtmlFont(std::ostream& stream);
61 ~HtmlFont();
62};
63
65{
66public:
67 explicit DotAttributeSet(std::ostream& stream);
69
70 DotAttributeSet & AddAttribute(const std::string& name, const std::stringstream& value);
71 DotAttributeSet & AddAttribute(const std::string& name, int value);
72 DotAttributeSet & AddAttribute(const std::string& name, const std::string& value);
73private:
74 std::vector<std::string> m_Attributes;
75};
76
77class DotEdge : public DotBase
78{
79public:
80 explicit DotEdge(std::ostream& stream, LayerGuid fromNodeId, LayerGuid toNodeId);
81 ~DotEdge();
82
83 DotAttributeSet& GetAttributeSet() { return *m_Attributes.get(); }
84private:
85 std::unique_ptr<DotAttributeSet> m_Attributes;
86};
87
88class NodeContent : public DotBase
89{
90public:
91 explicit NodeContent(std::ostream& stream);
92 NodeContent & SetName(const std::string & name);
93 NodeContent & AddContent(const std::string & content);
94
96private:
97 std::string m_Name;
98 std::vector<std::string> m_Contents;
99};
100
101class DotNode : public DotBase
102{
103public:
104 explicit DotNode(std::ostream& stream, LayerGuid nodeId, const char* label);
105 ~DotNode();
106
107 NodeContent& GetContents() { return *m_Contents.get(); }
108 DotAttributeSet& GetAttributeSet() { return *m_Attributes.get(); }
109private:
110 std::unique_ptr<NodeContent> m_Contents;
111 std::unique_ptr<DotAttributeSet> m_Attributes;
112};
113
114class DotDefaults : public DotBase
115{
116public:
117 explicit DotDefaults(std::ostream& stream, const char* type);
118 ~DotDefaults();
119
120 DotAttributeSet& GetAttributeSet() { return *m_Attributes.get(); }
121private:
122 std::unique_ptr<DotAttributeSet> m_Attributes;
123};
124
125class DotGraph : public DotBase
126{
127public:
128 explicit DotGraph(std::ostream& stream, const char* name);
129 ~DotGraph();
130private:
131};
132
133} //namespace armnn
arm::pipe::ProfilingGuid LayerGuid
Define LayerGuid type.
Definition Types.hpp:26
DotAttributeSet(std::ostream &stream)
DotAttributeSet & AddAttribute(const std::string &name, const std::stringstream &value)
std::ostream & GetStream()
DotBase(std::ostream &stream)
DotAttributeSet & GetAttributeSet()
DotDefaults(std::ostream &stream, const char *type)
DotAttributeSet & GetAttributeSet()
DotEdge(std::ostream &stream, LayerGuid fromNodeId, LayerGuid toNodeId)
DotGraph(std::ostream &stream, const char *name)
DotAttributeSet & GetAttributeSet()
DotNode(std::ostream &stream, LayerGuid nodeId, const char *label)
NodeContent & GetContents()
HtmlBold(std::ostream &stream)
HtmlFont(std::ostream &stream, int fontSize, const char *color, const char *face)
HtmlSection(std::ostream &stream)
HtmlSimpleTag(std::ostream &stream, const char *name)
NodeContent & AddContent(const std::string &content)
NodeContent & SetName(const std::string &name)
NodeContent(std::ostream &stream)
Copyright (c) 2021 ARM Limited and Contributors.