![]() |
libsesstype
2.0.0
Library for Session Types programming.
|
00001 #ifndef SESSTYPE__PARAMETERISED__EXPR__SHL_H__ 00002 #define SESSTYPE__PARAMETERISED__EXPR__SHL_H__ 00003 00004 #include "sesstype/parameterised/expr.h" 00005 00006 #ifdef __cplusplus 00007 namespace sesstype { 00008 namespace parameterised { 00009 #endif 00010 00011 #ifdef __cplusplus 00012 00015 class ShlExpr : public BinExpr { 00016 public: 00020 ShlExpr(Expr *lhs, Expr *rhs) : BinExpr(ST_EXPR_SHL, lhs, rhs) { } 00021 00023 ShlExpr(const ShlExpr &expr) 00024 : BinExpr(ST_EXPR_SHL, expr.lhs_->clone(), expr.rhs_->clone()) { } 00025 00026 00028 ShlExpr *clone() const override 00029 { 00030 return new ShlExpr(*this); 00031 } 00032 00033 bool is_commutative() const override 00034 { 00035 return false; 00036 } 00037 00038 bool is_associative() const override 00039 { 00040 return false; 00041 } 00042 00043 virtual void accept(util::ExprVisitor &v) override; 00044 }; 00045 #endif // __cplusplus 00046 00047 #ifdef __cplusplus 00048 } // namespace parameterised 00049 } // namespace sesstype 00050 #endif 00051 00052 #endif//SESSTYPE__PARAMETERISED__EXPR__SHL_H__