//+------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (C) Microsoft Corporation, 1992 - 1999 // // File: queue.hxx // //-------------------------------------------------------------------------- /*++ --*/ #ifndef __QUEUE_HXX__ #define __QUEUE_HXX__ #define INITIALQUEUESLOTS 4 typedef struct { void * Buffer; unsigned int BufferLength; } QUEUE_ITEM; class QUEUE { private: QUEUE_ITEM * QueueSlots; int NumberOfQueueSlots; int EndOfQueue; QUEUE_ITEM InitialQueueSlots[INITIALQUEUESLOTS]; public: QUEUE ( ); ~QUEUE ( ); int PutOnQueue ( IN void * Item, IN unsigned int Length ); int PutOnFrontOfQueue ( IN void * Item, IN unsigned int Length ); void * TakeOffQueue ( OUT unsigned int * Length ); void * TakeOffEndOfQueue ( OUT unsigned int * Length ); int FindAndTakeOffQueue ( IN void * Item ); int IsQueueEmpty ( ) { return(!(EndOfQueue)); } int Size ( ) { return EndOfQueue; } int MergeWithQueue ( IN QUEUE *SourceQueue ); int MergeWithQueueInFront ( IN QUEUE *SourceQueue ); }; #endif // __QUEUE_HXX__