- EventBufferCore: (new) - Defines Events and related functions - Defines Event Buffer - ItemBuffer: - Specify "Keep" parameter for Delete, to override CopyEntries
71 lines
1.6 KiB
C++
71 lines
1.6 KiB
C++
/*
|
|
* ItemBufferCore.h
|
|
*
|
|
* Created on: 22 July 2017
|
|
* Author: wentzelc
|
|
*/
|
|
|
|
#ifndef REDACORE_ITEMBUFFERCORE_H_
|
|
#define REDACORE_ITEMBUFFERCORE_H_
|
|
|
|
// Standard C/C++ Libraries
|
|
#include <stdlib.h>
|
|
|
|
// redA Libraries
|
|
/* none */
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
//***** Data Structures *****//
|
|
|
|
typedef struct SBufferItem TBufferItem;
|
|
|
|
struct SBufferItem {
|
|
void * Entry;
|
|
int Size;
|
|
|
|
TBufferItem * NextItem;
|
|
};
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
//***** Function Prototypes *****//
|
|
|
|
class CItemBuffer
|
|
{
|
|
protected:
|
|
// Parameters
|
|
bool CopyEntries; // Make copies of entries and destroy them when done?
|
|
int Count;
|
|
|
|
// Items
|
|
TBufferItem * FirstItem;
|
|
TBufferItem ** LastItem;
|
|
|
|
// Item Life cycle
|
|
TBufferItem * CreateItem( void * Entry, int Size );
|
|
bool DestroyItem( TBufferItem ** BufferItem );
|
|
|
|
virtual bool DestroyEntry( void ** Entry );
|
|
|
|
public:
|
|
// Initiate object
|
|
CItemBuffer( bool pCopyEntries );
|
|
virtual ~CItemBuffer();
|
|
|
|
// Buffer Operations
|
|
bool Push( void * Entry, int Size );
|
|
void * Pop( int * Size = NULL );
|
|
void * Peek( int * Size = NULL );
|
|
bool Delete( bool Keep = false );
|
|
void DeleteAll();
|
|
|
|
// Misc
|
|
int GetCount() { return Count; };
|
|
};
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
#endif /* REDACORE_ITEMBUFFERCORE_H_ */
|
|
|