aboutsummaryrefslogtreecommitdiffstats
path: root/CNativeCode/jnitools.h
diff options
context:
space:
mode:
Diffstat (limited to 'CNativeCode/jnitools.h')
-rw-r--r--CNativeCode/jnitools.h122
1 files changed, 122 insertions, 0 deletions
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 <stdio.h>
+ #include <stdlib.h>
+ #include <stdarg.h>
+
+ #ifdef _WIN32_
+ #include "winstuff.h"
+ #endif
+
+ #include <jni.h>
+
+ #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 <name>(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