aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/include/expression.hpp
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-03-11 15:57:20 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-03-11 15:57:20 +0000
commitc83c8f224e66d7e21e30546bae308ac5fd52677e (patch)
tree9a15588353036cf2fccfbfb99bf934b3d1f3cbef /c_compiler/include/expression.hpp
parente065e781448b86eeeca0152f735649ea2a2edbb6 (diff)
downloadCompiler-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.hpp13
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;
};