/*
Реализация среды исполнения языка программирования
Объектно-ориентированный продвинутый векторный транслятор
Copyright © 2021, 2024 Малик Разработчик
Это свободная программа: вы можете перераспространять ее и/или изменять
ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
в каком она была опубликована Фондом свободного программного обеспечения;
либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
Эта программа распространяется в надежде, что она будет полезной,
но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
общественной лицензии GNU.
Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
вместе с этой программой. Если это не так, см.
<https://www.gnu.org/licenses/>.
*/
package avt.lang;
public abstract service Numeric(Object, Cloneable)
{
public abstract byte8 asByte8();
public abstract short8 asShort8();
public abstract int8 asInt8();
public abstract long8 asLong8();
public abstract float8 asFloat8();
public abstract double8 asDouble8();
public abstract real asReal();
public boolean isNaN() { return false; }
public boolean isInfinite() { return false; }
public char asChar() { return (char) asInt(); }
public byte asByte() { return (byte) asByte2(); }
public byte2 asByte2() { return (byte2) asByte4(); }
public byte4 asByte4() { return (byte4) asByte8(); }
public short asShort() { return (short) asShort2(); }
public short2 asShort2() { return (short2) asShort4(); }
public short4 asShort4() { return (short4) asShort8(); }
public int asInt() { return (int) asInt2(); }
public int2 asInt2() { return (int2) asInt4(); }
public int4 asInt4() { return (int4) asInt8(); }
public long asLong() { return (long) asLong2(); }
public long2 asLong2() { return (long2) asLong4(); }
public long4 asLong4() { return (long4) asLong8(); }
public float asFloat() { return (float) asFloat2(); }
public float2 asFloat2() { return (float2) asFloat4(); }
public float4 asFloat4() { return (float4) asFloat8(); }
public double asDouble() { return (double) asDouble2(); }
public double2 asDouble2() { return (double2) asDouble4(); }
public double4 asDouble4() { return (double4) asDouble8(); }
public abstract int kind { read }
}