blob: 81610854c0a32643b3578d5f70f5bb35c423f303 [file] [log] [blame] [edit]
// Copyright (c) 2014, 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 'dart:collection';
/// Returns the given [list] if it is not empty, or `null` otherwise.
List<E>? nullIfEmpty<E>(List<E>? list) {
if (list == null || list.isEmpty) {
return null;
}
return list;
}
/// A container that remembers the last `n` items added to it.
///
/// It will never grow larger than [capacity]. It's a LIFO queue - the last item
/// added will be the first one returned from [items].
class RecentBuffer<T> {
final int capacity;
final Queue<T> _buffer;
RecentBuffer(this.capacity) : _buffer = Queue();
Iterable<T> get items => _buffer;
void add(T item) {
while (_buffer.length >= capacity) {
_buffer.removeLast();
}
_buffer.addFirst(item);
}
}