[nest] Override 'operator*' over expressions (#720)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Thu, 19 Jul 2018 10:11:09 +0000 (19:11 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Thu, 19 Jul 2018 10:11:09 +0000 (19:11 +0900)
This commit overrides 'operator*' over two nest expressions to make it
easy to build nest expressions.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/nest/include/nest/Expr.h
contrib/nest/src/Expr.cpp
contrib/nest/src/Expr.test.cpp

index 8fef2b1..d23137b 100644 (file)
@@ -7,6 +7,7 @@
 #include "nest/expr/VarNode.h"
 #include "nest/expr/DerefNode.h"
 #include "nest/expr/AddNode.h"
+#include "nest/expr/MulNode.h"
 
 #include <memory>
 
@@ -18,5 +19,6 @@ using Expr = std::shared_ptr<nest::expr::Node>;
 } // namespace nest
 
 nest::Expr operator+(const nest::Expr &, const nest::Expr &);
+nest::Expr operator*(const nest::Expr &, const nest::Expr &);
 
 #endif // __NEST_EXPR_H__
index 46e9b41..790fe92 100644 (file)
@@ -4,3 +4,8 @@ nest::Expr operator+(const nest::Expr &lhs, const nest::Expr &rhs)
 {
   return std::make_shared<nest::expr::AddNode>(lhs, rhs);
 }
+
+nest::Expr operator*(const nest::Expr &lhs, const nest::Expr &rhs)
+{
+  return std::make_shared<nest::expr::MulNode>(lhs, rhs);
+}
index de469ca..ad36131 100644 (file)
@@ -25,3 +25,18 @@ TEST(EXPR, operator_sum)
   ASSERT_EQ(add->lhs().get(), left.get());
   ASSERT_EQ(add->rhs().get(), right.get());
 }
+
+TEST(EXPR, operator_mul)
+{
+  auto left = std::make_shared<DummyNode>();
+  auto right = std::make_shared<DummyNode>();
+
+  auto expr = left * right;
+
+  ASSERT_NE(expr->asMul(), nullptr);
+
+  auto add = expr->asMul();
+
+  ASSERT_EQ(add->lhs().get(), left.get());
+  ASSERT_EQ(add->rhs().get(), right.get());
+}