CharSequence.avt

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

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

    Copyright © 2021, 2024 Малик Разработчик

    Это свободная программа: вы можете перераспространять ее и/или изменять
    ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
    в каком она была опубликована Фондом свободного программного обеспечения;
    либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.

    Эта программа распространяется в надежде, что она будет полезной,
    но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
    или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
    общественной лицензии GNU.

    Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
    вместе с этой программой. Если это не так, см.
    <https://www.gnu.org/licenses/>.
*/

package avt.lang;

import avt.lang.array.*;
import platform.independent.streamformat.*;

public abstract service CharSequence(Object, DataHolder, Cloneable, Measureable, CharArray)
{
    public abstract CharSequence join(CharSequence anot);

    public abstract CharSequence join(CharSequence[] seqs);

    public abstract CharSequence subsequence(int beginIndex);

    public abstract CharSequence subsequence(int beginIndex, int endIndex);

    public boolean isEmpty() { return length <= 0; }

    public CharSequence clone() {
        throw new CloneNotSupportedException(String.format(package.getResourceString("unsupported-operation.clone"), new Object[] { getClass().canonicalName }));
    }

    public void getChars(int beginIndex, int endIndex, MutableCharArray dst, int offset) {
        int length = this.length;
        if((beginIndex | endIndex) < 0 || beginIndex > length || endIndex > length || beginIndex > endIndex)
        {
            throw new StringIndexOutOfBoundsException(package.getResourceString("out-of-bounds.string-index"));
        }
        if(dst == null)
        {
            throw new NullPointerException(String.format(package.getResourceString("null-pointer.argument"), new Object[] { "dst" }));
        }
        Array.checkBounds(dst, offset, length = endIndex - beginIndex);
        while(length-- > 0) dst[offset++] = this[beginIndex++];
    }

    public void copyInto(MutableCharArray dst, int offset) { getChars(0, length, dst, offset); }

    public char[] toCharArray() {
        int length = this.length;
        char[] result = new char[length];
        getChars(0, length, result, 0);
        return result;
    }
}