obsidian-launcher/src/com/google/common/base/Functions.java
2022-08-09 23:01:55 -07:00

299 lines
9.2 KiB
Java

/*
* Decompiled with CFR 0.152.
*/
package com.google.common.base;
import com.google.common.annotations.Beta;
import com.google.common.annotations.GwtCompatible;
import com.google.common.base.Function;
import com.google.common.base.Objects;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicate;
import com.google.common.base.Supplier;
import java.io.Serializable;
import java.util.Map;
import javax.annotation.Nullable;
@GwtCompatible
public final class Functions {
private Functions() {
}
public static Function<Object, String> toStringFunction() {
return ToStringFunction.INSTANCE;
}
public static <E> Function<E, E> identity() {
return IdentityFunction.INSTANCE;
}
public static <K, V> Function<K, V> forMap(Map<K, V> map) {
return new FunctionForMapNoDefault<K, V>(map);
}
public static <K, V> Function<K, V> forMap(Map<K, ? extends V> map, @Nullable V defaultValue) {
return new ForMapWithDefault<K, V>(map, defaultValue);
}
public static <A, B, C> Function<A, C> compose(Function<B, C> g, Function<A, ? extends B> f) {
return new FunctionComposition<A, B, C>(g, f);
}
public static <T> Function<T, Boolean> forPredicate(Predicate<T> predicate) {
return new PredicateFunction(predicate);
}
public static <E> Function<Object, E> constant(@Nullable E value) {
return new ConstantFunction<E>(value);
}
@Beta
public static <T> Function<Object, T> forSupplier(Supplier<T> supplier) {
return new SupplierFunction(supplier);
}
private static class SupplierFunction<T>
implements Function<Object, T>,
Serializable {
private final Supplier<T> supplier;
private static final long serialVersionUID = 0L;
private SupplierFunction(Supplier<T> supplier) {
this.supplier = Preconditions.checkNotNull(supplier);
}
@Override
public T apply(@Nullable Object input) {
return this.supplier.get();
}
@Override
public boolean equals(@Nullable Object obj) {
if (obj instanceof SupplierFunction) {
SupplierFunction that = (SupplierFunction)obj;
return this.supplier.equals(that.supplier);
}
return false;
}
public int hashCode() {
return this.supplier.hashCode();
}
public String toString() {
String string = String.valueOf(String.valueOf(this.supplier));
return new StringBuilder(13 + string.length()).append("forSupplier(").append(string).append(")").toString();
}
}
private static class ConstantFunction<E>
implements Function<Object, E>,
Serializable {
private final E value;
private static final long serialVersionUID = 0L;
public ConstantFunction(@Nullable E value) {
this.value = value;
}
@Override
public E apply(@Nullable Object from) {
return this.value;
}
@Override
public boolean equals(@Nullable Object obj) {
if (obj instanceof ConstantFunction) {
ConstantFunction that = (ConstantFunction)obj;
return Objects.equal(this.value, that.value);
}
return false;
}
public int hashCode() {
return this.value == null ? 0 : this.value.hashCode();
}
public String toString() {
String string = String.valueOf(String.valueOf(this.value));
return new StringBuilder(10 + string.length()).append("constant(").append(string).append(")").toString();
}
}
private static class PredicateFunction<T>
implements Function<T, Boolean>,
Serializable {
private final Predicate<T> predicate;
private static final long serialVersionUID = 0L;
private PredicateFunction(Predicate<T> predicate) {
this.predicate = Preconditions.checkNotNull(predicate);
}
@Override
public Boolean apply(@Nullable T t) {
return this.predicate.apply(t);
}
@Override
public boolean equals(@Nullable Object obj) {
if (obj instanceof PredicateFunction) {
PredicateFunction that = (PredicateFunction)obj;
return this.predicate.equals(that.predicate);
}
return false;
}
public int hashCode() {
return this.predicate.hashCode();
}
public String toString() {
String string = String.valueOf(String.valueOf(this.predicate));
return new StringBuilder(14 + string.length()).append("forPredicate(").append(string).append(")").toString();
}
}
private static class FunctionComposition<A, B, C>
implements Function<A, C>,
Serializable {
private final Function<B, C> g;
private final Function<A, ? extends B> f;
private static final long serialVersionUID = 0L;
public FunctionComposition(Function<B, C> g, Function<A, ? extends B> f) {
this.g = Preconditions.checkNotNull(g);
this.f = Preconditions.checkNotNull(f);
}
@Override
public C apply(@Nullable A a) {
return this.g.apply(this.f.apply(a));
}
@Override
public boolean equals(@Nullable Object obj) {
if (obj instanceof FunctionComposition) {
FunctionComposition that = (FunctionComposition)obj;
return this.f.equals(that.f) && this.g.equals(that.g);
}
return false;
}
public int hashCode() {
return this.f.hashCode() ^ this.g.hashCode();
}
public String toString() {
String string = String.valueOf(String.valueOf(this.g));
String string2 = String.valueOf(String.valueOf(this.f));
return new StringBuilder(2 + string.length() + string2.length()).append(string).append("(").append(string2).append(")").toString();
}
}
private static class ForMapWithDefault<K, V>
implements Function<K, V>,
Serializable {
final Map<K, ? extends V> map;
final V defaultValue;
private static final long serialVersionUID = 0L;
ForMapWithDefault(Map<K, ? extends V> map, @Nullable V defaultValue) {
this.map = Preconditions.checkNotNull(map);
this.defaultValue = defaultValue;
}
@Override
public V apply(@Nullable K key) {
V result = this.map.get(key);
return result != null || this.map.containsKey(key) ? result : this.defaultValue;
}
@Override
public boolean equals(@Nullable Object o) {
if (o instanceof ForMapWithDefault) {
ForMapWithDefault that = (ForMapWithDefault)o;
return this.map.equals(that.map) && Objects.equal(this.defaultValue, that.defaultValue);
}
return false;
}
public int hashCode() {
return Objects.hashCode(this.map, this.defaultValue);
}
public String toString() {
String string = String.valueOf(String.valueOf(this.map));
String string2 = String.valueOf(String.valueOf(this.defaultValue));
return new StringBuilder(23 + string.length() + string2.length()).append("forMap(").append(string).append(", defaultValue=").append(string2).append(")").toString();
}
}
private static class FunctionForMapNoDefault<K, V>
implements Function<K, V>,
Serializable {
final Map<K, V> map;
private static final long serialVersionUID = 0L;
FunctionForMapNoDefault(Map<K, V> map) {
this.map = Preconditions.checkNotNull(map);
}
@Override
public V apply(@Nullable K key) {
V result = this.map.get(key);
Preconditions.checkArgument(result != null || this.map.containsKey(key), "Key '%s' not present in map", key);
return result;
}
@Override
public boolean equals(@Nullable Object o) {
if (o instanceof FunctionForMapNoDefault) {
FunctionForMapNoDefault that = (FunctionForMapNoDefault)o;
return this.map.equals(that.map);
}
return false;
}
public int hashCode() {
return this.map.hashCode();
}
public String toString() {
String string = String.valueOf(String.valueOf(this.map));
return new StringBuilder(8 + string.length()).append("forMap(").append(string).append(")").toString();
}
}
private static enum IdentityFunction implements Function<Object, Object>
{
INSTANCE;
@Override
@Nullable
public Object apply(@Nullable Object o) {
return o;
}
public String toString() {
return "identity";
}
}
private static enum ToStringFunction implements Function<Object, String>
{
INSTANCE;
@Override
public String apply(Object o) {
Preconditions.checkNotNull(o);
return o.toString();
}
public String toString() {
return "toString";
}
}
}