myCurIndex (0),
myEndIndex (0) {}
- Iterator (const NCollection_BaseVector& theVector)
+ Iterator (const NCollection_BaseVector& theVector, Standard_Boolean theToEnd = Standard_False)
{
- initV (theVector);
+ initV (theVector, theToEnd);
}
Iterator (const Iterator& theVector)
copyV (theVector);
}
- Standard_EXPORT void initV (const NCollection_BaseVector& theVector);
+ Standard_EXPORT void initV (const NCollection_BaseVector& theVector, Standard_Boolean theToEnd = Standard_False);
Standard_EXPORT void copyV (const Iterator&);
}
}
+ void prevV()
+ {
+ if (--myCurIndex < 0 && myICurBlock > 0)
+ {
+ --myICurBlock;
+ myCurIndex = myVector->myData[myICurBlock].Length - 1;
+ }
+ }
+
+ virtual void offsetV (Standard_Integer theOffset)
+ {
+ const Standard_Integer anIndex = myCurIndex + myICurBlock * myVector->myIncrement + theOffset;
+ myICurBlock = anIndex / myVector->myIncrement;
+ myCurIndex = anIndex % myVector->myIncrement;
+ }
+
+ virtual Standard_Integer differV (const Iterator& theOther) const
+ {
+ return (myCurIndex - theOther.myCurIndex) + (myICurBlock - theOther.myICurBlock) * myVector->myIncrement;
+ }
+
const MemBlock* curBlockV() const
{
return &myVector->myData[myICurBlock];