From: 박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 Date: Tue, 17 Jul 2018 07:53:15 +0000 (+0900) Subject: [nest] Add 'DerefNode' class (#685) X-Git-Tag: nncc_backup~2400 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c5c4b167f654e9d83db5e1299288e596c6c9be81;p=platform%2Fcore%2Fml%2Fnnfw.git [nest] Add 'DerefNode' class (#685) This commit adds 'DerefNode' class under nest::expr namesapce. 'DerefNode' class serves as an internal representation of the dereference expression (read a value from a domain with specific indicies). Signed-off-by: Jonghyun Park --- diff --git a/contrib/nest/include/nest/Expr.h b/contrib/nest/include/nest/Expr.h index 66b2e43..aef73b3 100644 --- a/contrib/nest/include/nest/Expr.h +++ b/contrib/nest/include/nest/Expr.h @@ -5,6 +5,7 @@ #include "nest/expr/Visitor.h" #include "nest/expr/VarNode.h" +#include "nest/expr/DerefNode.h" #include diff --git a/contrib/nest/include/nest/expr/DerefNode.h b/contrib/nest/include/nest/expr/DerefNode.h new file mode 100644 index 0000000..c6ef591 --- /dev/null +++ b/contrib/nest/include/nest/expr/DerefNode.h @@ -0,0 +1,38 @@ +#ifndef __NEXT_EXPR_DEREF_NODE_H__ +#define __NEXT_EXPR_DEREF_NODE_H__ + +#include "nest/DomainID.h" + +#include "nest/expr/Subscript.h" + +namespace nest +{ +namespace expr +{ + +class DerefNode final : public Node +{ +public: + template + DerefNode(const DomainID &id, Args &&... indicies) + : _id{id}, _sub{std::forward(indicies)...} + { + // DO NOTHING + } + +public: + const DerefNode *asDeref(void) const override { return this; } + +public: + const DomainID &id(void) const { return _id; } + const Subscript &sub(void) const { return _sub; } + +private: + DomainID const _id; + Subscript const _sub; +}; + +} // namespace expr +} // namespace nest + +#endif // __NEXT_EXPR_DEREF_NODE_H__ diff --git a/contrib/nest/include/nest/expr/Node.def b/contrib/nest/include/nest/expr/Node.def index a2c0a0c..1c4dd21 100644 --- a/contrib/nest/include/nest/expr/Node.def +++ b/contrib/nest/include/nest/expr/Node.def @@ -4,3 +4,4 @@ // EXPR(Tag) EXPR(Var) +EXPR(Deref) diff --git a/contrib/nest/src/expr/DerefNode.test.cpp b/contrib/nest/src/expr/DerefNode.test.cpp new file mode 100644 index 0000000..37543ad --- /dev/null +++ b/contrib/nest/src/expr/DerefNode.test.cpp @@ -0,0 +1,23 @@ +#include "nest/expr/DerefNode.h" + +#include + +#include + +namespace +{ +struct DummyNode final : public nest::expr::Node +{ +}; +} + +TEST(DEREF_NODE, cast) +{ + const nest::DomainID dom_id{0}; + + auto derived = std::make_shared(dom_id, std::make_shared()); + std::shared_ptr base = derived; + + ASSERT_NE(derived.get(), nullptr); + ASSERT_EQ(base->asDeref(), derived.get()); +}