aboutsummaryrefslogtreecommitdiffstats
path: root/native
diff options
context:
space:
mode:
Diffstat (limited to 'native')
-rw-r--r--native/compile.cmd4
-rw-r--r--native/natives.c143
-rw-r--r--native/natives.h38
3 files changed, 9 insertions, 176 deletions
diff --git a/native/compile.cmd b/native/compile.cmd
index a6c8b41c..c1c4f9a8 100644
--- a/native/compile.cmd
+++ b/native/compile.cmd
@@ -1,6 +1,4 @@
set WINDOWS_SDK=c:\Program Files\Microsoft SDKs\Windows\v7.1
call "%WINDOWS_SDK%\bin\setenv.cmd" /%ARCH%
-call %VC%\vcvarsall.bat
-
-%VC%\bin\cl /I%JAVA_HOME%\include /I%JAVA_HOME%\include\win32 /I%VC%\include /I%VC%\lib /I%MSDK%\Lib libHelloWorld.c /FelibHelloWorld.dll /LD
+%VC%\bin\cl /I%JAVA_HOME%\include /I%JAVA_HOME%\include\win32 natives.c /Fenatives.dll /LD
diff --git a/native/natives.c b/native/natives.c
index 9c40f2c7..aecaa62c 100644
--- a/native/natives.c
+++ b/native/natives.c
@@ -28,147 +28,10 @@
#include <stdlib.h>
#include "natives.h"
-JNIEXPORT jint JNICALL Java_at_ssw_hotswap_test_natives_SimpleNativeTest_00024A_value(JNIEnv *env, jclass c) {
+JNIEXPORT jint JNICALL Java_com_github_dcevm_test_natives_SimpleNativeTest_00024A_value(JNIEnv *env, jclass c) {
return 1;
}
-JNIEXPORT jint JNICALL Java_at_ssw_hotswap_test_natives_SimpleNativeTest_00024A_value2(JNIEnv *env, jclass c) {
+JNIEXPORT jint JNICALL Java_com_github_dcevm_test_natives_SimpleNativeTest_00024A_value2(JNIEnv *env, jclass c) {
return 2;
-}
-
-JNIEXPORT jclass JNICALL Java_at_ssw_hotswap_test_access_jni_JNIVMAccess_findClassNative(JNIEnv *env, jclass c, jstring s) {
- const char* name = (*env)->GetStringUTFChars(env, s, 0);
- jclass clazz = (*env)->FindClass(env, name);
- (*env)->ReleaseStringUTFChars(env, s, name);
- return clazz;
-}
-
-JNIEXPORT jobject JNICALL Java_at_ssw_hotswap_test_access_jni_JNIClassAccess_findMethodNative(JNIEnv *env, jclass c, jclass cls, jstring methodName) {
- const char *methodstr = (*env)->GetStringUTFChars(env, methodName, 0);
-
- jclass jCls = (*env)->GetObjectClass(env, cls);
-
- // Get Method ID of getMethods()
- jmethodID midGetFields = (*env)->GetMethodID(env, jCls, "getDeclaredMethods", "()[Ljava/lang/reflect/Method;");
- (*env)->ExceptionDescribe(env);
- jobjectArray jobjArray = (jobjectArray) (*env)->CallObjectMethod(env, cls, midGetFields);
-
- jsize len = (*env)->GetArrayLength(env, jobjArray);
- jsize i = 0;
-
- for (i = 0; i < len; i++) {
- jobject _strMethod = (*env)->GetObjectArrayElement(env, jobjArray, i);
- jclass _methodClazz = (*env)->GetObjectClass(env, _strMethod);
- jmethodID mid = (*env)->GetMethodID(env, _methodClazz, "getName", "()Ljava/lang/String;");
- jstring _name = (jstring) (*env)->CallObjectMethod(env, _strMethod, mid);
-
- const char *str = (*env)->GetStringUTFChars(env, _name, 0);
-
- if (strcmp(str, methodstr) == 0) {
- (*env)->ReleaseStringUTFChars(env, methodName, methodstr);
- (*env)->ReleaseStringUTFChars(env, _name, str);
- return _strMethod;
- }
- (*env)->ReleaseStringUTFChars(env, _name, str);
- }
-
- jclass exc = (*env)->FindClass(env, "java/lang/NoSuchMethodError");
- (*env)->ThrowNew(env, exc, methodstr);
- (*env)->ReleaseStringUTFChars(env, methodName, methodstr);
-
-}
-
-JNIEXPORT jobjectArray JNICALL Java_at_ssw_hotswap_test_access_jni_JNIClassAccess_getMethodsNative(JNIEnv *env, jclass c, jclass cls) {
- jobjectArray array;
-
- jclass jCls = (*env)->GetObjectClass(env, cls);
-
- // Get Method ID of getMethods()
- jmethodID midGetFields = (*env)->GetMethodID(env, jCls, "getDeclaredMethods", "()[Ljava/lang/reflect/Method;");
- (*env)->ExceptionDescribe(env);
- jobjectArray jobjArray = (jobjectArray) (*env)->CallObjectMethod(env, cls, midGetFields);
-
- jsize len = (*env)->GetArrayLength(env, jobjArray);
- jsize i = 0;
-
- array = (*env)->NewObjectArray(env, len, (*env)->FindClass(env, "java/lang/reflect/Method"), 0);
-
- for (i = 0; i < len; i++) {
- jobject _strMethod = (*env)->GetObjectArrayElement(env, jobjArray, i);
- (*env)->SetObjectArrayElement(env, array, i, _strMethod);
- }
-
- return array;
-}
-
-jobject callVoidMethod(JNIEnv *env, jobject obj, jboolean staticValue, jmethodID methodID, jvalue *params) {
- if (staticValue) {
- (*env)->CallStaticVoidMethodA(env, obj, methodID, params);
- } else {
- (*env)->CallVoidMethodA(env, obj, methodID, params);
- }
- return (*env)->NewGlobalRef(env, NULL);
-}
-
-jobject callIntMethod(JNIEnv *env, jobject obj, jboolean staticValue, jmethodID methodID, jvalue *params) {
- jint intValue;
- if (staticValue) {
- intValue = (*env)->CallStaticIntMethodA(env, obj, methodID, params);
- } else {
- intValue = (*env)->CallIntMethodA(env, obj, methodID, params);
- }
- jclass clazz = (*env)->FindClass(env, "Ljava/lang/Integer;");
- jmethodID methodIDInteger = (*env)->GetMethodID(env, clazz, "<init>", "(I)V");
- return (*env)->NewObject(env, clazz, methodIDInteger, intValue);
-}
-
-jobject callObjectMethod(JNIEnv *env, jobject obj, jboolean staticValue, jmethodID methodID, jvalue *params) {
- if (staticValue) {
- return (*env)->CallStaticObjectMethodA(env, obj, methodID, params);
- } else {
- return (*env)->CallObjectMethodA(env, obj, methodID, params);
- }
-}
-
-JNIEXPORT jobject JNICALL Java_at_ssw_hotswap_test_access_jni_JNIMethodAccess_invokeMethodNative(JNIEnv *env, jclass c, jclass cls, jobject obj, jstring methodName, jstring retValue, jboolean staticValue, jstring descriptor, jobjectArray params) {
- const char *methodstr = (*env)->GetStringUTFChars(env, methodName, 0);
- const char *descriptorstr = (*env)->GetStringUTFChars(env, descriptor, 0);
- const char *retValuestr = (*env)->GetStringUTFChars(env, retValue, 0);
-
- jmethodID methodID;
- if (staticValue) {
- methodID = (*env)->GetStaticMethodID(env, cls, methodstr, descriptorstr);
- } else {
- methodID = (*env)->GetMethodID(env, cls, methodstr, descriptorstr);
- }
-
- jsize len = (*env)->GetArrayLength(env, params);
- jvalue *m = (jvalue*) malloc(sizeof (jvalue) * len);
-
- jvalue *mm = m;
- int i = 0;
- for (i; i < len; i++) {
- *mm = (jvalue)(*env)->GetObjectArrayElement(env, params, i);
- mm += 1;
- }
-
- jobject object = (*env)->NewGlobalRef(env, NULL);
-
- if (strcmp(retValuestr, "void") == 0) {
- object = callVoidMethod(env, obj, staticValue, methodID, m);
- } else if (strcmp(retValuestr, "int") == 0) {
- object = callIntMethod(env, obj, staticValue, methodID, m);
- } else if (strcmp(retValuestr, "java.lang.Object") == 0) {
- object = callObjectMethod(env, obj, staticValue, methodID, m);
- } else {
- jclass exc = (*env)->FindClass(env, "java.lang.NotImplementedException");
- (*env)->ThrowNew(env, exc, "required retValue: bool/int/object");
- }
-
- (*env)->ReleaseStringUTFChars(env, methodName, methodstr);
- (*env)->ReleaseStringUTFChars(env, descriptor, descriptorstr);
- (*env)->ReleaseStringUTFChars(env, retValue, retValuestr);
-
- return object;
-}
-
+} \ No newline at end of file
diff --git a/native/natives.h b/native/natives.h
index 90fcf920..53a02be7 100644
--- a/native/natives.h
+++ b/native/natives.h
@@ -28,45 +28,17 @@
#define NATIVES
/*
- * Class: at_ssw_hotswap_test_natives_SimpleNativeTest_A
+ * Class: com_github_dcevm_test_natives_SimpleNativeTest_A
* Method: value
* Signature: ()I
*/
-JNIEXPORT jint JNICALL Java_at_ssw_hotswap_test_natives_SimpleNativeTest_00024A_value(JNIEnv *, jclass);
+JNIEXPORT jint JNICALL Java_com_github_dcevm_test_natives_SimpleNativeTest_00024A_value(JNIEnv *, jclass);
/*
- * Class: at_ssw_hotswap_test_natives_SimpleNativeTest_A
+ * Class: com_github_dcevm_test_natives_SimpleNativeTest_A
* Method: value2
* Signature: ()I
*/
-JNIEXPORT jint JNICALL Java_at_ssw_hotswap_test_natives_SimpleNativeTest_00024A_value2(JNIEnv *, jclass);
+JNIEXPORT jint JNICALL Java_com_github_dcevm_test_natives_SimpleNativeTest_00024A_value2(JNIEnv *, jclass);
-/*
- * Class: at_ssw_hotswap_test_access_jni_JNIVMAccess
- * Method: findClass
- * Signature: (String)Class
- */
-JNIEXPORT jclass JNICALL Java_at_ssw_hotswap_test_access_jni_JNIVMAccess_findClassNative(JNIEnv *, jclass, jstring);
-
-/*
- * Class: at_ssw_hotswap_test_access_jni_JNIClassAccess
- * Method: findMethod
- * Signature: (Class, String)Object
- */
-JNIEXPORT jobject JNICALL Java_at_ssw_hotswap_test_access_jni_JNIClassAccess_findMethodNative(JNIEnv *, jclass, jclass, jstring);
-
-/*
- * Class: at_ssw_hotswap_test_access_jni_JNIClassAccess
- * Method: getMethods
- * Signature: (Class)Object[]
- */
-JNIEXPORT jobjectArray JNICALL Java_at_ssw_hotswap_test_access_jni_JNIClassAccess_getMethodsNative(JNIEnv *, jclass, jclass);
-
-/*
- * Class: at_ssw_hotswap_test_access_jni_JNIMethodAccess
- * Method: invokeMethod
- * Signature: (Class, String, Object)Value
- */
-JNIEXPORT jobject JNICALL Java_at_ssw_hotswap_test_access_jni_JNIMethodAccess_invokeMethod(JNIEnv *, jclass, jclass, jobject, jstring, jstring, jboolean, jstring);
-
-#endif
+#endif // NATIVES \ No newline at end of file