All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.lemire.integercompression.ByteIntegerCODEC Maven / Gradle / Ivy

Go to download

It is a library to compress and uncompress arrays of integers very fast. The assumption is that most (but not all) values in your array use less than 32 bits.

There is a newer version: 0.2.1
Show newest version
/**
 * This code is released under the
 * Apache License Version 2.0 http://www.apache.org/licenses/.
 *
 * (c) Daniel Lemire, http://lemire.me/en/
 */

package me.lemire.integercompression;

/**
 * Interface describing a CODEC to compress integers to bytes.
 * 
 * @author Daniel Lemire
 * 
 */
public interface ByteIntegerCODEC {
        /**
         * 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 ints (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.
         * 
         * @param in
         *                input array
         * @param inpos
         *                location in the input array
         * @param inlength
         *                how many integers to compress
         * @param out
         *                output array
         * @param outpos
         *                where to write in the output array
         */
        public void compress(int[] in, IntWrapper inpos, int inlength,
                byte[] out, IntWrapper outpos);

        /**
         * Uncompress data from an array to another array.
         * 
         * Both inpos and outpos parameters are modified to indicate new
         * positions after read/write.
         * 
         * @param in
         *                array containing data in compressed form
         * @param inpos
         *                where to start reading in the array
         * @param inlength
         *                length of the compressed data (ignored by some
         *                schemes)
         * @param out
         *                array where to write the compressed output
         * @param outpos
         *                where to write the compressed output in out
         */
        public void uncompress(byte[] in, IntWrapper inpos, int inlength,
                int[] out, IntWrapper outpos);

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy