use of edu.columbia.cs.psl.phosphor.struct.LazyLongArrayIntTags in project phosphor by gmu-swe.
the class MultiDTaintedArrayWithIntTag method boxIfNecessary.
public static final Object boxIfNecessary(final Object in) {
if (in != null && in.getClass().isArray()) {
Class tmp = in.getClass();
int dims = 0;
while (tmp.isArray()) {
tmp = tmp.getComponentType();
dims++;
}
if (tmp.isPrimitive()) {
// Is prim arraytype
if (dims > 1) {
// this should never be possible.
Type t = Type.getType(in.getClass());
return initWithEmptyTaints((Object[]) in, t.getElementType().getSort(), t.getDimensions());
} else {
if (tmp == Boolean.TYPE)
return new LazyBooleanArrayIntTags((boolean[]) in);
if (tmp == Byte.TYPE)
return new LazyByteArrayIntTags(((byte[]) in));
if (tmp == Character.TYPE)
return new LazyCharArrayIntTags(((char[]) in));
if (tmp == Double.TYPE)
return new LazyDoubleArrayIntTags(((double[]) in));
if (tmp == Float.TYPE)
return new LazyFloatArrayIntTags(((float[]) in));
if (tmp == Integer.TYPE)
return new LazyIntArrayIntTags(((int[]) in));
if (tmp == Long.TYPE)
return new LazyLongArrayIntTags(((long[]) in));
if (tmp == Short.TYPE)
return new LazyShortArrayIntTags(((short[]) in));
throw new IllegalArgumentException();
}
} else if (in.getClass().getComponentType().getName().equals("java.lang.Object")) {
Object[] _in = (Object[]) in;
for (int i = 0; i < _in.length; i++) {
_in[i] = boxIfNecessary(_in[i], new HashSet<Object>());
}
}
}
return in;
}
use of edu.columbia.cs.psl.phosphor.struct.LazyLongArrayIntTags in project phosphor by gmu-swe.
the class ArrayReflectionMasker method newInstance$$PHOSPHORTAGGED.
public static Object newInstance$$PHOSPHORTAGGED(Class clazz, int lenTaint, int len) {
Class tmp = clazz;
int dims = 0;
while (tmp.isArray()) {
tmp = tmp.getComponentType();
dims++;
}
if (tmp.isPrimitive()) {
// else
if (dims == 0) {
if (tmp == Double.TYPE)
return new LazyDoubleArrayIntTags(new double[len]);
if (tmp == Float.TYPE)
return new LazyFloatArrayIntTags(new float[len]);
if (tmp == Integer.TYPE)
return new LazyIntArrayIntTags(new int[len]);
if (tmp == Long.TYPE)
return new LazyLongArrayIntTags(new long[len]);
if (tmp == Short.TYPE)
return new LazyShortArrayIntTags(new short[len]);
if (tmp == Boolean.TYPE)
return new LazyBooleanArrayIntTags(new boolean[len]);
if (tmp == Byte.TYPE)
return new LazyByteArrayIntTags(new byte[len]);
if (tmp == Character.TYPE)
return new LazyCharArrayIntTags(new char[len]);
} else
clazz = MultiDTaintedArrayWithIntTag.getUnderlyingBoxClassForUnderlyingClass(clazz);
}
return Array.newInstance(clazz, len);
}
Aggregations