From 8a27c47e859b73cd7f38a5713c5942b3290136d3 Mon Sep 17 00:00:00 2001 From: "Taro L. Saito" Date: Wed, 6 Apr 2011 16:58:19 +0900 Subject: [PATCH] Update issue 10 add compress float[], double[], int[], char[], long[], short[] --- src/main/java/org/xerial/snappy/Snappy.java | 85 +++++++++++++++--- .../java/org/xerial/snappy/SnappyNative.cpp | 72 +++++---------- .../java/org/xerial/snappy/SnappyNative.h | 40 +++------ .../java/org/xerial/snappy/SnappyNative.java | 36 +++----- .../snappy/native/Windows/amd64/snappy.dll | Bin 644608 -> 644608 bytes .../java/org/xerial/snappy/SnappyTest.java | 16 ++++ 6 files changed, 137 insertions(+), 112 deletions(-) diff --git a/src/main/java/org/xerial/snappy/Snappy.java b/src/main/java/org/xerial/snappy/Snappy.java index f21ab4f..aaafa7c 100755 --- a/src/main/java/org/xerial/snappy/Snappy.java +++ b/src/main/java/org/xerial/snappy/Snappy.java @@ -60,17 +60,32 @@ public class Snappy * @throws SnappyException */ public static byte[] compress(byte[] input) throws SnappyException { - byte[] buf = new byte[Snappy.maxCompressedLength(input.length)]; - int compressedByteSize = Snappy.compress(input, 0, input.length, buf, 0); - byte[] result = new byte[compressedByteSize]; - System.arraycopy(buf, 0, result, 0, compressedByteSize); - return result; + return compressBytes(input, input.length); } - public static byte[] compress(float[] data) { - int floatArraySize = data.length * 4;// float use 4 bytes - byte[] buf = new byte[Snappy.maxCompressedLength(floatArraySize)]; - int compressedByteSize = SnappyNative.rawCompressFloat(data, 0, floatArraySize, buf, 0); + public static byte[] compress(char[] input) { + return compressBytes(input, input.length * 2); // short use 2 bytes + } + + public static byte[] compress(short[] input) { + return compressBytes(input, input.length * 2); // short use 2 bytes + } + + public static byte[] compress(float[] input) { + return compressBytes(input, input.length * 4); // float use 4 bytes + } + + public static byte[] compress(long[] input) { + return compressBytes(input, input.length * 8); // long use 8 bytes + } + + public static byte[] compress(double[] input) { + return compressBytes(input, input.length * 8); // double use 8 bytes + } + + private static byte[] compressBytes(Object data, int byteSize) { + byte[] buf = new byte[Snappy.maxCompressedLength(byteSize)]; + int compressedByteSize = SnappyNative.rawCompress(data, 0, byteSize, buf, 0); byte[] result = new byte[compressedByteSize]; System.arraycopy(buf, 0, result, 0, compressedByteSize); return result; @@ -92,10 +107,55 @@ public class Snappy return result; } + public static char[] uncompressChar(byte[] input) throws SnappyException { + int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length); + char[] result = new char[uncompressedLength / 2]; + int byteSize = SnappyNative.rawUncompress(input, 0, input.length, result, 0); + if (byteSize != uncompressedLength) + throw new SnappyException(SnappyErrorCode.INVALID_DECOMPRESSION); + return result; + } + + public static short[] uncompressShort(byte[] input) throws SnappyException { + int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length); + short[] result = new short[uncompressedLength / 2]; + int byteSize = SnappyNative.rawUncompress(input, 0, input.length, result, 0); + if (byteSize != uncompressedLength) + throw new SnappyException(SnappyErrorCode.INVALID_DECOMPRESSION); + return result; + } + + public static int[] uncompressInt(byte[] input) throws SnappyException { + int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length); + int[] result = new int[uncompressedLength / 4]; + int byteSize = SnappyNative.rawUncompress(input, 0, input.length, result, 0); + if (byteSize != uncompressedLength) + throw new SnappyException(SnappyErrorCode.INVALID_DECOMPRESSION); + return result; + } + public static float[] uncompressFloat(byte[] input) throws SnappyException { int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length); float[] result = new float[uncompressedLength / 4]; - int byteSize = SnappyNative.rawUncompressFloat(input, 0, input.length, result, 0); + int byteSize = SnappyNative.rawUncompress(input, 0, input.length, result, 0); + if (byteSize != uncompressedLength) + throw new SnappyException(SnappyErrorCode.INVALID_DECOMPRESSION); + return result; + } + + public static double[] uncompressDouble(byte[] input) throws SnappyException { + int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length); + double[] result = new double[uncompressedLength / 8]; + int byteSize = SnappyNative.rawUncompress(input, 0, input.length, result, 0); + if (byteSize != uncompressedLength) + throw new SnappyException(SnappyErrorCode.INVALID_DECOMPRESSION); + return result; + } + + public static long[] uncompressLong(byte[] input) throws SnappyException { + int uncompressedLength = Snappy.uncompressedLength(input, 0, input.length); + long[] result = new long[uncompressedLength / 8]; + int byteSize = SnappyNative.rawUncompress(input, 0, input.length, result, 0); if (byteSize != uncompressedLength) throw new SnappyException(SnappyErrorCode.INVALID_DECOMPRESSION); return result; @@ -150,6 +210,11 @@ public class Snappy */ public static int compress(byte[] input, int inputOffset, int inputLength, byte[] output, int outputOffset) throws SnappyException { + return compressBytes(input, inputOffset, inputLength, output, outputOffset); + } + + private static int compressBytes(Object input, int inputOffset, int inputLength, Object output, int outputOffset) + throws SnappyException { if (input == null || output == null) throw new NullPointerException("input or output is null"); diff --git a/src/main/java/org/xerial/snappy/SnappyNative.cpp b/src/main/java/org/xerial/snappy/SnappyNative.cpp index 407ab9f..e304615 100755 --- a/src/main/java/org/xerial/snappy/SnappyNative.cpp +++ b/src/main/java/org/xerial/snappy/SnappyNative.cpp @@ -55,11 +55,11 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawCompress__Ljava_ni } -jint snappyRawCompress - (JNIEnv * env, jclass self, jarray input, jint inputOffset, jint inputLen, jarray output, jint outputOffset) +JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawCompress__Ljava_lang_Object_2IILjava_lang_Object_2I + (JNIEnv * env, jclass self, jobject input, jint inputOffset, jint inputLen, jobject output, jint outputOffset) { - char* in = (char*) env->GetPrimitiveArrayCritical(input, 0); - char* out = (char*) env->GetPrimitiveArrayCritical(output, 0); + char* in = (char*) env->GetPrimitiveArrayCritical((jarray) input, 0); + char* out = (char*) env->GetPrimitiveArrayCritical((jarray) output, 0); if(in == 0 || out == 0) { // out of memory throw_exception(env, self, 4); @@ -69,17 +69,17 @@ jint snappyRawCompress size_t compressedLength; snappy::RawCompress(in + inputOffset, (size_t) inputLen, out + outputOffset, &compressedLength); - env->ReleasePrimitiveArrayCritical(input, in, 0); - env->ReleasePrimitiveArrayCritical(output, out, 0); + env->ReleasePrimitiveArrayCritical((jarray) input, in, 0); + env->ReleasePrimitiveArrayCritical((jarray) output, out, 0); return (jint) compressedLength; } -jint snappyRawUncompress -(JNIEnv * env, jclass self, jarray input, jint inputOffset, jint inputLength, jarray output, jint outputOffset) +JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawUncompress__Ljava_lang_Object_2IILjava_lang_Object_2I +(JNIEnv * env, jclass self, jobject input, jint inputOffset, jint inputLength, jobject output, jint outputOffset) { - char* in = (char*) env->GetPrimitiveArrayCritical(input, 0); - char* out = (char*) env->GetPrimitiveArrayCritical(output, 0); + char* in = (char*) env->GetPrimitiveArrayCritical((jarray) input, 0); + char* out = (char*) env->GetPrimitiveArrayCritical((jarray) output, 0); if(in == 0 || out == 0) { // out of memory throw_exception(env, self, 4); @@ -90,8 +90,8 @@ jint snappyRawUncompress snappy::GetUncompressedLength(in + inputOffset, (size_t) inputLength, &uncompressedLength); bool ret = snappy::RawUncompress(in + inputOffset, (size_t) inputLength, out + outputOffset); - env->ReleasePrimitiveArrayCritical(input, in, 0); - env->ReleasePrimitiveArrayCritical(output, out, 0); + env->ReleasePrimitiveArrayCritical((jarray) input, in, 0); + env->ReleasePrimitiveArrayCritical((jarray) output, out, 0); if(!ret) { throw_exception(env, self, 2); @@ -102,26 +102,6 @@ jint snappyRawUncompress } -/* - * Class: org_xerial_snappy_SnappyNative - * Method: rawCompress - * Signature: ([BII[BI)I - */ - -JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawCompress___3BII_3BI - (JNIEnv * env, jclass self, jbyteArray input, jint inputOffset, jint inputLen, jbyteArray output, jint outputOffset) -{ - return snappyRawCompress(env, self, input, inputOffset, inputLen, output, outputOffset); -} - - -JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawCompressFloat - (JNIEnv * env, jclass self, jfloatArray input, jint inputOffset, jint inputLen, jbyteArray output, jint outputOffset) -{ - return snappyRawCompress(env, self, input, inputOffset, inputLen, output, outputOffset); -} - - /* * Class: org_xerial_snappy_Snappy * Method: uncompress @@ -148,18 +128,6 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawUncompress__Ljava_ return (jint) decompressedLength; } -JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawUncompress___3BII_3BI - (JNIEnv * env, jclass self, jbyteArray input, jint inputOffset, jint inputLength, jbyteArray output, jint outputOffset) -{ - snappyRawUncompress(env, self, input, inputOffset, inputLength, output, outputOffset); -} - - -JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawUncompressFloat - (JNIEnv * env, jclass self, jbyteArray input, jint inputOffset, jint inputLength, jfloatArray output, jint outputOffset) -{ - snappyRawUncompress(env, self, input, inputOffset, inputLength, output, outputOffset); -} /* @@ -198,10 +166,10 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_uncompressedLength__L return (jint) result; } -JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_uncompressedLength___3BII - (JNIEnv * env, jclass self, jbyteArray input, jint offset, jint length) +JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_uncompressedLength__Ljava_lang_Object_2II + (JNIEnv * env, jclass self, jobject input, jint offset, jint length) { - char* in = (char*) env->GetPrimitiveArrayCritical(input, 0); + char* in = (char*) env->GetPrimitiveArrayCritical((jarray) input, 0); if(in == 0) { // out of memory throw_exception(env, self, 4); @@ -210,7 +178,7 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_uncompressedLength___ size_t result; bool ret = snappy::GetUncompressedLength(in + offset, (size_t) length, &result); - env->ReleasePrimitiveArrayCritical(input, in, 0); + env->ReleasePrimitiveArrayCritical((jarray) input, in, 0); return (jint) result; } @@ -228,17 +196,17 @@ JNIEXPORT jboolean JNICALL Java_org_xerial_snappy_SnappyNative_isValidCompressed } -JNIEXPORT jboolean JNICALL Java_org_xerial_snappy_SnappyNative_isValidCompressedBuffer___3BII - (JNIEnv * env, jclass self, jbyteArray input, jint offset, jint length) +JNIEXPORT jboolean JNICALL Java_org_xerial_snappy_SnappyNative_isValidCompressedBuffer__Ljava_lang_Object_2II + (JNIEnv * env, jclass self, jobject input, jint offset, jint length) { - char* in = (char*) env->GetPrimitiveArrayCritical(input, 0); + char* in = (char*) env->GetPrimitiveArrayCritical((jarray) input, 0); if(in == 0) { // out of memory throw_exception(env, self, 4); return 0; } bool ret = snappy::IsValidCompressedBuffer(in + offset, (size_t) length); - env->ReleasePrimitiveArrayCritical(input, in, 0); + env->ReleasePrimitiveArrayCritical((jarray) input, in, 0); return ret; } diff --git a/src/main/java/org/xerial/snappy/SnappyNative.h b/src/main/java/org/xerial/snappy/SnappyNative.h index 2115fb8..5b08836 100755 --- a/src/main/java/org/xerial/snappy/SnappyNative.h +++ b/src/main/java/org/xerial/snappy/SnappyNative.h @@ -26,18 +26,10 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawCompress__Ljava_ni /* * Class: org_xerial_snappy_SnappyNative * Method: rawCompress - * Signature: ([BII[BI)I + * Signature: (Ljava/lang/Object;IILjava/lang/Object;I)I */ -JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawCompress___3BII_3BI - (JNIEnv *, jclass, jbyteArray, jint, jint, jbyteArray, jint); - -/* - * Class: org_xerial_snappy_SnappyNative - * Method: rawCompressFloat - * Signature: ([FII[BI)I - */ -JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawCompressFloat - (JNIEnv *, jclass, jfloatArray, jint, jint, jbyteArray, jint); +JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawCompress__Ljava_lang_Object_2IILjava_lang_Object_2I + (JNIEnv *, jclass, jobject, jint, jint, jobject, jint); /* * Class: org_xerial_snappy_SnappyNative @@ -50,18 +42,10 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawUncompress__Ljava_ /* * Class: org_xerial_snappy_SnappyNative * Method: rawUncompress - * Signature: ([BII[BI)I + * Signature: (Ljava/lang/Object;IILjava/lang/Object;I)I */ -JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawUncompress___3BII_3BI - (JNIEnv *, jclass, jbyteArray, jint, jint, jbyteArray, jint); - -/* - * Class: org_xerial_snappy_SnappyNative - * Method: rawUncompressFloat - * Signature: ([BII[FI)I - */ -JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawUncompressFloat - (JNIEnv *, jclass, jbyteArray, jint, jint, jfloatArray, jint); +JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_rawUncompress__Ljava_lang_Object_2IILjava_lang_Object_2I + (JNIEnv *, jclass, jobject, jint, jint, jobject, jint); /* * Class: org_xerial_snappy_SnappyNative @@ -82,10 +66,10 @@ JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_uncompressedLength__L /* * Class: org_xerial_snappy_SnappyNative * Method: uncompressedLength - * Signature: ([BII)I + * Signature: (Ljava/lang/Object;II)I */ -JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_uncompressedLength___3BII - (JNIEnv *, jclass, jbyteArray, jint, jint); +JNIEXPORT jint JNICALL Java_org_xerial_snappy_SnappyNative_uncompressedLength__Ljava_lang_Object_2II + (JNIEnv *, jclass, jobject, jint, jint); /* * Class: org_xerial_snappy_SnappyNative @@ -98,10 +82,10 @@ JNIEXPORT jboolean JNICALL Java_org_xerial_snappy_SnappyNative_isValidCompressed /* * Class: org_xerial_snappy_SnappyNative * Method: isValidCompressedBuffer - * Signature: ([BII)Z + * Signature: (Ljava/lang/Object;II)Z */ -JNIEXPORT jboolean JNICALL Java_org_xerial_snappy_SnappyNative_isValidCompressedBuffer___3BII - (JNIEnv *, jclass, jbyteArray, jint, jint); +JNIEXPORT jboolean JNICALL Java_org_xerial_snappy_SnappyNative_isValidCompressedBuffer__Ljava_lang_Object_2II + (JNIEnv *, jclass, jobject, jint, jint); #ifdef __cplusplus } diff --git a/src/main/java/org/xerial/snappy/SnappyNative.java b/src/main/java/org/xerial/snappy/SnappyNative.java index 3c58f11..cbe8a14 100755 --- a/src/main/java/org/xerial/snappy/SnappyNative.java +++ b/src/main/java/org/xerial/snappy/SnappyNative.java @@ -35,44 +35,36 @@ import java.nio.ByteBuffer; public class SnappyNative { - public native static String nativeLibraryVersion(); + native static String nativeLibraryVersion(); // ------------------------------------------------------------------------ // Generic compression/decompression routines. // ------------------------------------------------------------------------ - public native static int rawCompress(ByteBuffer input, int inputOffset, int inputLength, ByteBuffer compressed, + native static int rawCompress(ByteBuffer input, int inputOffset, int inputLength, ByteBuffer compressed, int outputOffset) throws SnappyException; - public native static int rawCompress(byte[] input, int inputOffset, int inputLength, byte[] output, int outputOffset) + native static int rawCompress(Object input, int inputOffset, int inputByteLength, Object output, int outputOffset); + + native static int rawUncompress(ByteBuffer compressed, int inputOffset, int inputLength, ByteBuffer uncompressed, + int outputOffset) throws SnappyException; + + native static int rawUncompress(Object input, int inputOffset, int inputLength, Object output, int outputOffset) throws SnappyException; - public native static int rawCompressFloat(float[] input, int inputOffset, int inputLength, byte[] output, - int outputOffset); - - public native static int rawUncompress(ByteBuffer compressed, int inputOffset, int inputLength, - ByteBuffer uncompressed, int outputOffset) throws SnappyException; - - public native static int rawUncompress(byte[] input, int inputOffset, int inputLength, byte[] output, - int outputOffset) throws SnappyException; - - public native static int rawUncompressFloat(byte[] input, int inputOffset, int inputLength, float[] output, - int outputOffset) throws SnappyException; - // Returns the maximal size of the compressed representation of // input data that is "source_bytes" bytes in length; - public native static int maxCompressedLength(int source_bytes); + native static int maxCompressedLength(int source_bytes); // This operation takes O(1) time. - public native static int uncompressedLength(ByteBuffer compressed, int offset, int len) throws SnappyException; + native static int uncompressedLength(ByteBuffer compressed, int offset, int len) throws SnappyException; - public native static int uncompressedLength(byte[] input, int offset, int len) throws SnappyException; + native static int uncompressedLength(Object input, int offset, int len) throws SnappyException; - public native static boolean isValidCompressedBuffer(ByteBuffer compressed, int offset, int len) - throws SnappyException; + native static boolean isValidCompressedBuffer(ByteBuffer compressed, int offset, int len) throws SnappyException; - public native static boolean isValidCompressedBuffer(byte[] input, int offset, int len) throws SnappyException; + native static boolean isValidCompressedBuffer(Object input, int offset, int len) throws SnappyException; - public static void throw_error(int errorCode) throws SnappyException { + protected static void throw_error(int errorCode) throws SnappyException { throw new SnappyException(errorCode); } diff --git a/src/main/resources/org/xerial/snappy/native/Windows/amd64/snappy.dll b/src/main/resources/org/xerial/snappy/native/Windows/amd64/snappy.dll index 3cbef77dc074b2d3af0c85ccc2531c8d523be77e..d26d97840d2cb21f4b4d0e6e2ca8e1acf55dab58 100755 GIT binary patch delta 47164 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 delta 47193 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