From 43707d7ba0713ab918eedb00edf2a1ad40f35025 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/On-Device=20Lab=28SR=29/Staff?= =?utf8?q?=20Engineer/=EC=82=BC=EC=84=B1=EC=A0=84=EC=9E=90?= Date: Mon, 29 Jul 2019 20:13:41 +0900 Subject: [PATCH] [loco] Introduce const Graph getters (#5974) Now, Graph provides const "nodes", "inputs", "outputs" methods. Signed-off-by: Jonghyun Park --- compiler/loco/include/loco/IR/Graph.h | 3 +++ compiler/loco/src/IR/Graph.test.cpp | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/compiler/loco/include/loco/IR/Graph.h b/compiler/loco/include/loco/IR/Graph.h index 269c362..a3a9956 100644 --- a/compiler/loco/include/loco/IR/Graph.h +++ b/compiler/loco/include/loco/IR/Graph.h @@ -200,8 +200,11 @@ public: public: NodeContext *nodes(void) { return &_node_ctx; } + const NodeContext *nodes(void) const { return &_node_ctx; } InputContext *inputs(void) { return &_input_ctx; } + const InputContext *inputs(void) const { return &_input_ctx; } OutputContext *outputs(void) { return &_output_ctx; } + const OutputContext *outputs(void) const { return &_output_ctx; } private: NodeContext _node_ctx; diff --git a/compiler/loco/src/IR/Graph.test.cpp b/compiler/loco/src/IR/Graph.test.cpp index 636a2bb..db74db1 100644 --- a/compiler/loco/src/IR/Graph.test.cpp +++ b/compiler/loco/src/IR/Graph.test.cpp @@ -127,6 +127,24 @@ TEST(GraphTest, consturctor_with_param_node) ASSERT_THROW(g->nodes()->destroy(test_node), std::invalid_argument); } +TEST(GraphTest, getters_over_const_instance) +{ + auto g = loco::make_graph(); + + auto pull = g->nodes()->create(); + auto push = g->nodes()->create(); + + g->inputs()->create()->node(pull); + g->outputs()->create()->node(push); + + auto ptr = const_cast(g.get()); + + EXPECT_EQ(ptr->nodes()->size(), 2); + EXPECT_EQ(ptr->inputs()->size(), 1); + EXPECT_EQ(ptr->inputs()->at(0)->node(), pull); + EXPECT_EQ(ptr->outputs()->at(0)->node(), push); +} + TEST(GraphTest, graph_node_enumeration) { auto g = loco::make_graph(); -- 2.7.4