change for 9 array classes
This commit is contained in:
@@ -1,67 +0,0 @@
|
||||
package jet.arrays;
|
||||
|
||||
import jet.JetObject;
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public abstract class JetArray<T> implements JetObject {
|
||||
public abstract T get(int index);
|
||||
public abstract void set(int index, T value);
|
||||
public abstract int getSize();
|
||||
|
||||
public static JetArray newArray(int length, TypeInfo elementTypeInfo) {
|
||||
if(elementTypeInfo.equals(TypeInfo.BYTE_TYPE_INFO))
|
||||
return new JetByteArray(length);
|
||||
if(elementTypeInfo.equals(TypeInfo.SHORT_TYPE_INFO))
|
||||
return new JetShortArray(length);
|
||||
if(elementTypeInfo.equals(TypeInfo.INT_TYPE_INFO))
|
||||
return new JetIntArray(length);
|
||||
if(elementTypeInfo.equals(TypeInfo.LONG_TYPE_INFO))
|
||||
return new JetShortArray(length);
|
||||
if(elementTypeInfo.equals(TypeInfo.CHAR_TYPE_INFO))
|
||||
return new JetCharArray(length);
|
||||
if(elementTypeInfo.equals(TypeInfo.BOOL_TYPE_INFO))
|
||||
return new JetBoolArray(length);
|
||||
if(elementTypeInfo.equals(TypeInfo.FLOAT_TYPE_INFO))
|
||||
return new JetFloatArray(length);
|
||||
if(elementTypeInfo.equals(TypeInfo.DOUBLE_TYPE_INFO))
|
||||
return new JetDoubleArray(length);
|
||||
|
||||
return new JetGenericArray(length, elementTypeInfo);
|
||||
}
|
||||
|
||||
public static JetByteArray newByteArray(int length) {
|
||||
return new JetByteArray(length);
|
||||
}
|
||||
|
||||
public static JetShortArray newShortArray(int length) {
|
||||
return new JetShortArray(length);
|
||||
}
|
||||
|
||||
public static JetIntArray newIntArray(int length) {
|
||||
return new JetIntArray(length);
|
||||
}
|
||||
|
||||
public static JetLongArray newLongArray(int length) {
|
||||
return new JetLongArray(length);
|
||||
}
|
||||
|
||||
public static JetCharArray newCharArray(int length) {
|
||||
return new JetCharArray(length);
|
||||
}
|
||||
|
||||
public static JetBoolArray newBoolArray(int length) {
|
||||
return new JetBoolArray(length);
|
||||
}
|
||||
|
||||
public static JetFloatArray newFloatArray(int length) {
|
||||
return new JetFloatArray(length);
|
||||
}
|
||||
|
||||
public static JetDoubleArray newDoubleArray(int length) {
|
||||
return new JetDoubleArray(length);
|
||||
}
|
||||
|
||||
public static JetGenericArray newGenericArray(int length, TypeInfo typeInfo) {
|
||||
return new JetGenericArray(length, typeInfo);
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package jet.arrays;
|
||||
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public final class JetBoolArray extends JetArray<Boolean> {
|
||||
public final boolean[] array;
|
||||
|
||||
public JetBoolArray(boolean[] array) {
|
||||
this.array = array;
|
||||
}
|
||||
|
||||
public JetBoolArray(int length) {
|
||||
this.array = new boolean[length];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean get(int index) {
|
||||
return array[index];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(int index, Boolean value) {
|
||||
array[index] = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return array.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo<?> getTypeInfo() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package jet.arrays;
|
||||
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public final class JetByteArray extends JetArray<Byte> {
|
||||
public final byte[] array;
|
||||
|
||||
public JetByteArray(byte[] array) {
|
||||
this.array = array;
|
||||
}
|
||||
|
||||
public JetByteArray(int length) {
|
||||
this.array = new byte[length];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Byte get(int index) {
|
||||
return array[index];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(int index, Byte value) {
|
||||
array[index] = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return array.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo<?> getTypeInfo() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package jet.arrays;
|
||||
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public final class JetCharArray extends JetArray<Character> {
|
||||
public final char[] array;
|
||||
|
||||
public JetCharArray(char[] array) {
|
||||
this.array = array;
|
||||
}
|
||||
|
||||
public JetCharArray(int length) {
|
||||
this.array = new char[length];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Character get(int index) {
|
||||
return array[index];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(int index, Character value) {
|
||||
array[index] = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return array.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo<?> getTypeInfo() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package jet.arrays;
|
||||
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public final class JetDoubleArray extends JetArray<Double> {
|
||||
public final double[] array;
|
||||
|
||||
public JetDoubleArray(double[] array) {
|
||||
this.array = array;
|
||||
}
|
||||
|
||||
public JetDoubleArray(int length) {
|
||||
this.array = new double[length];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Double get(int index) {
|
||||
return array[index];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(int index, Double value) {
|
||||
array[index] = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return array.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo<?> getTypeInfo() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package jet.arrays;
|
||||
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public final class JetFloatArray extends JetArray<Float> {
|
||||
public final float[] array;
|
||||
|
||||
public JetFloatArray(float[] array) {
|
||||
this.array = array;
|
||||
}
|
||||
|
||||
public JetFloatArray(int length) {
|
||||
this.array = new float[length];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Float get(int index) {
|
||||
return array[index];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(int index, Float value) {
|
||||
array[index] = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return array.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo<?> getTypeInfo() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
package jet.arrays;
|
||||
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public final class JetGenericArray<T> extends JetArray<T> {
|
||||
public final T[] array;
|
||||
private final TypeInfo<T> typeInfo;
|
||||
|
||||
public JetGenericArray(T[] array, TypeInfo<T> typeInfo) {
|
||||
this.array = array;
|
||||
this.typeInfo = typeInfo;
|
||||
}
|
||||
|
||||
public JetGenericArray(int length, TypeInfo<T> typeInfo) {
|
||||
this.array = (T[]) TypeInfo.newArray(length, typeInfo);
|
||||
this.typeInfo = typeInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public T get(int index) {
|
||||
return array[index];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(int index, T value) {
|
||||
array[index] = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return array.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo<?> getTypeInfo() {
|
||||
return typeInfo;
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package jet.arrays;
|
||||
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public final class JetIntArray extends JetArray<Integer> {
|
||||
public final int[] array;
|
||||
|
||||
public JetIntArray(int[] array) {
|
||||
this.array = array;
|
||||
}
|
||||
|
||||
public JetIntArray(int length) {
|
||||
this.array = new int[length];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer get(int index) {
|
||||
return array[index];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(int index, Integer value) {
|
||||
array[index] = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return array.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo<?> getTypeInfo() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package jet.arrays;
|
||||
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public final class JetLongArray extends JetArray<Long> {
|
||||
public final long[] array;
|
||||
|
||||
public JetLongArray(long[] array) {
|
||||
this.array = array;
|
||||
}
|
||||
|
||||
public JetLongArray(int length) {
|
||||
this.array = new long[length];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long get(int index) {
|
||||
return array[index];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(int index, Long value) {
|
||||
array[index] = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return array.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo<?> getTypeInfo() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
package jet.arrays;
|
||||
|
||||
import jet.typeinfo.TypeInfo;
|
||||
|
||||
public final class JetShortArray extends JetArray<Short> {
|
||||
public final short[] array;
|
||||
|
||||
public JetShortArray(short[] array) {
|
||||
this.array = array;
|
||||
}
|
||||
|
||||
public JetShortArray(int length) {
|
||||
this.array = new short[length];
|
||||
}
|
||||
|
||||
@Override
|
||||
public Short get(int index) {
|
||||
return array[index];
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set(int index, Short value) {
|
||||
array[index] = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSize() {
|
||||
return array.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo<?> getTypeInfo() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,6 @@ package jet.typeinfo;
|
||||
|
||||
import jet.JetObject;
|
||||
import jet.Tuple0;
|
||||
import jet.arrays.*;
|
||||
|
||||
import java.lang.reflect.Array;
|
||||
import java.lang.reflect.Field;
|
||||
@@ -51,31 +50,7 @@ public abstract class TypeInfo<T> implements JetObject {
|
||||
public static final TypeInfo<Tuple0> NULLABLE_TUPLE0_TYPE_INFO = getTypeInfo(Tuple0.class, true);
|
||||
|
||||
public static Object [] newArray(int length, TypeInfo typeInfo) {
|
||||
Signature signature = ((TypeInfoImpl) typeInfo).signature;
|
||||
if(signature.klazz.isArray() && signature.klazz.getComponentType().isPrimitive()) {
|
||||
Class componentType = signature.klazz.getComponentType();
|
||||
if(componentType == byte.class)
|
||||
return (Object[]) Array.newInstance(JetByteArray.class, length);
|
||||
if(componentType == short.class)
|
||||
return (Object[]) Array.newInstance(JetShortArray.class, length);
|
||||
if(componentType == int.class)
|
||||
return (Object[]) Array.newInstance(JetIntArray.class, length);
|
||||
if(componentType == long.class)
|
||||
return (Object[]) Array.newInstance(JetLongArray.class, length);
|
||||
if(componentType == char.class)
|
||||
return (Object[]) Array.newInstance(JetCharArray.class, length);
|
||||
if(componentType == boolean.class)
|
||||
return (Object[]) Array.newInstance(JetBoolArray.class, length);
|
||||
if(componentType == float.class)
|
||||
return (Object[]) Array.newInstance(JetFloatArray.class, length);
|
||||
if(componentType == double.class)
|
||||
return (Object[]) Array.newInstance(JetDoubleArray.class, length);
|
||||
|
||||
throw new IllegalStateException();
|
||||
}
|
||||
else {
|
||||
return (Object[]) Array.newInstance(signature.klazz, length);
|
||||
}
|
||||
return (Object[]) Array.newInstance(((TypeInfoImpl)typeInfo).signature.klazz, length);
|
||||
}
|
||||
|
||||
public static <T> TypeInfoProjection invariantProjection(final TypeInfo<T> typeInfo) {
|
||||
@@ -495,6 +470,12 @@ public abstract class TypeInfo<T> implements JetObject {
|
||||
}
|
||||
|
||||
private static Signature internalParse(Class klass) {
|
||||
if(klass.isArray() && !klass.getComponentType().isPrimitive()) {
|
||||
Signature signature = new ArraySignature(klass);
|
||||
map.put(klass, signature);
|
||||
return signature;
|
||||
}
|
||||
|
||||
JetSignature annotation = (JetSignature) klass.getAnnotation(JetSignature.class);
|
||||
if(annotation != null) {
|
||||
String value = annotation.value();
|
||||
@@ -710,5 +691,26 @@ public abstract class TypeInfo<T> implements JetObject {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static class ArraySignature extends Signature {
|
||||
public ArraySignature(Class klass) {
|
||||
super(null, klass);
|
||||
variables = new LinkedList<TypeInfoProjection>();
|
||||
varNames = new HashMap<String, Integer>();
|
||||
varNames.put("T", 0);
|
||||
final TypeInfoVar typeInfoVar = new TypeInfoVar(this, 0);
|
||||
variables.add(new TypeInfoProjection(){
|
||||
@Override
|
||||
public TypeInfoVariance getVariance() {
|
||||
return TypeInfoVariance.INVARIANT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TypeInfo getType() {
|
||||
return typeInfoVar;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user