![]() |
libsesstype
2.0.0
Library for Session Types programming.
|
00001 #ifndef SESSTYPE__PARAMETERISED__EXPR__LOG_H__ 00002 #define SESSTYPE__PARAMETERISED__EXPR__LOG_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 class LogExpr : public Expr { 00013 Expr *value_; 00014 Expr *base_; 00015 00016 public: 00017 LogExpr(Expr *val, Expr *base) : Expr(ST_EXPR_LOG), value_(), base_() { } 00018 00019 LogExpr(const LogExpr &expr) 00020 : Expr(ST_EXPR_LOG), value_(expr.value_->clone()), base_(expr.base_->clone()) { } 00021 00022 ~LogExpr() override 00023 { 00024 delete value_; 00025 delete base_; 00026 } 00027 00028 LogExpr *clone() const override 00029 { 00030 return new LogExpr(*this); 00031 } 00032 00033 Expr *value() 00034 { 00035 return value_; 00036 } 00037 00038 Expr *base() 00039 { 00040 return base_; 00041 } 00042 00043 void virtual 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__LOG_H__