Package me.lemire.longcompression
Class LongVariableByte
java.lang.Object
me.lemire.longcompression.LongVariableByte
- All Implemented Interfaces:
ByteLongCODEC
,LongCODEC
,SkippableLongCODEC
public class LongVariableByte
extends Object
implements LongCODEC, ByteLongCODEC, SkippableLongCODEC
Implementation of variable-byte. For best performance, use it using the
ByteLongCODEC interface.
Note that this does not use differential coding: if you are working on sorted
lists, you must compute the deltas separately.
- Author:
- Benoit Lacelle
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
compress
(long[] in, IntWrapper inpos, int inlength, byte[] out, IntWrapper outpos) Compress data from an array to another array.void
compress
(long[] in, IntWrapper inpos, int inlength, long[] out, IntWrapper outpos) Compress data from an array to another array.void
headlessCompress
(long[] in, IntWrapper inpos, int inlength, long[] out, IntWrapper outpos) Compress data from an array to another array.void
headlessUncompress
(long[] in, IntWrapper inpos, int inlength, long[] out, IntWrapper outpos, int num) Uncompress data from an array to another array.protected ByteBuffer
makeBuffer
(int sizeInBytes) Creates a new buffer of the requested size.toString()
void
uncompress
(byte[] in, IntWrapper inpos, int inlength, long[] out, IntWrapper outpos) Uncompress data from an array to another array.void
uncompress
(long[] in, IntWrapper inpos, int inlength, long[] out, IntWrapper outpos) Uncompress data from an array to another array.
-
Constructor Details
-
LongVariableByte
public LongVariableByte()
-
-
Method Details
-
compress
Description copied from interface:LongCODEC
Compress data from an array to another array. Both inpos and outpos are modified to represent how much data was read and written to. If 12 longs (inlength = 12) are compressed to 3 longs, then inpos will be incremented by 12 while outpos will be incremented by 3. We use IntWrapper to pass the values by reference. -
headlessCompress
public void headlessCompress(long[] in, IntWrapper inpos, int inlength, long[] out, IntWrapper outpos) Description copied from interface:SkippableLongCODEC
Compress data from an array to another array. Both inpos and outpos are modified to represent how much data was read and written to. If 12 longs (inlength = 12) are compressed to 3 longs, then inpos will be incremented by 12 while outpos will be incremented by 3. We use IntWrapper to pass the values by reference.- Specified by:
headlessCompress
in interfaceSkippableLongCODEC
- Parameters:
in
- input arrayinpos
- where to start reading in the arrayinlength
- how many longs to compressout
- output arrayoutpos
- where to write in the output array
-
compress
Description copied from interface:ByteLongCODEC
Compress data from an array to another array. Both inpos and outpos are modified to represent how much data was read and written to. If 12 longs (inlength = 12) are compressed to 3 bytes, then inpos will be incremented by 12 while outpos will be incremented by 3. We use IntWrapper to pass the values by reference.- Specified by:
compress
in interfaceByteLongCODEC
- Parameters:
in
- input arrayinpos
- location in the input arrayinlength
- how many longs to compressout
- output arrayoutpos
- where to write in the output array
-
uncompress
Description copied from interface:LongCODEC
Uncompress data from an array to another array. Both inpos and outpos parameters are modified to indicate new positions after read/write.- Specified by:
uncompress
in interfaceLongCODEC
- Parameters:
in
- array containing data in compressed forminpos
- where to start reading in the arrayinlength
- length of the compressed data (ignored by some schemes)out
- array where to write the uncompressed outputoutpos
- where to start writing the uncompressed output in out
-
uncompress
Description copied from interface:ByteLongCODEC
Uncompress data from an array to another array. Both inpos and outpos parameters are modified to indicate new positions after read/write.- Specified by:
uncompress
in interfaceByteLongCODEC
- Parameters:
in
- array containing data in compressed forminpos
- where to start reading in the arrayinlength
- length of the compressed data (ignored by some schemes)out
- array where to write the compressed outputoutpos
- where to write the compressed output in out
-
toString
-
headlessUncompress
public void headlessUncompress(long[] in, IntWrapper inpos, int inlength, long[] out, IntWrapper outpos, int num) Description copied from interface:SkippableLongCODEC
Uncompress data from an array to another array. Both inpos and outpos parameters are modified to indicate new positions after read/write.- Specified by:
headlessUncompress
in interfaceSkippableLongCODEC
- Parameters:
in
- array containing data in compressed forminpos
- where to start reading in the arrayinlength
- length of the compressed data (ignored by some schemes)out
- array where to write the uncompressed outputoutpos
- where to start writing the uncompressed output in outnum
- number of longs we want to decode, the actual number of longs decoded can be less
-
makeBuffer
Creates a new buffer of the requested size. In case you need a different way to allocate buffers, you can override this method with a custom behavior. The default implementation allocates a new Java directByteBuffer
on each invocation.
-