// File: TCollection_Queue.gxx // Created: Mon Jan 18 14:55:37 1993 // Author: Remi LEQUETTE // #include //======================================================================= //function : TCollection_Queue //purpose : //======================================================================= TCollection_Queue::TCollection_Queue() : myFront(NULL), myEnd(NULL), myLength(0) { } //======================================================================= //function : TCollection_Queue //purpose : //======================================================================= TCollection_Queue::TCollection_Queue(const TCollection_Queue& Other) { if (!Other.IsEmpty()) { cout << "WARNING copy constructor of non empty Queue !"<Value(),(TCollection_MapNode*)0L); if (r) r->Next() = q; else myFront = q; r = q; p = (TCollection_QueueNode*)p->Next(); } myEnd = q; myLength = Other.myLength; } //======================================================================= //function : Assign //purpose : //======================================================================= const TCollection_Queue& TCollection_Queue::Assign (const TCollection_Queue& Other) { if (this == &Other) return *this; Clear(); TCollection_QueueNode* p = (TCollection_QueueNode*) Other.myFront; TCollection_QueueNode* q=NULL; TCollection_QueueNode* r = NULL; while (p) { q = new TCollection_QueueNode(p->Value(),(TCollection_MapNode*)0L); if (r) r->Next() = q; else myFront = q; r = q; p = (TCollection_QueueNode*)p->Next(); } myEnd = q; myLength = Other.myLength; return *this; } //======================================================================= //function : Front //purpose : //======================================================================= const Item& TCollection_Queue::Front() const { Standard_NoSuchObject_Raise_if(IsEmpty(),"TCollection_Queue"); return ((TCollection_QueueNode*)myFront)->Value(); } //======================================================================= //function : Push //purpose : //======================================================================= void TCollection_Queue::Push(const Item& I) { TCollection_QueueNode* p = new TCollection_QueueNode(I,(TCollection_MapNode*)0L); if (myLength) ((TCollection_QueueNode*)myEnd)->Next() = p; else myFront = p; myEnd = p; myLength++; } //======================================================================= //function : Pop //purpose : //======================================================================= void TCollection_Queue::Pop() { Standard_NoSuchObject_Raise_if(IsEmpty(),"TCollection_Queue"); TCollection_QueueNode* p = (TCollection_QueueNode*) myFront; myFront = p->Next(); delete p; myLength--; if (myLength == 0) myEnd = NULL; } //======================================================================= //function : Clear //purpose : //======================================================================= void TCollection_Queue::Clear() { TCollection_QueueNode* p = (TCollection_QueueNode*) myFront; TCollection_QueueNode* q = 0L; while(p) { q = (TCollection_QueueNode*)p->Next(); delete p; p = q; } myLength = 0; myFront = myEnd = NULL; } //======================================================================= //function : ChangeFront //purpose : //======================================================================= Item& TCollection_Queue::ChangeFront() { Standard_NoSuchObject_Raise_if(IsEmpty(),"TCollection_Queue"); return ((TCollection_QueueNode*)myFront)->Value(); }