use placement new

This commit is contained in:
Jeff Hill
2002-10-23 23:37:30 +00:00
parent 340e0c1d58
commit e36083d5ef
22 changed files with 712 additions and 455 deletions

View File

@@ -19,7 +19,7 @@
* Author: Jeff Hill
*/
#include <stdexcept>
#include <limits.h>
#include <float.h>
@@ -30,18 +30,6 @@
#include "virtualCircuit.h"
#include "bhe.h"
epicsSingleton < tsFreeList < class bhe, 1024 > > bhe::pFreeList;
void * bhe::operator new ( size_t size )
{
return bhe::pFreeList->allocate ( size );
}
void bhe::operator delete ( void *pCadaver, size_t size )
{
bhe::pFreeList->release ( pCadaver, size );
}
/*
* set average to -1.0 so that when the next beacon
* occurs we can distinguish between:
@@ -236,12 +224,7 @@ void bhe::show ( unsigned /* level */ ) const
static_cast <const void *> ( this ), this->averagePeriod );
}
void bhe::destroy ()
{
delete this;
}
double bhe::period () const
double bhe::period () const throw ()
{
return this->averagePeriod;
}
@@ -263,3 +246,22 @@ void bhe::unregisterIIU ( tcpiiu & iiu )
this->averagePeriod = - DBL_MAX;
}
void bhe::operator delete ( void * )
{
throw std::logic_error
( "compiler is confused about placement delete?" );
}
void * bheFreeStore::allocate ( size_t size )
{
return freeList.allocate ( size );
}
void bheFreeStore::release ( void * pCadaver )
{
freeList.release ( pCadaver );
}
epicsShareFunc bheMemoryManager::~bheMemoryManager () {}