From: 박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 Date: Mon, 8 Oct 2018 04:53:36 +0000 (+0900) Subject: [coco] Automatically generate Op create methods (#1774) X-Git-Tag: nncc_backup~1609 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=109e061a1912c0affc9f80f0cb55b126a271b83d;p=platform%2Fcore%2Fml%2Fnnfw.git [coco] Automatically generate Op create methods (#1774) With this commit, OpManage::create method for each Op is automatically generated from Op.lst. Signed-off-by: Jonghyun Park --- diff --git a/contrib/coco/core/src/IR/OpManager.cpp b/contrib/coco/core/src/IR/OpManager.cpp index 13e33cf..5f8965c 100644 --- a/contrib/coco/core/src/IR/OpManager.cpp +++ b/contrib/coco/core/src/IR/OpManager.cpp @@ -25,47 +25,18 @@ using nncc::foundation::make_unique; namespace coco { -template <> Load *OpManager::create(void) -{ - auto op = make_unique(); - modulize(op.get()); - return take(std::move(op)); -} - -template <> Conv2D *OpManager::create(void) -{ - auto op = make_unique(); - modulize(op.get()); - return take(std::move(op)); -} - -template <> MaxPool2D *OpManager::create(void) -{ - auto op = make_unique(); - modulize(op.get()); - return take(std::move(op)); -} - -template <> AvgPool2D *OpManager::create(void) -{ - auto op = make_unique(); - modulize(op.get()); - return take(std::move(op)); -} - -template <> ReLU *OpManager::create(void) -{ - auto op = make_unique(); - modulize(op.get()); - return take(std::move(op)); -} - -template <> PadF *OpManager::create(void) -{ - auto op = make_unique(); - modulize(op.get()); - return take(std::move(op)); -} +// +// Each Op class SHOULD be default constructible +// +#define OP(Name) \ + template <> Name *OpManager::create(void) \ + { \ + auto op = make_unique(); \ + modulize(op.get()); \ + return take(std::move(op)); \ + } +#include "coco/IR/Op.lst" +#undef OP void OpManager::destroy(Op *op) {