// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. part of html; // Iterator for arrays with fixed size. class FixedSizeListIterator implements Iterator { final List _array; final int _length; // Cache array length for faster access. int _position; T? _current; FixedSizeListIterator(List array) : _array = array, _position = -1, _length = array.length; bool moveNext() { int nextPosition = _position + 1; if (nextPosition < _length) { _current = _array[nextPosition]; _position = nextPosition; return true; } _current = null; _position = _length; return false; } T get current => _current as T; } // Iterator for arrays with variable size. class _VariableSizeListIterator implements Iterator { final List _array; int _position; T? _current; _VariableSizeListIterator(List array) : _array = array, _position = -1; bool moveNext() { int nextPosition = _position + 1; if (nextPosition < _array.length) { _current = _array[nextPosition]; _position = nextPosition; return true; } _current = null; _position = _array.length; return false; } T get current => _current as T; }