forked from qt-creator/qt-creator
Introduced CPlusPlus::Managed.
Managed is an helper base class that simplify the usage of memory pools.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user