X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.fastlz%2Fnative%2FjniWrapper.c;h=6f497627a2907606121c3e701714d46831dfcf18;hp=0c696e1f5ae5b83d73b3c43670b67b9886c93ab1;hb=bf5f69c1aadb4405167e5bf03c58cc83f0ef6b20;hpb=b5c834f08accf6d283d88489e89c23da2a485fe2 diff --git a/bundles/org.simantics.fastlz/native/jniWrapper.c b/bundles/org.simantics.fastlz/native/jniWrapper.c index 0c696e1f5..6f497627a 100644 --- a/bundles/org.simantics.fastlz/native/jniWrapper.c +++ b/bundles/org.simantics.fastlz/native/jniWrapper.c @@ -87,71 +87,3 @@ JNIEXPORT jint JNICALL Java_org_simantics_fastlz_FastLZ_decompressCluster(JNIEnv } -JNIEXPORT jint JNICALL Java_org_simantics_fastlz_LZ4_compress(JNIEnv* env, jclass clazz, - jobject input, jint inputOffset, jint length, - jobject output, jint outputOffset) { - void* inputAddress = (char*)(*env)->GetDirectBufferAddress(env, input) + inputOffset; - void* outputAddress = (char*)(*env)->GetDirectBufferAddress(env, output) + outputOffset; - return LZ4_compress(inputAddress, outputAddress, length); -} - -JNIEXPORT jint JNICALL Java_org_simantics_fastlz_LZ4_decompress(JNIEnv* env, jclass clazz, - jobject input, jint inputOffset, jint length, - jobject output, jint outputOffset, jint maxout) { - void* inputAddress = (char*)(*env)->GetDirectBufferAddress(env, input) + inputOffset; - void* outputAddress = (char*)(*env)->GetDirectBufferAddress(env, output) + outputOffset; - return LZ4_uncompress_unknownOutputSize(inputAddress, outputAddress, length, maxout); -} - -JNIEXPORT jint JNICALL Java_org_simantics_fastlz_LZ4_decompressCluster(JNIEnv* env, jclass clazz, jobject deflated, jint deflatedSize, jint inflatedSize, jobjectArray arrays) { - - static char *inflateBuffer = 0; - static int inflateBufferSize = 0; - - int ll, il, bl; - - jlongArray longs; - jintArray ints; - jbyteArray bytes; - - char *input = (char*)(*env)->GetDirectBufferAddress(env, deflated); - char *address; - - if(inflateBufferSize < inflatedSize) { - if(!inflateBuffer) { - if(inflatedSize < INITIAL_SIZE) inflatedSize = INITIAL_SIZE; - inflateBuffer = malloc(inflatedSize); - inflateBufferSize = inflatedSize; - } else { - if(inflateBuffer) free(inflateBuffer); - inflateBuffer = malloc(inflatedSize); - inflateBufferSize = inflatedSize; - } - } - - address = inflateBuffer; - - LZ4_uncompress_unknownOutputSize(input, inflateBuffer, deflatedSize, inflateBufferSize); - - ll = *(int *)address; - longs = (*env)->NewLongArray(env, ll); - (*env)->SetLongArrayRegion(env, longs, 0, ll, (const jlong *)(address + 4)); - (*env)->SetObjectArrayElement(env, arrays, 0, longs); - - address += 4 + 8 * ll; - - il = *(int *)address; - ints = (*env)->NewIntArray(env, il); - (*env)->SetIntArrayRegion(env, ints, 0, il, (const jint *)(address + 4)); - (*env)->SetObjectArrayElement(env, arrays, 1, ints); - - address += 4 * il + 4; - - bl = *(int *)address; - bytes = (*env)->NewByteArray(env, bl); - (*env)->SetByteArrayRegion(env, bytes, 0, bl, (const jbyte *)(address + 4)); - (*env)->SetObjectArrayElement(env, arrays, 2, bytes); - - return 0; - -}