//
// Copyright (c) 2011, Brian Frank and Andy Frank
// Licensed under the Academic Free License version 3.0
//
// History:
// 8 Oct 11 Brian Frank Creation
//
**
** Optimized fixed size array of 1, 2, 4, or 8 byte unboxed integers.
** The array values default to zero.
**
@Js
native class IntArray
{
//////////////////////////////////////////////////////////////////////////
// Constructors
//////////////////////////////////////////////////////////////////////////
** Create a signed 8-bit, 1-byte integer array (-128 to 127).
static IntArray makeS1(Int size)
** Create a unsigned 8-bit, 1-byte integer array (0 to 255).
static IntArray makeU1(Int size)
** Create a signed 16-bit, 2-byte integer array (-32_768 to 32_767).
static IntArray makeS2(Int size)
** Create a unsigned 16-bit, 2-byte integer array (0 to 65_535).
static IntArray makeU2(Int size)
** Create a signed 32-bit, 4-byte integer array (-2_147_483_648 to 2_147_483_647).
static IntArray makeS4(Int size)
** Create a unsigned 32-bit, 4-byte integer array (0 to 4_294_967_295).
static IntArray makeU4(Int size)
** Create a signed 64-bit, 8-byte integer array.
static IntArray makeS8(Int size)
** Protected constructor for implementation classes
internal new make()
//////////////////////////////////////////////////////////////////////////
// Methods
//////////////////////////////////////////////////////////////////////////
** Get number of integers in the array
Int size()
** Get the integer at the given index.
** Negative indices are *not* supported.
@Operator Int get(Int index)
** Set the integer at the given index.
** Negative indices are *not* supported.
@Operator Void set(Int index, Int val)
** Copy the integers from 'that' array into this array and return
** this. The 'thatRange' parameter may be used to specify
** a specific range of integers from the 'that' parameter (negative
** indices *are* allowed) to copy. If 'thatRange' is null then the entire
** range of 'that' is copied. Or 'thisOffset' specifies the starting index
** of this index to copy the first integer. Raise an exception if this
** array is not properly sized or is not of the same signed/byte count
** as the 'that' array.
This copyFrom(IntArray that, Range? thatRange := null, Int thisOffset := 0)
** Fill this array with the given integer value. If range is null
** then the entire array is filled, otherwise just the specified range.
** Return this.
This fill(Int val, Range? range := null)
** Sort the integers in this array. If range is null then the
** entire array is sorted, otherwise just the specified range.
** Return this.
This sort(Range? range := null)
}