diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2017-03-11 15:57:20 +0000 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2017-03-11 15:57:20 +0000 |
commit | c83c8f224e66d7e21e30546bae308ac5fd52677e (patch) | |
tree | 9a15588353036cf2fccfbfb99bf934b3d1f3cbef /c_compiler/include/expression.hpp | |
parent | e065e781448b86eeeca0152f735649ea2a2edbb6 (diff) | |
download | Compiler-c83c8f224e66d7e21e30546bae308ac5fd52677e.tar.gz Compiler-c83c8f224e66d7e21e30546bae308ac5fd52677e.zip |
Added shared_ptr for less memory leaks
Diffstat (limited to 'c_compiler/include/expression.hpp')
-rw-r--r-- | c_compiler/include/expression.hpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/c_compiler/include/expression.hpp b/c_compiler/include/expression.hpp index 89a996e..df95a1e 100644 --- a/c_compiler/include/expression.hpp +++ b/c_compiler/include/expression.hpp @@ -3,12 +3,16 @@ #include "node.hpp" +#include <memory> + +class Expression; + +typedef std::shared_ptr<Expression> ExpressionPtr; + class Expression : public Node { public: - virtual ~Expression(); - virtual VariableStackBindings printasm(VariableStackBindings bindings) const = 0; virtual void print() const; @@ -20,11 +24,10 @@ public: class OperationExpression : public Expression { protected: - Expression* lhs; - Expression* rhs; + ExpressionPtr lhs; + ExpressionPtr rhs; public: OperationExpression(Expression* _lhs, Expression* _rhs); - virtual ~OperationExpression(); virtual VariableStackBindings printasm(VariableStackBindings bindings) const = 0; }; |