| // Copyright (c) 2020, 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.function.BooleanSupplier; | |
| public class BooleanBox { | |
| private boolean value; | |
| private boolean assigned = false; | |
| public BooleanBox() {} | |
| public BooleanBox(boolean initialValue) { | |
| set(initialValue); | |
| } | |
| public void computeIfNotSet(BooleanSupplier supplier) { | |
| if (isFalse()) { | |
| set(supplier.getAsBoolean()); | |
| } | |
| } | |
| public boolean get() { | |
| return value; | |
| } | |
| public boolean isFalse() { | |
| return !get(); | |
| } | |
| public boolean isTrue() { | |
| return get(); | |
| } | |
| public void set() { | |
| set(true); | |
| } | |
| public void set(boolean value) { | |
| assigned = true; | |
| this.value = value; | |
| } | |
| public void unset() { | |
| set(false); | |
| } | |
| public void and(boolean value) { | |
| set(value && this.value); | |
| } | |
| public void or(boolean value) { | |
| set(value || this.value); | |
| } | |
| public boolean isAssigned() { | |
| return assigned; | |
| } | |
| } |