Functions.java 8.16 KB
package com.google.common.base;

import com.google.common.annotations.Beta;
import com.google.common.annotations.GwtCompatible;
import java.io.Serializable;
import java.util.Map;
import javax.annotation.Nullable;

@GwtCompatible
public final class Functions
{
  public static <A, B, C> Function<A, C> compose(Function<B, C> paramFunction, Function<A, ? extends B> paramFunction1)
  {
    return new c(paramFunction, paramFunction1);
  }
  
  public static <E> Function<Object, E> constant(@Nullable E paramE)
  {
    return new a(paramE);
  }
  
  public static <K, V> Function<K, V> forMap(Map<K, V> paramMap)
  {
    return new d(paramMap);
  }
  
  public static <K, V> Function<K, V> forMap(Map<K, ? extends V> paramMap, @Nullable V paramV)
  {
    return new b(paramMap, paramV);
  }
  
  public static <T> Function<T, Boolean> forPredicate(Predicate<T> paramPredicate)
  {
    return new f(paramPredicate, (byte)0);
  }
  
  @Beta
  public static <T> Function<Object, T> forSupplier(Supplier<T> paramSupplier)
  {
    return new g(paramSupplier, (byte)0);
  }
  
  public static <E> Function<E, E> identity()
  {
    return e.a;
  }
  
  public static Function<Object, String> toStringFunction()
  {
    return h.a;
  }
  
  static final class a<E>
    implements Function<Object, E>, Serializable
  {
    private static final long serialVersionUID = 0L;
    private final E a;
    
    public a(@Nullable E paramE)
    {
      this.a = paramE;
    }
    
    public final E apply(@Nullable Object paramObject)
    {
      return (E)this.a;
    }
    
    public final boolean equals(@Nullable Object paramObject)
    {
      if ((paramObject instanceof a))
      {
        paramObject = (a)paramObject;
        return Objects.equal(this.a, ((a)paramObject).a);
      }
      return false;
    }
    
    public final int hashCode()
    {
      if (this.a == null) {
        return 0;
      }
      return this.a.hashCode();
    }
    
    public final String toString()
    {
      String str = String.valueOf(String.valueOf(this.a));
      return str.length() + 10 + "constant(" + str + ")";
    }
  }
  
  static final class b<K, V>
    implements Function<K, V>, Serializable
  {
    private static final long serialVersionUID = 0L;
    final Map<K, ? extends V> a;
    final V b;
    
    b(Map<K, ? extends V> paramMap, @Nullable V paramV)
    {
      this.a = ((Map)Preconditions.checkNotNull(paramMap));
      this.b = paramV;
    }
    
    public final V apply(@Nullable K paramK)
    {
      Object localObject = this.a.get(paramK);
      if ((localObject != null) || (this.a.containsKey(paramK))) {
        return (V)localObject;
      }
      return (V)this.b;
    }
    
    public final boolean equals(@Nullable Object paramObject)
    {
      boolean bool2 = false;
      boolean bool1 = bool2;
      if ((paramObject instanceof b))
      {
        paramObject = (b)paramObject;
        bool1 = bool2;
        if (this.a.equals(((b)paramObject).a))
        {
          bool1 = bool2;
          if (Objects.equal(this.b, ((b)paramObject).b)) {
            bool1 = true;
          }
        }
      }
      return bool1;
    }
    
    public final int hashCode()
    {
      return Objects.hashCode(new Object[] { this.a, this.b });
    }
    
    public final String toString()
    {
      String str1 = String.valueOf(String.valueOf(this.a));
      String str2 = String.valueOf(String.valueOf(this.b));
      return str1.length() + 23 + str2.length() + "forMap(" + str1 + ", defaultValue=" + str2 + ")";
    }
  }
  
  static final class c<A, B, C>
    implements Function<A, C>, Serializable
  {
    private static final long serialVersionUID = 0L;
    private final Function<B, C> a;
    private final Function<A, ? extends B> b;
    
    public c(Function<B, C> paramFunction, Function<A, ? extends B> paramFunction1)
    {
      this.a = ((Function)Preconditions.checkNotNull(paramFunction));
      this.b = ((Function)Preconditions.checkNotNull(paramFunction1));
    }
    
    public final C apply(@Nullable A paramA)
    {
      return (C)this.a.apply(this.b.apply(paramA));
    }
    
    public final boolean equals(@Nullable Object paramObject)
    {
      boolean bool2 = false;
      boolean bool1 = bool2;
      if ((paramObject instanceof c))
      {
        paramObject = (c)paramObject;
        bool1 = bool2;
        if (this.b.equals(((c)paramObject).b))
        {
          bool1 = bool2;
          if (this.a.equals(((c)paramObject).a)) {
            bool1 = true;
          }
        }
      }
      return bool1;
    }
    
    public final int hashCode()
    {
      return this.b.hashCode() ^ this.a.hashCode();
    }
    
    public final String toString()
    {
      String str1 = String.valueOf(String.valueOf(this.a));
      String str2 = String.valueOf(String.valueOf(this.b));
      return str1.length() + 2 + str2.length() + str1 + "(" + str2 + ")";
    }
  }
  
  static final class d<K, V>
    implements Function<K, V>, Serializable
  {
    private static final long serialVersionUID = 0L;
    final Map<K, V> a;
    
    d(Map<K, V> paramMap)
    {
      this.a = ((Map)Preconditions.checkNotNull(paramMap));
    }
    
    public final V apply(@Nullable K paramK)
    {
      Object localObject = this.a.get(paramK);
      if ((localObject != null) || (this.a.containsKey(paramK))) {}
      for (boolean bool = true;; bool = false)
      {
        Preconditions.checkArgument(bool, "Key '%s' not present in map", new Object[] { paramK });
        return (V)localObject;
      }
    }
    
    public final boolean equals(@Nullable Object paramObject)
    {
      if ((paramObject instanceof d))
      {
        paramObject = (d)paramObject;
        return this.a.equals(((d)paramObject).a);
      }
      return false;
    }
    
    public final int hashCode()
    {
      return this.a.hashCode();
    }
    
    public final String toString()
    {
      String str = String.valueOf(String.valueOf(this.a));
      return str.length() + 8 + "forMap(" + str + ")";
    }
  }
  
  static enum e
    implements Function<Object, Object>
  {
    private e() {}
    
    @Nullable
    public final Object apply(@Nullable Object paramObject)
    {
      return paramObject;
    }
    
    public final String toString()
    {
      return "identity";
    }
  }
  
  static final class f<T>
    implements Function<T, Boolean>, Serializable
  {
    private static final long serialVersionUID = 0L;
    private final Predicate<T> a;
    
    private f(Predicate<T> paramPredicate)
    {
      this.a = ((Predicate)Preconditions.checkNotNull(paramPredicate));
    }
    
    public final boolean equals(@Nullable Object paramObject)
    {
      if ((paramObject instanceof f))
      {
        paramObject = (f)paramObject;
        return this.a.equals(((f)paramObject).a);
      }
      return false;
    }
    
    public final int hashCode()
    {
      return this.a.hashCode();
    }
    
    public final String toString()
    {
      String str = String.valueOf(String.valueOf(this.a));
      return str.length() + 14 + "forPredicate(" + str + ")";
    }
  }
  
  static final class g<T>
    implements Function<Object, T>, Serializable
  {
    private static final long serialVersionUID = 0L;
    private final Supplier<T> a;
    
    private g(Supplier<T> paramSupplier)
    {
      this.a = ((Supplier)Preconditions.checkNotNull(paramSupplier));
    }
    
    public final T apply(@Nullable Object paramObject)
    {
      return (T)this.a.get();
    }
    
    public final boolean equals(@Nullable Object paramObject)
    {
      if ((paramObject instanceof g))
      {
        paramObject = (g)paramObject;
        return this.a.equals(((g)paramObject).a);
      }
      return false;
    }
    
    public final int hashCode()
    {
      return this.a.hashCode();
    }
    
    public final String toString()
    {
      String str = String.valueOf(String.valueOf(this.a));
      return str.length() + 13 + "forSupplier(" + str + ")";
    }
  }
  
  static enum h
    implements Function<Object, String>
  {
    private h() {}
    
    public final String toString()
    {
      return "toString";
    }
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/com/google/common/base/Functions.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */