/// Small array utils
module sily.array;

/** 
Returns true if `val` is one of `vals`
Params:
  val = Value to check
  vals = Array or sequence of values to check against
*/
bool isOneOf(T)(T val, T[] vals ...) {
    foreach (T i; vals) {
        if (val == i) return true;
    }
    return false;
}

/** 
Fills array with values `val` up to `size` if it's not 0
Params:
  arr = Array to fill
  val = Values to fill with
Returns: Filled array
*/
T[] fill(T)(T[] arr, T val){

    arr = arr.dup;

    for (int i = 0; i < arr.length; i ++) {
        arr[i] = val;
    }

    return arr;
}

/** 
Fills and returns new array with values `val` up to `size`
Params:
  val = Values to fill with
  size = Amount of pos to fill
Returns: Filled array
*/
T[] fill(T)(T val, size_t size){
    T[] arr = new T[](size);

    for (int i = 0; i < size; i ++) {
        arr[i] = val;
    }

    return arr;
}
/// Ditto
alias repeat = fill;