#pragma once
#ifndef CQueueClass_h
#define CQueueClass_h
//#pragma warning( disable : 4267 )
#include <vector>
#include "CQueueItemClass.h"
#include "ASyncronizationClass.h"
#include "FWCoreDLLImportExportDeclaration.h"
namespace CoreFW
{
template< typename ClassType >
class DLL_TEMPLATE_DECLARATION_SPECIFIER CQueueClass
{
public:
CQueueClass();
virtual ~CQueueClass();
protected:
std::vector< CQueueItemClass< ClassType >* > m_QueueList ;
ASyncronizationClass *m_pQueueSyncObject ;
public:
long SetItemInQueue( ClassType Item, long Priority ) ;
long ResetItemInQueue( ClassType Item ) ;
long GetItemPositionIndex( ClassType Item ) ;
ClassType GetItem( long QueueIndex ) ;
long GetSize() const ;
void DeleteAllItems() ;
protected:
long GetItemPosition( ClassType Item ) const ;
long GetItemInsertPosition( long Priority ) const ;
} ;
} // End namespace
#if defined( DLL_TEMPLATE_DECLARATION_SPECIFIER_EXPORT )
#include "CQueueClass.cpp"
#endif
#endif