libsesstype  2.0.0
Library for Session Types programming.
log.h
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__
 All Classes Namespaces Files Functions