1 // Created on: 2004-11-23 2 // Created by: Pavel TELKOV 3 // Copyright (c) 2004-2014 OPEN CASCADE SAS 4 // 5 // This file is part of Open CASCADE Technology software library. 6 // 7 // This library is free software; you can redistribute it and/or modify it under 8 // the terms of the GNU Lesser General Public License version 2.1 as published 9 // by the Free Software Foundation, with special exception defined in the file 10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT 11 // distribution for complete text of the license and disclaimer of any warranty. 12 // 13 // Alternatively, this file may be used under the terms of Open CASCADE 14 // commercial license or contractual agreement. 15 16 // The original implementation Copyright: (C) RINA S.p.A 17 18 #include <TObj_SequenceIterator.hxx> 19 20 #include <TObj_Object.hxx> 21 22 IMPLEMENT_STANDARD_RTTIEXT(TObj_SequenceIterator,TObj_ObjectIterator)23IMPLEMENT_STANDARD_RTTIEXT(TObj_SequenceIterator,TObj_ObjectIterator) 24 25 //======================================================================= 26 //function : TObj_SequenceIterator 27 //purpose : 28 //======================================================================= 29 30 TObj_SequenceIterator::TObj_SequenceIterator() : 31 myIndex( 1 ) 32 { 33 } 34 35 //======================================================================= 36 //function : TObj_SequenceIterator 37 //purpose : 38 //======================================================================= 39 TObj_SequenceIterator(const Handle (TObj_HSequenceOfObject)& theObjects,const Handle (Standard_Type)& theType)40TObj_SequenceIterator::TObj_SequenceIterator 41 (const Handle(TObj_HSequenceOfObject)& theObjects, 42 const Handle(Standard_Type)& theType) 43 { 44 myIndex = 1; 45 myType = theType; 46 myObjects = theObjects; 47 } 48 49 //======================================================================= 50 //function : More 51 //purpose : 52 //======================================================================= 53 More() const54Standard_Boolean TObj_SequenceIterator::More() const 55 { 56 const Standard_Boolean isMore = (!myObjects.IsNull() && 57 (myIndex <= myObjects->Length() && myIndex > 0) && 58 !myObjects->Value(myIndex).IsNull()); 59 60 // check type 61 if (isMore && !myType.IsNull() && !myObjects->Value(myIndex)->IsKind( myType )) 62 { 63 TObj_SequenceIterator* me = (TObj_SequenceIterator*) this; 64 me->Next(); 65 return More(); 66 } 67 68 return isMore; 69 } 70 71 //======================================================================= 72 //function : Next 73 //purpose : 74 //======================================================================= 75 Next()76void TObj_SequenceIterator::Next() 77 { myIndex++; } 78 79 //======================================================================= 80 //function : Value 81 //purpose : 82 //======================================================================= 83 Handle(TObj_Object)84Handle(TObj_Object) TObj_SequenceIterator::Value() const 85 { 86 return myObjects->Value(myIndex); 87 } 88