/*
* Minecraft Forge
* Copyright (c) 2016.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation version 2.1
* of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package net.minecraftforge.common.config;
//=========================================================
// Run away thar' be dragons!
//=========================================================
import java.util.Arrays;
import com.google.common.primitives.Booleans;
import com.google.common.primitives.Bytes;
import com.google.common.primitives.Doubles;
import com.google.common.primitives.Floats;
import com.google.common.primitives.Ints;
import com.google.common.primitives.Shorts;
import net.minecraftforge.common.config.Property.Type;
class TypeAdapters
{
/*
* boolean, boolean[], Boolean, Boolean[]
* float, float[], Float, Float[]
* double, double[], Double, Double[]
* byte, byte[], Byte, Byte[]
* char, char[], Character, Character[]
* short, short[], Short, Short[]
* int, int[], Integer, Integer[]
* String, String[]
*/
static ITypeAdapter bool = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return prop.getBoolean();
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Boolean)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Boolean)value);
}
@Override
public Type getType()
{
return Type.BOOLEAN;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter boolA = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return prop.getBooleanList();
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues((boolean[])value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValues((boolean[])value);
}
@Override
public Type getType()
{
return Type.BOOLEAN;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter Bool = new ITypeAdapter() {
public Object getValue(Property prop) {
return Boolean.valueOf(prop.getBoolean());
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Boolean)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Boolean)value);
}
@Override
public Type getType()
{
return Type.BOOLEAN;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter BoolA = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return Booleans.asList(prop.getBooleanList()).toArray(new Boolean[prop.getBooleanList().length]);
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues(Booleans.toArray(Arrays.asList((Boolean[]) value)));
}
@Override
public void setValue(Property property, Object value)
{
property.setValues(Booleans.toArray(Arrays.asList((Boolean[]) value)));
}
@Override
public Type getType()
{
return Type.BOOLEAN;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter flt = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return (float)prop.getDouble();
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Float)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Float)value);
}
@Override
public Type getType()
{
return Type.DOUBLE;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter fltA = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return Floats.toArray(Doubles.asList(prop.getDoubleList()));
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues(Doubles.toArray(Floats.asList((float[])value)));
}
@Override
public void setValue(Property property, Object value)
{
property.setValues(Doubles.toArray(Floats.asList((float[])value)));
}
@Override
public Type getType()
{
return Type.DOUBLE;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter Flt = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return Float.valueOf((float)prop.getDouble());
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Float)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Float)value);
}
@Override
public Type getType()
{
return Type.DOUBLE;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter FltA = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return Floats.asList(Floats.toArray(Doubles.asList(prop.getDoubleList()))).toArray(new Float[prop.getDoubleList().length]);
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues(Doubles.toArray(Arrays.asList((Float[])value)));
}
@Override
public void setValue(Property property, Object value)
{
property.setValues(Doubles.toArray(Arrays.asList((Float[])value)));
}
@Override
public Type getType()
{
return Type.DOUBLE;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter dbl = new ITypeAdapter() {
@Override
public Object getValue(Property prop)
{
return prop.getDouble();
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Double)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Double)value);
}
@Override
public Type getType()
{
return Type.DOUBLE;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter dblA = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return prop.getDoubleList();
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues((double[])value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValues((double[])value);
}
@Override
public Type getType()
{
return Type.DOUBLE;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter Dbl = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return Double.valueOf(prop.getDouble());
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Double)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Double) value);
}
@Override
public Type getType()
{
return Type.DOUBLE;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter DblA = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return Doubles.asList(prop.getDoubleList()).toArray(new Double[prop.getDoubleList().length]);
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues(Doubles.toArray(Arrays.asList((Double[])value)));
}
@Override
public void setValue(Property property, Object value)
{
property.setValues(Doubles.toArray(Arrays.asList((Double[])value)));
}
@Override
public Type getType()
{
return Type.DOUBLE;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter byt = new ITypeAdapter() {
@Override
public Object getValue(Property prop)
{
return (byte)prop.getInt();
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Byte)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Byte)value);
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter bytA = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return Bytes.toArray(Ints.asList(prop.getIntList()));
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues(Ints.toArray(Bytes.asList((byte[])value)));
}
@Override
public void setValue(Property property, Object value)
{
property.setValues(Ints.toArray(Bytes.asList((byte[])value)));
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter Byt = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return Byte.valueOf((byte)prop.getInt());
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Byte)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Byte)value);
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter BytA = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return Bytes.asList(Bytes.toArray(Ints.asList(prop.getIntList()))).toArray(new Byte[prop.getIntList().length]);
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues(Ints.toArray(Arrays.asList((Byte[]) value)));
}
@Override
public void setValue(Property property, Object value)
{
property.setValues(Ints.toArray(Arrays.asList((Byte[]) value)));
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter chr = new ITypeAdapter() {
public Object getValue(Property prop) {
return (char)prop.getInt();
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Character)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Character)value);
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter chrA = new ITypeAdapter() {
private int[] toPrim(char[] v) {
if (v == null) return new int[0];
int[] ret = new int[v.length];
for (int x = 0; x < v.length; x++)
ret[x] = v[x];
return ret;
}
public Object getValue(Property prop) {
int[] v = prop.getIntList();
char[] ret = new char[v.length];
for (int x = 0; x < v.length; x++)
ret[x] = (char)v[x];
return ret;
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues(toPrim((char[])value));
}
@Override
public void setValue(Property property, Object value)
{
property.setValues(toPrim((char[])value));
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter Chr = new ITypeAdapter() {
public Object getValue(Property prop) {
return Character.valueOf((char)prop.getInt());
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Character)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Character)value);
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter ChrA = new ITypeAdapter() {
private int[] toPrim(Character[] v) {
if (v == null) return new int[0];
int[] ret = new int[v.length];
for (int x = 0; x < v.length; x++)
ret[x] = v[x] == null ? 0 : v[x];
return ret;
}
public Object getValue(Property prop) {
int[] v = prop.getIntList();
Character[] ret = new Character[v.length];
for (int x = 0; x < v.length; x++)
ret[x] = Character.valueOf((char)v[x]);
return ret;
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues(toPrim((Character[])value));
}
@Override
public void setValue(Property property, Object value)
{
property.setValues(toPrim((Character[]) value));
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter shrt = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return (short)prop.getInt();
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Short)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Short)value);
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter shrtA = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return Shorts.toArray(Ints.asList(prop.getIntList()));
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues(Ints.toArray(Shorts.asList((short[])value)));
}
@Override
public void setValue(Property property, Object value)
{
property.setValues(Ints.toArray(Shorts.asList((short[])value)));
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter Shrt = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return Short.valueOf((short)prop.getInt());
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Short)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Short)value);
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter ShrtA = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
int[] v = prop.getIntList();
Short[] ret = new Short[v.length];
for (int x = 0; x < ret.length; x++)
ret[x] = Short.valueOf((short)v[x]);
return ret;
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues(Ints.toArray(Arrays.asList((Short[])value)));
}
@Override
public void setValue(Property property, Object value)
{
property.setValues(Ints.toArray(Arrays.asList((Short[])value)));
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter int_ = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return prop.getInt();
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Integer)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Integer)value);
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter intA = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return prop.getIntList();
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues((int[])value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValues((int[])value);
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter Int = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return (Integer)prop.getInt();
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((Integer)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((Integer)value);
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter IntA = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return Ints.asList(prop.getIntList()).toArray(new Integer[prop.getIntList().length]);
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues(Ints.toArray(Arrays.asList((Integer[])value)));
}
@Override
public void setValue(Property property, Object value)
{
property.setValues(Ints.toArray(Arrays.asList((Integer[])value)));
}
@Override
public Type getType()
{
return Type.INTEGER;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
static ITypeAdapter Str = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return prop.getString();
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValue((String)value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValue((String)value);
}
@Override
public Type getType()
{
return Type.STRING;
}
@Override
public boolean isArrayAdapter()
{
return false;
}
};
static ITypeAdapter StrA = new ITypeAdapter() {
@Override
public Object getValue(Property prop) {
return prop.getStringList();
}
@Override
public void setDefaultValue(Property property, Object value)
{
property.setDefaultValues((String[])value);
}
@Override
public void setValue(Property property, Object value)
{
property.setValues((String[])value);
}
@Override
public Type getType()
{
return Type.STRING;
}
@Override
public boolean isArrayAdapter()
{
return true;
}
};
}