/*
Компилятор языка программирования
Объектно-ориентированный продвинутый векторный транслятор
Copyright © 2021, 2024 Малик Разработчик
Это свободная программа: вы можете перераспространять ее и/или изменять
ее на условиях Стандартной общественной лицензии GNU в том виде,
в каком она была опубликована Фондом свободного программного обеспечения;
либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
Эта программа распространяется в надежде, что она будет полезной,
но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Стандартной
общественной лицензии GNU.
Вы должны были получить копию Стандартной общественной лицензии GNU
вместе с этой программой. Если это не так, см.
<https://www.gnu.org/licenses/>.
*/
package ru.malik.elaborarer.avtoo.lang;
import avt.lang.array.*;
public final class Byte2Storage(Storage, Cloneable, Measureable, Byte2Array)
{
private byte2[] fldArray;
public () {
byte2[] array = new byte2[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Byte2Storage source) {
byte2[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new byte2[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Byte2Storage clone() { return new Byte2Storage(this); }
public int indexOf(byte2 item) {
for(byte2[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == item) return index;
return -1;
}
public int indexAcquire(byte2 item) {
int result = indexOf(item);
if(result < 0)
{
byte2[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new byte2[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public byte2 operator [](int index) { return fldArray[index]; }
}
public final class Byte4Storage(Storage, Cloneable, Measureable, Byte4Array)
{
private byte4[] fldArray;
public () {
byte4[] array = new byte4[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Byte4Storage source) {
byte4[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new byte4[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Byte4Storage clone() { return new Byte4Storage(this); }
public int indexOf(byte4 item) {
for(byte4[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == item) return index;
return -1;
}
public int indexAcquire(byte4 item) {
int result = indexOf(item);
if(result < 0)
{
byte4[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new byte4[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public byte4 operator [](int index) { return fldArray[index]; }
}
public final class Byte8Storage(Storage, Cloneable, Measureable, Byte8Array)
{
private byte8[] fldArray;
public () {
byte8[] array = new byte8[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Byte8Storage source) {
byte8[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new byte8[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Byte8Storage clone() { return new Byte8Storage(this); }
public int indexOf(byte8 item) {
for(byte8[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == item) return index;
return -1;
}
public int indexAcquire(byte8 item) {
int result = indexOf(item);
if(result < 0)
{
byte8[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new byte8[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public byte8 operator [](int index) { return fldArray[index]; }
}
public final class Short2Storage(Storage, Cloneable, Measureable, Short2Array)
{
private short2[] fldArray;
public () {
short2[] array = new short2[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Short2Storage source) {
short2[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new short2[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Short2Storage clone() { return new Short2Storage(this); }
public int indexOf(short2 item) {
for(short2[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == item) return index;
return -1;
}
public int indexAcquire(short2 item) {
int result = indexOf(item);
if(result < 0)
{
short2[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new short2[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public short2 operator [](int index) { return fldArray[index]; }
}
public final class Short4Storage(Storage, Cloneable, Measureable, Short4Array)
{
private short4[] fldArray;
public () {
short4[] array = new short4[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Short4Storage source) {
short4[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new short4[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Short4Storage clone() { return new Short4Storage(this); }
public int indexOf(short4 item) {
for(short4[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == item) return index;
return -1;
}
public int indexAcquire(short4 item) {
int result = indexOf(item);
if(result < 0)
{
short4[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new short4[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public short4 operator [](int index) { return fldArray[index]; }
}
public final class Short8Storage(Storage, Cloneable, Measureable, Short8Array)
{
private short8[] fldArray;
public () {
short8[] array = new short8[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Short8Storage source) {
short8[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new short8[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Short8Storage clone() { return new Short8Storage(this); }
public int indexOf(short8 item) {
for(short8[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == item) return index;
return -1;
}
public int indexAcquire(short8 item) {
int result = indexOf(item);
if(result < 0)
{
short8[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new short8[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public short8 operator [](int index) { return fldArray[index]; }
}
public final class Int2Storage(Storage, Cloneable, Measureable, Int2Array)
{
private int2[] fldArray;
public () {
int2[] array = new int2[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Int2Storage source) {
int2[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new int2[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Int2Storage clone() { return new Int2Storage(this); }
public int indexOf(int2 item) {
for(int2[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == item) return index;
return -1;
}
public int indexAcquire(int2 item) {
int result = indexOf(item);
if(result < 0)
{
int2[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new int2[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public int2 operator [](int index) { return fldArray[index]; }
}
public final class Int4Storage(Storage, Cloneable, Measureable, Int4Array)
{
private int4[] fldArray;
public () {
int4[] array = new int4[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Int4Storage source) {
int4[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new int4[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Int4Storage clone() { return new Int4Storage(this); }
public int indexOf(int4 item) {
for(int4[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == item) return index;
return -1;
}
public int indexAcquire(int4 item) {
int result = indexOf(item);
if(result < 0)
{
int4[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new int4[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public int4 operator [](int index) { return fldArray[index]; }
}
public final class Int8Storage(Storage, Cloneable, Measureable, Int8Array)
{
private int8[] fldArray;
public () {
int8[] array = new int8[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Int8Storage source) {
int8[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new int8[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Int8Storage clone() { return new Int8Storage(this); }
public int indexOf(int8 item) {
for(int8[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == item) return index;
return -1;
}
public int indexAcquire(int8 item) {
int result = indexOf(item);
if(result < 0)
{
int8[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new int8[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public int8 operator [](int index) { return fldArray[index]; }
}
public final class LongStorage(Storage, Cloneable, Measureable, LongArray)
{
private long[] fldArray;
public () {
long[] array = new long[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (LongStorage source) {
long[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new long[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public LongStorage clone() { return new LongStorage(this); }
public int indexOf(long item) { return Array.indexOf(item, fldArray, 0, 0); }
public int indexAcquire(long item) {
int result = indexOf(item);
if(result < 0)
{
long[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new long[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public long operator [](int index) { return fldArray[index]; }
}
public final class Long2Storage(Storage, Cloneable, Measureable, Long2Array)
{
private long2[] fldArray;
public () {
long2[] array = new long2[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Long2Storage source) {
long2[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new long2[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Long2Storage clone() { return new Long2Storage(this); }
public int indexOf(long2 item) {
for(long2[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == item) return index;
return -1;
}
public int indexAcquire(long2 item) {
int result = indexOf(item);
if(result < 0)
{
long2[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new long2[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public long2 operator [](int index) { return fldArray[index]; }
}
public final class Long4Storage(Storage, Cloneable, Measureable, Long4Array)
{
private long4[] fldArray;
public () {
long4[] array = new long4[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Long4Storage source) {
long4[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new long4[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Long4Storage clone() { return new Long4Storage(this); }
public int indexOf(long4 item) {
for(long4[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == item) return index;
return -1;
}
public int indexAcquire(long4 item) {
int result = indexOf(item);
if(result < 0)
{
long4[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new long4[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public long4 operator [](int index) { return fldArray[index]; }
}
public final class Long8Storage(Storage, Cloneable, Measureable, Long8Array)
{
private long8[] fldArray;
public () {
long8[] array = new long8[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Long8Storage source) {
long8[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new long8[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Long8Storage clone() { return new Long8Storage(this); }
public int indexOf(long8 item) {
for(long8[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == item) return index;
return -1;
}
public int indexAcquire(long8 item) {
int result = indexOf(item);
if(result < 0)
{
long8[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new long8[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public long8 operator [](int index) { return fldArray[index]; }
}
public final class FloatStorage(Storage, Cloneable, Measureable, FloatArray)
{
private int[] fldArray;
public () {
int[] array = new int[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (FloatStorage source) {
int[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new int[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public FloatStorage clone() { return new FloatStorage(this); }
public int indexOf(float item) { return Array.indexOf(Float.toIntBits(item), fldArray, 0, 0); }
public int indexAcquire(float item) {
int result = indexOf(item);
if(result < 0)
{
int[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new int[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = Float.toIntBits(item);
}
return result;
}
public float operator [](int index) { return Int.toFloatBits(fldArray[index]); }
}
public final class Float2Storage(Storage, Cloneable, Measureable, Float2Array)
{
private int2[] fldArray;
public () {
int2[] array = new int2[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Float2Storage source) {
int2[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new int2[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Float2Storage clone() { return new Float2Storage(this); }
public int indexOf(float2 item) {
for(int2 bits = Float2.toInt2Bits(item), int2[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == bits) return index;
return -1;
}
public int indexAcquire(float2 item) {
int result = indexOf(item);
if(result < 0)
{
int2[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new int2[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = Float2.toInt2Bits(item);
}
return result;
}
public float2 operator [](int index) { return Int2.toFloat2Bits(fldArray[index]); }
}
public final class Float4Storage(Storage, Cloneable, Measureable, Float4Array)
{
private int4[] fldArray;
public () {
int4[] array = new int4[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Float4Storage source) {
int4[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new int4[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Float4Storage clone() { return new Float4Storage(this); }
public int indexOf(float4 item) {
for(int4 bits = Float4.toInt4Bits(item), int4[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == bits) return index;
return -1;
}
public int indexAcquire(float4 item) {
int result = indexOf(item);
if(result < 0)
{
int4[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new int4[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = Float4.toInt4Bits(item);
}
return result;
}
public float4 operator [](int index) { return Int4.toFloat4Bits(fldArray[index]); }
}
public final class Float8Storage(Storage, Cloneable, Measureable, Float8Array)
{
private int8[] fldArray;
public () {
int8[] array = new int8[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Float8Storage source) {
int8[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new int8[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Float8Storage clone() { return new Float8Storage(this); }
public int indexOf(float8 item) {
for(int8 bits = Float8.toInt8Bits(item), int8[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == bits) return index;
return -1;
}
public int indexAcquire(float8 item) {
int result = indexOf(item);
if(result < 0)
{
int8[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new int8[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = Float8.toInt8Bits(item);
}
return result;
}
public float8 operator [](int index) { return Int8.toFloat8Bits(fldArray[index]); }
}
public final class DoubleStorage(Storage, Cloneable, Measureable, DoubleArray)
{
private long[] fldArray;
public () {
long[] array = new long[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (DoubleStorage source) {
long[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new long[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public DoubleStorage clone() { return new DoubleStorage(this); }
public int indexOf(double item) { return Array.indexOf(Double.toLongBits(item), fldArray, 0, 0); }
public int indexAcquire(double item) {
int result = indexOf(item);
if(result < 0)
{
long[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new long[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = Double.toLongBits(item);
}
return result;
}
public double operator [](int index) { return Long.toDoubleBits(fldArray[index]); }
}
public final class Double2Storage(Storage, Cloneable, Measureable, Double2Array)
{
private long2[] fldArray;
public () {
long2[] array = new long2[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Double2Storage source) {
long2[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new long2[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Double2Storage clone() { return new Double2Storage(this); }
public int indexOf(double2 item) {
for(long2 bits = Double2.toLong2Bits(item), long2[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == bits) return index;
return -1;
}
public int indexAcquire(double2 item) {
int result = indexOf(item);
if(result < 0)
{
long2[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new long2[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = Double2.toLong2Bits(item);
}
return result;
}
public double2 operator [](int index) { return Long2.toDouble2Bits(fldArray[index]); }
}
public final class Double4Storage(Storage, Cloneable, Measureable, Double4Array)
{
private long4[] fldArray;
public () {
long4[] array = new long4[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Double4Storage source) {
long4[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new long4[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Double4Storage clone() { return new Double4Storage(this); }
public int indexOf(double4 item) {
for(long4 bits = Double4.toLong4Bits(item), long4[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == bits) return index;
return -1;
}
public int indexAcquire(double4 item) {
int result = indexOf(item);
if(result < 0)
{
long4[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new long4[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = Double4.toLong4Bits(item);
}
return result;
}
public double4 operator [](int index) { return Long4.toDouble4Bits(fldArray[index]); }
}
public final class Double8Storage(Storage, Cloneable, Measureable, Double8Array)
{
private long8[] fldArray;
public () {
long8[] array = new long8[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (Double8Storage source) {
long8[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new long8[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public Double8Storage clone() { return new Double8Storage(this); }
public int indexOf(double8 item) {
for(long8 bits = Double8.toLong8Bits(item), long8[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(array[index] == bits) return index;
return -1;
}
public int indexAcquire(double8 item) {
int result = indexOf(item);
if(result < 0)
{
long8[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new long8[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = Double8.toLong8Bits(item);
}
return result;
}
public double8 operator [](int index) { return Long8.toDouble8Bits(fldArray[index]); }
}
public final class RealStorage(Storage, Cloneable, Measureable, RealArray)
{
private real[] fldArray;
public () {
real[] array = new real[0x3f];
array.length = 0;
fldData = fldArray = array;
}
private (RealStorage source) {
real[] array = source.fldArray;
int capacity = array.capacity;
int length = array.length;
Array.copy(array, 0, array = new real[capacity], 0, array.length = length);
fldData = fldArray = array;
}
public RealStorage clone() { return new RealStorage(this); }
public int indexOf(real item) {
for(long2 bits = Real.toLong2Bits(item), real[] array = fldArray, int length = array.length, int index = 0; index < length; index++) if(Real.toLong2Bits(array[index]) == bits) return index;
return -1;
}
public int indexAcquire(real item) {
int result = indexOf(item);
if(result < 0)
{
real[] array = fldArray;
if((result = array.length) == array.capacity)
{
if(result == Int.MAX_VALUE)
{
throw new BufferTooLargeError(avt.lang.package.getResourceString("!error.buffer-too-large"));
}
Array.copy(array, 0, array = new real[result << 1 | 1], 0, result);
fldData = fldArray = array;
}
array.length = result + 1;
array[result] = item;
}
return result;
}
public real operator [](int index) { return fldArray[index]; }
}
public final class StringStorage(ObjectStorage, Cloneable, Measureable, ObjectArray)
{
private String[] fldArray;
public () { }
private (StringStorage source): super(source) { }
public StringStorage clone() { return new StringStorage(this); }
public int indexOf(String item) { return super.indexOf(item); }
public int indexAcquire(String item) { return super.indexAcquire(item); }
public String operator [](int index) { return fldArray[index]; }
protected void setArray(Object[] array) { fldArray = (String[]) array; }
protected String getEmpty() { return ""; }
protected String[] newArray(int capacity) { return new String[capacity]; }
}
public final class ArgumentArrayStorage(ObjectStorage, Cloneable, Measureable, ObjectArray)
{
private static final ArgumentArray empty;
private static { empty = new ArgumentArray(null, new Local[0]); }
private ArgumentArray[] fldArray;
public () { }
private (ArgumentArrayStorage source): super(source) { }
public ArgumentArrayStorage clone() { return new ArgumentArrayStorage(this); }
public int indexOf(ArgumentArray item) { return super.indexOf(item); }
public int indexAcquire(ArgumentArray item) { return super.indexAcquire(item); }
public ArgumentArray operator [](int index) { return fldArray[index]; }
protected void setArray(Object[] array) { fldArray = (ArgumentArray[]) array; }
protected ArgumentArray getEmpty() { return empty; }
protected ArgumentArray[] newArray(int capacity) { return new ArgumentArray[capacity]; }
}