From 880653d31a8f1ff8384fdbc75b84934bceecfdb8 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Sat, 18 Nov 2000 06:43:49 +0000 Subject: Initial revision --- CNativeCode/jnitools.h | 122 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 CNativeCode/jnitools.h (limited to 'CNativeCode/jnitools.h') diff --git a/CNativeCode/jnitools.h b/CNativeCode/jnitools.h new file mode 100644 index 0000000..ee02405 --- /dev/null +++ b/CNativeCode/jnitools.h @@ -0,0 +1,122 @@ + +#ifndef JNITOOLS + #define JNITOOLS + + #include + #include + #include + + #ifdef _WIN32_ + #include "winstuff.h" + #endif + + #include + + #ifndef LIBAPIENTRY + #define LIBAPIENTRY + #endif + #ifndef LIBAPI + #define LIBAPI + #endif + + typedef enum { + T_NOPE = 0, + T_VOID, + T_BOOLEAN, + T_BYTE, + T_CHAR, + T_SHORT, + T_INT, + T_LONG, + T_FLOAT, + T_DOUBLE, + T_OBJECT, + T_ARRAY_TYPE_BORDER, + T_BOOLEAN_ARRAY, + T_BYTE_ARRAY, + T_CHAR_ARRAY, + T_SHORT_ARRAY, + T_INT_ARRAY, + T_LONG_ARRAY, + T_FLOAT_ARRAY, + T_DOUBLE_ARRAY, + T_OBJECT_ARRAY + } JavaBasicType; + + /* Throw an exception by name */ + LIBAPI void LIBAPIENTRY jnitoolsThrowByName(JNIEnv *env, const char *name, const char *msg, ...); + + /* Translates a Java string to a C string using the String.getBytes + * method, which uses default local encoding. + */ + LIBAPI char * LIBAPIENTRY jnitoolsGetJavaString(JNIEnv *env, jstring jstr); + + /** + * signature: e.g. "(II[I)V" for "void (int, int, int[])" + * + * argIndex: 0-n argument index of the method signature + * -1 return type + */ + LIBAPI JavaBasicType LIBAPIENTRY jnitoolsGetJavaBasicType(JNIEnv *env, const char * signature, int argIndex, const char * errText); + + LIBAPI int LIBAPIENTRY jnitoolsGetArgNumber(JNIEnv *env, + const char * signature, + const char * errText); + /** + * e.g.: int a[4]; + * jarray arr = jnitoolsNativeArray2JavaArray(env, T_INT_ARRAY, + * a, 4); + */ + LIBAPI jarray LIBAPIENTRY jnitoolsNativeArray2JavaArray (JNIEnv *env, + JavaBasicType jbt, + void *data, int dataArrayLen, + const char * errText, int arg); + + /** + * e.g.: int * a[2]; + * a[0] = calloc (4, sizeof(int)); + * a[1] = calloc (4, sizeof(int)); + * jarray arr = jnitoolsNativePtrArray2JavaArray(env, T_INT_ARRAY, + * a, 2, 8); + */ + LIBAPI jarray LIBAPIENTRY jnitoolsNativePtrArray2JavaArray(JNIEnv *env, + JavaBasicType jbt, + void *data[/*pointerNumber*/], + int pointerNumber, + int dataArrayLen, + const char * errText, int arg); + + + /** + * e.g.: int a[4]; + * jarray arr = ... + * jnitoolsReleaseJavaArray2NativeArray(env, arr, T_INT_ARRAY, + * a, 4); + */ + LIBAPI void LIBAPIENTRY jnitoolsReleaseJavaArray2NativeArray( + JNIEnv *env, + jarray arr, JavaBasicType jbt, + void *data, int dataArrayLen, + const char * errText, int arg); + + /** + * e.g.: int * a[2]; + * a[0] = calloc (4, sizeof(int)); + * a[1] = calloc (4, sizeof(int)); + * jarray arr = ... + * jnitoolsReleaseJavaArray2NativeArrayPtr (env, arr, T_INT_ARRAY, + * a, 2, 8); + */ + LIBAPI void LIBAPIENTRY jnitoolsReleaseJavaArray2NativeArrayPtr ( + JNIEnv *env, + jarray arr, + JavaBasicType jbt, + void *data[/*pointerNumber*/], + int pointerNumber, + int dataArrayLen, + const char * errText, int arg); + + LIBAPI void * LIBAPIENTRY jnitoolsCreateNativeArray (JavaBasicType jbt, + int dataArrayLen, + const char * errText); +#endif -- cgit v1.2.3