package org.basex.data;
/**
* Data container with start and end offset. Used mostly to save memory with insertion
* sequence caching (only one {@link Data} instance).
*
* Arbitrary trees can be stored in this clip. To distinguish between two insertion
* sequences, the root node of each sequence points to the virtual parent pre value -1.
*
* @author BaseX Team 2005-17, BSD License
* @author Christian Gruen
*/
public final class DataClip {
/** Data reference. */
public final Data data;
/** Start value. */
public final int start;
/** End value (+1). */
public final int end;
/** Number of contained fragments. */
public final int fragments;
/**
* Constructor.
* @param data data reference
*/
public DataClip(final Data data) {
this(data, 0, data.meta.size);
}
/**
* Constructor.
* @param data data reference
* @param start start
* @param end end
*/
public DataClip(final Data data, final int start, final int end) {
this(data, start, end, 1);
}
/**
* Constructor.
* @param data data reference
* @param start start
* @param end end
* @param fragments number of fragments
*/
public DataClip(final Data data, final int start, final int end, final int fragments) {
this.data = data;
this.start = start;
this.end = end;
this.fragments = fragments;
}
/**
* Returns the box size.
* @return size
*/
public int size() {
return end - start;
}
}