PositionRecord.java

package emissary.parser;

import javax.annotation.Nullable;

/**
 * Record offset and length of something in an array
 */
public class PositionRecord {

    private long position;
    private long length;

    /**
     * position and length of something important in a data structure
     */
    public PositionRecord(long position, long length) {
        this.position = position;
        this.length = length;
    }

    /**
     * Take an array of two ints for start and length
     * 
     * @param posAndLen Position at 0 and Length at 1
     */
    public PositionRecord(@Nullable long[] posAndLen) {
        if (posAndLen != null && posAndLen.length == 2) {
            this.position = posAndLen[0];
            this.length = posAndLen[1];
        }
    }


    /**
     * Starting position of data
     * 
     * @return a long with the position
     */
    public long getPosition() {
        return position;
    }

    /**
     * Length of data
     * 
     * @return a long with the length
     */
    public long getLength() {
        return length;
    }

    /**
     * Pseudo property
     * 
     * @return a long that is position + length
     */
    public long getEnd() {
        return position + length;
    }

    @Override
    public String toString() {
        return "{" + position + "/" + length + "}";
    }
}