Commit ae4725e9 authored by Roberto Raggi's avatar Roberto Raggi
Browse files

Introduced CPlusPlus::Managed.

Managed is an helper base class that simplify the usage of memory pools.
parent 753ddb7c
......@@ -381,15 +381,6 @@ UsingDirectiveAST *AST::asUsingDirective()
WhileStatementAST *AST::asWhileStatement()
{ return dynamic_cast<WhileStatementAST *>(this); }
void *AST::operator new(size_t size, MemoryPool *pool)
{ return pool->allocate(size); }
void AST::operator delete(void *)
{ }
void AST::operator delete(void *, MemoryPool *)
{ }
void AST::accept(ASTVisitor *visitor)
{
if (visitor->preVisit(this))
......
......@@ -55,12 +55,12 @@
#include "CPlusPlusForwardDeclarations.h"
#include "ASTfwd.h"
#include <new>
#include "MemoryPool.h"
CPLUSPLUS_BEGIN_HEADER
CPLUSPLUS_BEGIN_NAMESPACE
class CPLUSPLUS_EXPORT AST
class CPLUSPLUS_EXPORT AST: public Managed
{
AST(const AST &other);
void operator =(const AST &other);
......@@ -74,10 +74,6 @@ public:
static void accept(AST *ast, ASTVisitor *visitor)
{ if (ast) ast->accept(visitor); }
void *operator new(size_t size, MemoryPool *pool);
void operator delete(void *);
void operator delete(void *, MemoryPool *);
virtual unsigned firstToken() const = 0;
virtual unsigned lastToken() const = 0;
......
......@@ -112,4 +112,19 @@ void *MemoryPool::allocate_helper(size_t size)
return addr;
}
Managed::Managed()
{ }
Managed::~Managed()
{ }
void *Managed::operator new(size_t size, MemoryPool *pool)
{ return pool->allocate(size); }
void Managed::operator delete(void *)
{ }
void Managed::operator delete(void *, MemoryPool *)
{ }
CPLUSPLUS_END_NAMESPACE
......@@ -55,6 +55,7 @@
#include "CPlusPlusForwardDeclarations.h"
#include <cstddef>
#include <new>
CPLUSPLUS_BEGIN_HEADER
CPLUSPLUS_BEGIN_NAMESPACE
......@@ -99,6 +100,20 @@ private:
};
};
class CPLUSPLUS_EXPORT Managed
{
Managed(const Managed &other);
void operator = (const Managed &other);
public:
Managed();
virtual ~Managed();
void *operator new(size_t size, MemoryPool *pool);
void operator delete(void *);
void operator delete(void *, MemoryPool *);
};
CPLUSPLUS_END_NAMESPACE
CPLUSPLUS_END_HEADER
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment