Numeric.avt

Переключить прокрутку окна
Загрузить этот исходный код

/*
    Реализация среды исполнения языка программирования
    Объектно-ориентированный продвинутый векторный транслятор

    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 }
}