Imported Upstream version 1.25.0
[platform/core/ml/nnfw.git] / runtime / onert / core / src / dumper / dot / DotBuilder.cc
1 /*
2  * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include "DotBuilder.h"
18
19 namespace onert
20 {
21 namespace dumper
22 {
23 namespace dot
24 {
25
26 // DotDumper
27 DotBuilder::DotBuilder() {}
28
29 void DotBuilder::update(const Node &node_info)
30 {
31   add(node_info);
32   for (auto &&edge : node_info.out_edges())
33   {
34     addEdge(node_info, *edge);
35   }
36 }
37
38 void DotBuilder::writeDot(std::ostream &os)
39 {
40   os << "digraph D {\n"
41      << _dot.str() << "\n"
42      << "}\n";
43 }
44
45 void DotBuilder::add(const Node &node)
46 {
47   _dot << node.id();
48   std::stringstream ss;
49   _dot << "[";
50   for (auto &&attr : node.attributes())
51   {
52     _dot << attr.first << "=\"" << attr.second << "\" ";
53   }
54   _dot << "];\n";
55 }
56
57 void DotBuilder::addEdge(const Node &node1, const Node &node2)
58 {
59   _dot << node1.id() << " -> " << node2.id() << ";\n";
60 }
61
62 } // namespace dot
63 } // namespace dumper
64 } // namespace onert