From 109e061a1912c0affc9f80f0cb55b126a271b83d Mon Sep 17 00:00:00 2001 From: =?utf8?q?=EB=B0=95=EC=A2=85=ED=98=84/=EB=8F=99=EC=9E=91=EC=A0=9C?= =?utf8?q?=EC=96=B4Lab=28SR=29/Staff=20Engineer/=EC=82=BC=EC=84=B1?= =?utf8?q?=EC=A0=84=EC=9E=90?= Date: Mon, 8 Oct 2018 13:53:36 +0900 Subject: [PATCH] [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 --- contrib/coco/core/src/IR/OpManager.cpp | 53 ++++++++-------------------------- 1 file changed, 12 insertions(+), 41 deletions(-) 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) { -- 2.7.4