diff options
author | Sven Gothel <[email protected]> | 2001-06-18 23:34:31 +0000 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2001-06-18 23:34:31 +0000 |
commit | 255908bf19515af5c3770cd304eece10f95b6ba8 (patch) | |
tree | 1e9cb3a5efb5380e811fd7f0f7d900fbcc32c5ba /CNativeCode/Tool_JNI_funcs.c | |
parent | cc7376ee5616743cdd7b7a5c711f054b32ae8e4e (diff) |
2.8.0.0 pre-release cvs only
Diffstat (limited to 'CNativeCode/Tool_JNI_funcs.c')
-rw-r--r-- | CNativeCode/Tool_JNI_funcs.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/CNativeCode/Tool_JNI_funcs.c b/CNativeCode/Tool_JNI_funcs.c new file mode 100644 index 0000000..3606a76 --- /dev/null +++ b/CNativeCode/Tool_JNI_funcs.c @@ -0,0 +1,70 @@ +#include "jnitools.h" + +JNIEXPORT jlong JNICALL +Java_gl4java_utils_Tool_tmpfileCreate ( + JNIEnv *env, jobject obj ) +{ + return (jlong) ((PointerHolder)tmpfile()); +} + +JNIEXPORT jboolean JNICALL +Java_gl4java_utils_Tool_tmpfileClose ( + JNIEnv *env, jobject obj, jlong filed ) +{ + return ( fclose( (FILE *) ((PointerHolder)filed) ) == 0 ) ? + JNI_TRUE : JNI_FALSE; +} + +JNIEXPORT jint JNICALL +Java_gl4java_utils_Tool_tmpfileWrite ( + JNIEnv *env, jobject obj, jlong filed, jbyteArray data, int bytes) +{ + jint len; + jbyte * ptr = NULL; + + if(data==NULL || filed==0) return 0; + + len = (*env)->GetArrayLength(env, data); + if( 0 >= bytes || bytes>len ) bytes=len; + + ptr = (*env)->GetByteArrayElements(env, data, NULL); + + len = (jint) fwrite ( (void *) ptr, bytes, 1, + (FILE *) ((PointerHolder)filed) ); + + /* NO copy back, free the memory .. */ + (*env)->ReleaseByteArrayElements(env, data, ptr, JNI_ABORT); + + return len; +} + +JNIEXPORT jint JNICALL +Java_gl4java_utils_Tool_tmpfileRead ( + JNIEnv *env, jobject obj, jlong filed, jbyteArray data, int bytes) +{ + jint len; + jbyte * ptr = NULL; + + if(data==NULL || filed==0) return 0; + + len = (*env)->GetArrayLength(env, data); + if( 0 >= bytes || bytes>len ) bytes=len; + + ptr = (*env)->GetByteArrayElements(env, data, NULL); + + len = (jint) fread ( (void *) ptr, bytes, 1, + (FILE *) ((PointerHolder)filed) ); + + /* copy back and free the memory .. */ + (*env)->ReleaseByteArrayElements(env, data, ptr, 0); + + return len; +} + +JNIEXPORT void JNICALL +Java_gl4java_utils_Tool_tmpfileRewind ( + JNIEnv *env, jobject obj, jlong filed) +{ + (void) fseek ( (FILE *) ((PointerHolder)filed), 0L, SEEK_SET ); +} + |