blob: 621d108d8618d96fa8a9524df9613900aa056a29 [file] [log] [blame]
// Copyright (c) 2019, the R8 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.
package com.android.tools.r8.utils;
import java.util.Comparator;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.function.Supplier;
public class Box<T> extends BoxBase<T> {
public Box() {}
public Box(T initialValue) {
super(initialValue);
}
@Override
public void accept(Consumer<? super T> consumer) {
super.accept(consumer);
}
@Override
public void clear() {
super.clear();
}
@Override
public T computeIfAbsent(Supplier<T> supplier) {
return super.computeIfAbsent(supplier);
}
public <E extends Exception> T computeIfAbsentThrowing(ThrowingSupplier<T, E> supplier) throws E {
if (!isSet()) {
set(supplier.get());
}
return get();
}
@Override
public T get() {
return super.get();
}
@Override
public T getAndSet(T newValue) {
return super.getAndSet(newValue);
}
public <E extends Exception> Box<T> rebuild(ThrowingFunction<T, T, E> fn) throws E {
if (isSet()) {
return new Box<>(fn.apply(get()));
}
return new Box<>();
}
@Override
public void set(T value) {
super.set(value);
}
@Override
public void setMin(T value, Comparator<T> comparator) {
super.setMin(value, comparator);
}
@Override
public boolean test(Predicate<T> predicate) {
return super.test(predicate);
}
}