\u001B[1mSYNOPSIS\u001B[0m
    ${project.description}

    Original Maven URL:
        \u001B[33mmvn:${pkgGroupId}/${pkgArtifactId}/${pkgVersion}\u001B[0m

\u001B[1mDESCRIPTION\u001B[0m
	The bit array data structure is implemented in Java as the BitSet class. Unfortunately, this fails to scale
	without compression.

    JavaEWAH is a word-aligned compressed variant of the Java bitset class. It uses a 64-bit run-length encoding (RLE)
    compression scheme. We trade-off some compression for better processing speed. We also have a 32-bit version which
    compresses better, but is not as fast.

    In general, the goal of word-aligned compression is not to achieve the best compression, but rather to improve query
    processing time. Hence, we try to save CPU cycles, maybe at the expense of storage. However, the EWAH scheme we
    implemented is always more efficient storage-wise than an uncompressed bitmap as implemented in the BitSet class).
    Unlike some alternatives, javaewah does not rely on a patented scheme.

    It includes exhaustive unit testing. As of November 2011, Apache Maven is used to build and validate the releases.
    (Building the source code with javac remains trivial).

    Usage:

                        // set bits at pos. 0, 2, 64, and 1<<30 to value "true" (others are false)
                        EWAHCompressedBitmap ewahBitmap1 = EWAHCompressedBitmap.bitmapOf(0,2,64,1<<30);
                        EWAHCompressedBitmap ewahBitmap2 = EWAHCompressedBitmap.bitmapOf(1,3,64,1<<30);
                        EWAHCompressedBitmap xorbitmap = EWAHCompressedBitmap.xor(ewahBitmap1,ewahBitmap2);
                        int[] setbits = xorbitmap.toArray();// which bits are set?

\u001B[1mSEE ALSO\u001B[0m
    \u001B[36mhttp://code.google.com/p/javaewah/\u001B[0m
