All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jboss.resteasy.reactive.common.util.ArrayCharSequence Maven / Gradle / Ivy

There is a newer version: 3.17.0.CR1
Show newest version
package org.jboss.resteasy.reactive.common.util;

/**
 * A CharSequence backed by a char[] (no copy on creation)
 *
 */
public class ArrayCharSequence implements CharSequence {
    private final char[] buf;
    private final int offset;
    private final int count;

    public ArrayCharSequence(final char[] buff) {
        this(buff, 0, buff.length);
    }

    public ArrayCharSequence(final char[] buff, final int count) {
        this(buff, 0, count);
    }

    public ArrayCharSequence(final char[] buff, final int offset, final int count) {
        this.buf = buff;
        this.offset = offset;
        this.count = count;
    }

    public char charAt(int index) {
        if (index < 0 || index >= count) {
            throw new StringIndexOutOfBoundsException(index);
        }
        return buf[offset + index];
    }

    public int length() {
        return count;
    }

    public CharSequence subSequence(int beginIndex, int endIndex) {
        if (beginIndex < 0) {
            throw new StringIndexOutOfBoundsException(beginIndex);
        }
        if (endIndex > count) {
            throw new StringIndexOutOfBoundsException(endIndex);
        }
        if (beginIndex > endIndex) {
            throw new StringIndexOutOfBoundsException(endIndex - beginIndex);
        }
        return ((beginIndex == 0) && (endIndex == count))
                ? this
                : new ArrayCharSequence(buf, offset + beginIndex, endIndex - beginIndex);
    }

    public String toString() {
        return new String(this.buf, this.offset, this.count);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy