| // |
| // Copyright © 2017 Arm Ltd. All rights reserved. |
| // SPDX-License-Identifier: MIT |
| // |
| |
| #pragma once |
| |
| #include <ostream> |
| #include <vector> |
| #include <memory> |
| |
| namespace armnn |
| { |
| |
| class DotBase |
| { |
| public: |
| explicit DotBase(std::ostream& stream) |
| : m_Stream(stream) {} |
| |
| std::ostream& GetStream() { return m_Stream; } |
| |
| private: |
| std::ostream& m_Stream; |
| }; |
| |
| class HtmlSection : public DotBase |
| { |
| public: |
| explicit HtmlSection(std::ostream& stream) |
| : DotBase(stream) { GetStream() << "<";} |
| ~HtmlSection() { GetStream() << ">"; } |
| }; |
| |
| class HtmlSimpleTag : public DotBase |
| { |
| public: |
| explicit HtmlSimpleTag(std::ostream& stream, const char* name) |
| : DotBase(stream) |
| , m_Name(name){ GetStream() << "<" << m_Name << ">"; } |
| ~HtmlSimpleTag() { GetStream() << "</" << m_Name << ">"; } |
| |
| private: |
| const char* m_Name; |
| }; |
| |
| class HtmlBold : public HtmlSimpleTag |
| { |
| public: |
| explicit HtmlBold(std::ostream &stream) |
| : HtmlSimpleTag(stream, "B") {} |
| }; |
| |
| class HtmlFont : public DotBase |
| { |
| public: |
| explicit HtmlFont(std::ostream& stream, int fontSize, const char* color, const char* face); |
| explicit HtmlFont(std::ostream& stream); |
| ~HtmlFont(); |
| }; |
| |
| class DotAttributeSet : public DotBase |
| { |
| public: |
| explicit DotAttributeSet(std::ostream& stream); |
| ~DotAttributeSet(); |
| |
| DotAttributeSet & AddAttribute(const std::string& name, const std::stringstream& value); |
| DotAttributeSet & AddAttribute(const std::string& name, int value); |
| DotAttributeSet & AddAttribute(const std::string& name, const std::string& value); |
| private: |
| std::vector<std::string> m_Attributes; |
| }; |
| |
| class DotEdge : public DotBase |
| { |
| public: |
| explicit DotEdge(std::ostream& stream, unsigned int fromNodeId, unsigned int toNodeId); |
| ~DotEdge(); |
| |
| DotAttributeSet& GetAttributeSet() { return *m_Attributes.get(); } |
| private: |
| std::unique_ptr<DotAttributeSet> m_Attributes; |
| }; |
| |
| class NodeContent : public DotBase |
| { |
| public: |
| explicit NodeContent(std::ostream& stream); |
| NodeContent & SetName(const std::string & name); |
| NodeContent & AddContent(const std::string & content); |
| |
| ~NodeContent(); |
| private: |
| std::string m_Name; |
| std::vector<std::string> m_Contents; |
| }; |
| |
| class DotNode : public DotBase |
| { |
| public: |
| explicit DotNode(std::ostream& stream, unsigned int nodeId, const char* label); |
| ~DotNode(); |
| |
| NodeContent& GetContents() { return *m_Contents.get(); } |
| DotAttributeSet& GetAttributeSet() { return *m_Attributes.get(); } |
| private: |
| std::unique_ptr<NodeContent> m_Contents; |
| std::unique_ptr<DotAttributeSet> m_Attributes; |
| }; |
| |
| class DotDefaults : public DotBase |
| { |
| public: |
| explicit DotDefaults(std::ostream& stream, const char* type); |
| ~DotDefaults(); |
| |
| DotAttributeSet& GetAttributeSet() { return *m_Attributes.get(); } |
| private: |
| std::unique_ptr<DotAttributeSet> m_Attributes; |
| }; |
| |
| class DotGraph : public DotBase |
| { |
| public: |
| explicit DotGraph(std::ostream& stream, const char* name); |
| ~DotGraph(); |
| private: |
| }; |
| |
| } //namespace armnn |