// Copyright (c) 2023, 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. import 'package:meta/meta.dart' show internal; import '../core_bindings.dart'; import '../jobject.dart'; extension JIteratorToAdapter on JIterator { /// Wraps this [JIterator] in an adapter that implements an [Iterator]. Iterator asDart() => JIteratorAdapter(this); } @internal final class JIteratorAdapter implements Iterator { final JIterator _itr; E? _current; JIteratorAdapter(this._itr); @override E get current => _current as E; @override @pragma('vm:prefer-inline') bool moveNext() { if (!_itr.hasNext()) { return false; } _current = _itr.next() as E; return true; } }