// File: TCollection_Stack.gxx // Created: Mon Jan 18 14:30:12 1993 // Author: Remi LEQUETTE // #include //======================================================================= //function : TCollection_Stack //purpose : //======================================================================= TCollection_Stack::TCollection_Stack() : myTop(NULL), myDepth(0) { } //======================================================================= //function : TCollection_Stack //purpose : //======================================================================= TCollection_Stack::TCollection_Stack(const TCollection_Stack& Other) { if (!Other.IsEmpty()) { cout << "WARNING copy constructor of non empty stack !"<Value(),(TCollection_MapNode*)0L); if (r) r->Next() = q; else myTop = q; r = q; p = (TCollection_StackNode*)p->Next(); } myDepth = Other.myDepth; } //======================================================================= //function : Assign //purpose : //======================================================================= const TCollection_Stack& TCollection_Stack::Assign (const TCollection_Stack& Other) { if (this == &Other) return *this; Clear(); TCollection_StackNode* p = (TCollection_StackNode*) Other.myTop; TCollection_StackNode* q; TCollection_StackNode* r = NULL; while (p) { q = new TCollection_StackNode(p->Value(),(TCollection_MapNode*)0L); if (r) r->Next() = q; else myTop = q; r = q; p = (TCollection_StackNode*)p->Next(); } myDepth = Other.myDepth; return *this; } //======================================================================= //function : Top //purpose : //======================================================================= const Item& TCollection_Stack::Top() const { Standard_NoSuchObject_Raise_if(IsEmpty(),"TCollection_Stack"); return ((TCollection_StackNode*)myTop)->Value(); } //======================================================================= //function : Push //purpose : //======================================================================= void TCollection_Stack::Push(const Item& I) { myTop = new TCollection_StackNode(I,(TCollection_StackNode*)myTop); myDepth++; } //======================================================================= //function : Pop //purpose : //======================================================================= void TCollection_Stack::Pop() { Standard_NoSuchObject_Raise_if(IsEmpty(),"TCollection_Stack"); TCollection_StackNode* p = (TCollection_StackNode*) myTop; myTop = p->Next(); delete p; myDepth--; } //======================================================================= //function : Clear //purpose : //======================================================================= void TCollection_Stack::Clear() { TCollection_StackNode* p = (TCollection_StackNode*) myTop; TCollection_StackNode* q; while(p) { q = (TCollection_StackNode*)p->Next(); delete p; p = q; } myDepth = 0; myTop = NULL; } //======================================================================= //function : ChangeTop //purpose : //======================================================================= Item& TCollection_Stack::ChangeTop() { Standard_NoSuchObject_Raise_if(IsEmpty(),"TCollection_Stack"); return ((TCollection_StackNode*)myTop)->Value(); } //======================================================================= //function : Next //purpose : //======================================================================= void TCollection_StackIterator::Next() { current = ((TCollection_StackNode*)current)->Next(); } //======================================================================= //function : Value //purpose : //======================================================================= const Item& TCollection_StackIterator::Value() const { Standard_NoSuchObject_Raise_if(current == NULL, "TCollection_StackIterator"); return ((TCollection_StackNode*)current)->Value(); }