Important Update:
- CItemBuffer: - Rename CItemBufferCore -> CItemBuffer - Add item count and GetCount() method - Bug fix: Reset LastItem on DeleteAll() - TimingCore: - Bug fix: Handle buffer overflow on 32-bit processors
This commit is contained in:
@@ -16,10 +16,11 @@
|
||||
|
||||
//***** Function Prototypes *****//
|
||||
|
||||
CItemBufferCore::CItemBufferCore( bool pCopyEntries )
|
||||
CItemBuffer::CItemBuffer( bool pCopyEntries )
|
||||
{
|
||||
// Parameters
|
||||
CopyEntries = pCopyEntries;
|
||||
Count = 0;
|
||||
|
||||
// Clear Event list
|
||||
FirstItem = NULL;
|
||||
@@ -27,14 +28,14 @@ CItemBufferCore::CItemBufferCore( bool pCopyEntries )
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
CItemBufferCore::~ CItemBufferCore()
|
||||
CItemBuffer::~ CItemBuffer()
|
||||
{
|
||||
// Free Event List
|
||||
DeleteAll();
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
TBufferItem * CItemBufferCore::CreateItem( void * Entry, int Size )
|
||||
TBufferItem * CItemBuffer::CreateItem( void * Entry, int Size )
|
||||
{
|
||||
TBufferItem * BufferItem;
|
||||
|
||||
@@ -68,7 +69,7 @@ TBufferItem * CItemBufferCore::CreateItem( void * Entry, int Size )
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool CItemBufferCore::DestroyItem( TBufferItem ** BufferItem )
|
||||
bool CItemBuffer::DestroyItem( TBufferItem ** BufferItem )
|
||||
{
|
||||
// Check if valid pointer
|
||||
if (!BufferItem || !*BufferItem)
|
||||
@@ -86,7 +87,7 @@ bool CItemBufferCore::DestroyItem( TBufferItem ** BufferItem )
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool CItemBufferCore::DestroyEntry( void ** Entry )
|
||||
bool CItemBuffer::DestroyEntry( void ** Entry )
|
||||
{
|
||||
// Verify pointer
|
||||
if (!Entry || !*Entry)
|
||||
@@ -100,7 +101,7 @@ bool CItemBufferCore::DestroyEntry( void ** Entry )
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool CItemBufferCore::Push( void * Entry, int Size )
|
||||
bool CItemBuffer::Push( void * Entry, int Size )
|
||||
{
|
||||
// Verify pointer
|
||||
if (!Entry || !Size)
|
||||
@@ -112,11 +113,12 @@ bool CItemBufferCore::Push( void * Entry, int Size )
|
||||
|
||||
// Move Next entry reference
|
||||
LastItem = &((*LastItem)->NextItem);
|
||||
Count++;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void * CItemBufferCore::Pop( int * Size )
|
||||
void * CItemBuffer::Pop( int * Size )
|
||||
{
|
||||
void * Entry;
|
||||
|
||||
@@ -124,13 +126,11 @@ void * CItemBufferCore::Pop( int * Size )
|
||||
if ((Entry = Peek( Size ))) {
|
||||
Delete();
|
||||
}
|
||||
|
||||
// return event
|
||||
return Entry;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void * CItemBufferCore::Peek( int * Size )
|
||||
void * CItemBuffer::Peek( int * Size )
|
||||
{
|
||||
void * Entry;
|
||||
|
||||
@@ -149,7 +149,7 @@ void * CItemBufferCore::Peek( int * Size )
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool CItemBufferCore::Delete()
|
||||
bool CItemBuffer::Delete()
|
||||
{
|
||||
TBufferItem * BufferItem;
|
||||
|
||||
@@ -170,11 +170,12 @@ bool CItemBufferCore::Delete()
|
||||
DestroyEntry( &(BufferItem->Entry) );
|
||||
free( BufferItem );
|
||||
|
||||
Count--;
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
void CItemBufferCore::DeleteAll()
|
||||
void CItemBuffer::DeleteAll()
|
||||
{
|
||||
TBufferItem * NextItem;
|
||||
|
||||
@@ -184,5 +185,7 @@ void CItemBufferCore::DeleteAll()
|
||||
DestroyItem( &FirstItem );
|
||||
FirstItem = NextItem;
|
||||
}
|
||||
LastItem = &FirstItem;
|
||||
Count = 0;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user