package mil.nga.giat.geowave.core.index.lexicoder;
/**
* A lexicoder for preserving the native Java sort order of Double values.
*
*/
public class DoubleLexicoder implements
NumberLexicoder<Double>
{
@Override
public byte[] toByteArray(
final Double value ) {
long l = Double.doubleToRawLongBits(value);
if (l < 0) {
l = ~l;
}
else {
l = l ^ 0x8000000000000000l;
}
return Lexicoders.LONG.toByteArray(l);
}
@Override
public Double fromByteArray(
final byte[] bytes ) {
long l = Lexicoders.LONG.fromByteArray(bytes);
if (l < 0) {
l = l ^ 0x8000000000000000l;
}
else {
l = ~l;
}
return Double.longBitsToDouble(l);
}
@Override
public Double getMinimumValue() {
return Double.MIN_VALUE;
}
@Override
public Double getMaximumValue() {
return Double.MAX_VALUE;
}
}