From: 박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 Date: Wed, 18 Jul 2018 23:25:32 +0000 (+0900) Subject: [nest] Add 'AddNode' class (#701) X-Git-Tag: nncc_backup~2388 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e659dd58d602ec5fefac53dd996b69e11be1e790;p=platform%2Fcore%2Fml%2Fnnfw.git [nest] Add 'AddNode' class (#701) This commit adds 'AddNode' class under 'nest::expr' namespace, which expressions the addition of two arithmetic values. Signed-off-by: Jonghyun Park --- diff --git a/contrib/nest/include/nest/Expr.h b/contrib/nest/include/nest/Expr.h index aef73b3..9fc09cb 100644 --- a/contrib/nest/include/nest/Expr.h +++ b/contrib/nest/include/nest/Expr.h @@ -6,6 +6,7 @@ #include "nest/expr/VarNode.h" #include "nest/expr/DerefNode.h" +#include "nest/expr/AddNode.h" #include diff --git a/contrib/nest/include/nest/expr/AddNode.h b/contrib/nest/include/nest/expr/AddNode.h new file mode 100644 index 0000000..b15d344 --- /dev/null +++ b/contrib/nest/include/nest/expr/AddNode.h @@ -0,0 +1,37 @@ +#ifndef __NEST_EXPR_ADD_NODE_H__ +#define __NEST_EXPR_ADD_NODE_H__ + +#include "nest/expr/Node.h" + +#include + +namespace nest +{ +namespace expr +{ + +class AddNode final : public Node +{ +public: + AddNode(const std::shared_ptr &lhs, const std::shared_ptr &rhs) + : _lhs{lhs}, _rhs{rhs} + { + // DO NOTHING + } + +public: + const AddNode *asAdd(void) const override { return this; } + +public: + const std::shared_ptr &lhs(void) const { return _lhs; } + const std::shared_ptr &rhs(void) const { return _rhs; } + +private: + std::shared_ptr const _lhs; + std::shared_ptr const _rhs; +}; + +} // namespace expr +} // namespace nest + +#endif // __NEST_EXPR_ADD_NODE_H__ diff --git a/contrib/nest/include/nest/expr/Node.def b/contrib/nest/include/nest/expr/Node.def index 1c4dd21..baf9aaa 100644 --- a/contrib/nest/include/nest/expr/Node.def +++ b/contrib/nest/include/nest/expr/Node.def @@ -5,3 +5,4 @@ // EXPR(Tag) EXPR(Var) EXPR(Deref) +EXPR(Add) diff --git a/contrib/nest/src/expr/AddNode.test.cpp b/contrib/nest/src/expr/AddNode.test.cpp new file mode 100644 index 0000000..0b2c778 --- /dev/null +++ b/contrib/nest/src/expr/AddNode.test.cpp @@ -0,0 +1,27 @@ +#include "nest/expr/AddNode.h" + +#include + +#include + +namespace +{ +struct DummyNode final : public nest::expr::Node +{ +}; +} + +TEST(ADD_NODE, cast) +{ + auto left = std::make_shared(); + auto right = std::make_shared(); + + auto derived = std::make_shared(left, right); + std::shared_ptr base = derived; + + ASSERT_NE(derived.get(), nullptr); + ASSERT_EQ(base->asAdd(), derived.get()); + + ASSERT_EQ(derived->lhs().get(), left.get()); + ASSERT_EQ(derived->rhs().get(), right.get()); +}