package com.fasterxml.aalto.util;

import java.lang.reflect.Array;

public final class DataUtil
{
    final static char[] EMPTY_CHAR_ARRAY = new char[0];

    private DataUtil() { }

    public static char[] getEmptyCharArray() {
        return EMPTY_CHAR_ARRAY;
    }

    /*
    ////////////////////////////////////////////////////////////
    // Methods for common operations on std data structs
    ////////////////////////////////////////////////////////////
    */

    public static String[] growArrayBy(String[] arr, int more)
    {
        if (arr == null) {
            return new String[more];
        }
        String[] old = arr;
        int len = arr.length;
        arr = new String[len + more];
        System.arraycopy(old, 0, arr, 0, len);
        return arr;
    }

    public static int[] growArrayBy(int[] arr, int more)
    {
        if (arr == null) {
            return new int[more];
        }
        int[] old = arr;
        int len = arr.length;
        arr = new int[len + more];
        System.arraycopy(old, 0, arr, 0, len);
        return arr;
    }

    public static char[] growArrayBy(char[] arr, int more)
    {
        if (arr == null) {
            return new char[more];
        }
        char[] old = arr;
        int len = arr.length;
        arr = new char[len + more];
        System.arraycopy(old, 0, arr, 0, len);
        return arr;
    }

    public static Object growAnyArrayBy(Object arr, int more)
    {
        if (arr == null) {
            throw new IllegalArgumentException("Null array");
        }
        Object old = arr;
        int len = Array.getLength(arr);
        arr = Array.newInstance(arr.getClass().getComponentType(), len + more);
        System.arraycopy(old, 0, arr, 0, len);
        return arr;
    }
}