+++ /dev/null
-// Created on: 1992-09-24
-// Created by: Mireille MERCIEN
-// Copyright (c) 1992-1999 Matra Datavision
-// Copyright (c) 1999-2014 OPEN CASCADE SAS
-//
-// This file is part of Open CASCADE Technology software library.
-//
-// This library is free software; you can redistribute it and/or modify it under
-// the terms of the GNU Lesser General Public License version 2.1 as published
-// by the Free Software Foundation, with special exception defined in the file
-// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
-// distribution for complete text of the license and disclaimer of any warranty.
-//
-// Alternatively, this file may be used under the terms of Open CASCADE
-// commercial license or contractual agreement.
-
-// ----------------------------------------------------------------------
-// Updated: Remi Lequette,J.P. TIRAULT February,23 1995
-// we added a basic class BaseSequence where all
-// instantiations of Sequence inherit.
-// ----------------------------------------------------------------------
-
-static void delnode(TCollection_SeqNode* p)
-{
- TCollection_SequenceNode* q = (TCollection_SequenceNode*) p;
- delete q;
-}
-
-// ----------------------------------
-// Clear : Clear the Current Sequence
-// ----------------------------------
-void TCollection_Sequence::Clear()
-{
- TCollection_BaseSequence::Clear((void*)&delnode);
-}
-
-//=======================================================================
-//function : Assign
-//purpose :
-//=======================================================================
-
-const TCollection_Sequence& TCollection_Sequence::Assign
- (const TCollection_Sequence& Other)
-{
- if (this == &Other) return *this;
- Clear();
- TCollection_SequenceNode* current = (TCollection_SequenceNode*) Other.FirstItem;
- TCollection_SequenceNode* previous = NULL;
- TCollection_SequenceNode* newnode = NULL;
- FirstItem = NULL;
- while (current) {
- newnode = new TCollection_SequenceNode(current->Value(),previous,(TCollection_SeqNode*)0L);
- if (previous) previous->Next() = newnode;
- else FirstItem = newnode;
- current = (TCollection_SequenceNode *) current->Next();
- previous = newnode;
- }
- LastItem = newnode;
- Size = Other.Size;
- CurrentItem = FirstItem;
- CurrentIndex = 1;
- return *this;
-}
-
-
-// -------------------------------------------------
-// Append : Push an item at the end of the sequence
-// -------------------------------------------------
-void TCollection_Sequence::Append(const SeqItem& T)
-{
- TCollection_SequenceNode* newnode = new TCollection_SequenceNode(T,(TCollection_SeqNode*)LastItem,(TCollection_SeqNode*)0L);
- PAppend ((void*)newnode);
-}
-
-
-// ---------------------------------------------------------
-// Prepend : Push an element at the begining of the sequence
-// ---------------------------------------------------------
-void TCollection_Sequence::Prepend(const SeqItem& T)
-{
- TCollection_SequenceNode* newnode = new TCollection_SequenceNode(T,(TCollection_SeqNode*)0L,(TCollection_SequenceNode*)FirstItem);
- PPrepend ((void*)newnode);
-}
-
-// -----------------------------------------------------------------
-// InsertAfter : Insert an element after a given index in a sequence
-// -----------------------------------------------------------------
-void TCollection_Sequence::InsertAfter(const Standard_Integer Index,
- const SeqItem& T)
-{
- Standard_OutOfRange_Raise_if (Index < 0 || Index > Size, "TCollection_Sequence::InsertAfter() - index is out of range");
- TCollection_SequenceNode* newnode = new TCollection_SequenceNode(T,(TCollection_SeqNode*)0L,(TCollection_SeqNode*)0L);
- PInsertAfter (Index,(void*)newnode);
-}
-
-// ---------------------------------------------------
-// First : Returns the first element of the sequence
-// Raises an exeption if the sequence is empty
-// ----------------------------------------------------
-const SeqItem& TCollection_Sequence::First() const
-{
- Standard_NoSuchObject_Raise_if (Size == 0, "TCollection_Sequence::First() - sequence is empty");
- return ((TCollection_SequenceNode*) FirstItem)->Value();
-}
-
-// ----------------------------------------------------
-// Last : Returns the last element of the sequence
-// Raises an exeption if the sequence is empty
-// ----------------------------------------------------
-const SeqItem& TCollection_Sequence::Last() const
-{
- Standard_NoSuchObject_Raise_if (Size == 0, "TCollection_Sequence::Last() - sequence is empty");
- return ((TCollection_SequenceNode*) LastItem)->Value();
-}
-
-// -----------------------------------------
-// Value : Return the value of a given index
-// -----------------------------------------
-const SeqItem& TCollection_Sequence::Value(const Standard_Integer Index) const
-{
- Standard_OutOfRange_Raise_if (Index <= 0 || Index > Size, "TCollection_Sequence::Value() - index is out of range");
- TCollection_Sequence* const aLocalTHIS = (TCollection_Sequence* const) this;
- aLocalTHIS->CurrentItem = (TCollection_SequenceNode*) Find(Index);
- aLocalTHIS->CurrentIndex = Index;
- return ((TCollection_SequenceNode*)CurrentItem)->Value();
-}
-
-// -------------------------------------------------------
-// ChangeValue : Return the modifiable value of a given index
-// -------------------------------------------------------
-SeqItem & TCollection_Sequence::ChangeValue(const Standard_Integer Index)
-{
- Standard_OutOfRange_Raise_if (Index <= 0 || Index > Size, "TCollection_Sequence::ChangeValue() - index is out of range");
-
- CurrentItem = (TCollection_SequenceNode*) Find(Index);
- CurrentIndex = Index;
- return ((TCollection_SequenceNode*)CurrentItem)->Value();
-}
-
-void TCollection_Sequence::Remove(const Standard_Integer Index)
-{
- TCollection_BaseSequence::Remove(Index,(void*)&delnode);
-}
-
-// ---------------------
-// Remove a set of items
-// ---------------------
-void TCollection_Sequence::Remove(const Standard_Integer FromIndex, const Standard_Integer ToIndex)
-{
- TCollection_BaseSequence::Remove(FromIndex,ToIndex,(void*)&delnode);
-}
-
-
-//=======================================================================
-//function : SetValue
-//purpose : Sets a value to an index
-//=======================================================================
-void TCollection_Sequence::SetValue (const Standard_Integer Index,
- const SeqItem& I)
-{
- ChangeValue(Index) = I ;
-}