package cc.blynk.utils;
import cc.blynk.server.core.model.DashBoard;
import cc.blynk.server.core.model.auth.App;
import cc.blynk.server.core.model.device.Device;
import cc.blynk.server.core.model.device.Tag;
import cc.blynk.server.core.model.widgets.Widget;
import java.lang.reflect.Array;
/**
* The Blynk Project.
* Created by Dmitriy Dumanskiy.
* Created on 04.01.16.
*/
public class ArrayUtil {
public static final int[] EMPTY_INTS = {};
public static final DashBoard[] EMPTY_DASHBOARDS = {};
public static final Tag[] EMPTY_TAGS = {};
public static final Device[] EMPTY_DEVICES = {};
public static final Widget[] EMPTY_WIDGETS = {};
public static final byte[] EMPTY_BYTES = {};
public static final App[] EMPTY_APPS = {};
public static <T> T[] add(T[] array, T element, Class<T> type) {
T[] newArray = copyArrayGrow1(array, type);
newArray[newArray.length - 1] = element;
return newArray;
}
@SuppressWarnings("unchecked")
private static <T> T[] copyArrayGrow1(final T[] array, Class<T> type) {
T[] newArray = (T[]) Array.newInstance(type, array.length + 1);
System.arraycopy(array, 0, newArray, 0, array.length);
return newArray;
}
@SuppressWarnings("unchecked")
public static <T> T[] remove(final T[] array, final int index, Class<T> type) {
final T[] result = (T[]) Array.newInstance(type, array.length - 1);
System.arraycopy(array, 0, result, 0, index);
if (index < array.length - 1) {
System.arraycopy(array, index + 1, result, index, array.length - index - 1);
}
return result;
}
public static boolean contains(final int[] ar, final int val) {
for (final int arVal : ar) {
if (arVal == val) {
return true;
}
}
return false;
}
}