package crazypants.enderio.tool;
import java.lang.reflect.Array;
public class ArrayMappingTool<T extends Object> {
private final byte[] from_mapping;
private final byte[] to_mapping;
public ArrayMappingTool(String from_mapping, String to_mapping) {
this.from_mapping = from_mapping.getBytes();
this.to_mapping = to_mapping.getBytes();
}
private T getNextT(T[] in, byte what) {
for (int i = 0; i < from_mapping.length; i++) {
if (from_mapping[i] == what && in[i] != null) {
T result = in[i];
in[i] = null;
return result;
}
}
return null;
}
public T[] map(T[] in) {
T[] in_tmp = in.clone();
T[] out = (T[]) Array.newInstance(in.getClass().getComponentType(), to_mapping.length);
for (int i = 0; i < to_mapping.length; i++) {
out[i] = getNextT(in_tmp, to_mapping[i]);
}
return out;
}
}