From: 박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 Date: Fri, 3 Aug 2018 02:01:28 +0000 (+0900) Subject: [coco] Allow iteration over instrs in a const block (#883) X-Git-Tag: nncc_backup~2265 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=eae6397d975d80bc9aaa62646cbd473e8065073a;p=platform%2Fcore%2Fml%2Fnnfw.git [coco] Allow iteration over instrs in a const block (#883) Currently, users cannot invoke 'Block::instr' method for non-const Block objects. Signed-off-by: Jonghyun Park --- diff --git a/contrib/coco/core/include/coco/IR/Block.h b/contrib/coco/core/include/coco/IR/Block.h index 1f95aa3..4bce989 100644 --- a/contrib/coco/core/include/coco/IR/Block.h +++ b/contrib/coco/core/include/coco/IR/Block.h @@ -33,6 +33,7 @@ public: public: InstrList *instr(void) { return &_instr; } + const InstrList *instr(void) const { return &_instr; } private: DLinkedList::Head _instr; diff --git a/contrib/coco/core/src/IR/Module.test.cpp b/contrib/coco/core/src/IR/Module.test.cpp index 4ec3739..a731037 100644 --- a/contrib/coco/core/src/IR/Module.test.cpp +++ b/contrib/coco/core/src/IR/Module.test.cpp @@ -87,3 +87,19 @@ TEST(IR_MODULE, append_two_instrs) ASSERT_EQ(ins_2->prev(), ins_1); ASSERT_EQ(ins_2->next(), nullptr); } + +TEST(IR_MODULE, iterate_constant_block) +{ + auto m = coco::Module::create(); + auto blk = m->entity()->block()->create(); + auto ins_1 = m->entity()->instr()->create(); + auto ins_2 = m->entity()->instr()->create(); + + blk->instr()->append(ins_1); + blk->instr()->append(ins_2); + + const coco::Block *immutable_blk = blk; + + ASSERT_EQ(blk->instr()->head(), ins_1); + ASSERT_EQ(blk->instr()->head()->next(), ins_2); +}