package com.bigdata.btree.raba.codec;
import com.bigdata.btree.raba.IRaba;
/**
* Interface for {@link IRaba} data generators. A generator produces a
* <code>byte[][]</code> representing keys or values.
*
* @author <a href="mailto:thompsonbry@users.sourceforge.net">Bryan
* Thompson</a>
* @version $Id$
*/
public interface IRabaGenerator {
/**
* If the generator can generate B+Tree keys.
*/
public boolean isKeysGenerator();
/**
* If the generator can generate B+Tree values.
*/
public boolean isValuesGenerator();
/**
* Generate B+Tree keys (no <code>null</code>, no duplicates, data are
* fully ordered based on <code>unsigned byte[]</code> comparison).
*
* @param size
* The #of keys.
*
* @return The keys.
*
* @throws UnsupportedOperationException
* if the generator can not generate B+Tree keys.
*/
public byte[][] generateKeys(int size);
/**
* Generate B+Tree values (may include <code>null</code>s).
*
* @param size
* The #of values.
*
* @return The values.
*
* @throws UnsupportedOperationException
* if the generator can not generate B+Tree values.
*/
public byte[][] generateValues(int size);
}