summaryrefslogtreecommitdiff
path: root/src/libjvm-java.c
diff options
context:
space:
mode:
authorJari Vetoniemi <mailroxas@gmail.com>2018-02-19 13:12:57 +0200
committerJari Vetoniemi <mailroxas@gmail.com>2018-02-19 13:12:57 +0200
commit535779b6ff5cd21590e5ed3aff3c9ae4c785e34d (patch)
tree0de3478713ad5c33d90f00194702e9520e33af7a /src/libjvm-java.c
parent12f987e88031c5cbd9ff6534b9279b11219510ac (diff)
jvm: Implement more java apis
Diffstat (limited to 'src/libjvm-java.c')
-rw-r--r--src/libjvm-java.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/libjvm-java.c b/src/libjvm-java.c
new file mode 100644
index 0000000..64dee13
--- /dev/null
+++ b/src/libjvm-java.c
@@ -0,0 +1,45 @@
+#include <stdarg.h>
+#include <stdio.h>
+#include <assert.h>
+#include "jvm/jni.h"
+
+jclass
+java_lang_Object_getClass(JNIEnv *env, jobject object, va_list args)
+{
+ assert(env && object);
+ return (*env)->GetObjectClass(env, object);
+}
+
+jobject
+java_lang_Class_getClassLoader(JNIEnv *env, jobject object, va_list args)
+{
+ assert(env && object);
+ static jobject sv;
+ return (sv ? sv : (sv = (*env)->AllocObject(env, (*env)->FindClass(env, "java/lang/ClassLoader"))));
+}
+
+jobject
+java_lang_ClassLoader_findLibrary(JNIEnv *env, jobject object, va_list args)
+{
+ assert(env && object);
+ jstring str = va_arg(args, jstring);
+ printf("%s\n", (*env)->GetStringUTFChars(env, str, NULL));
+ va_end(args);
+ return NULL;
+}
+
+jobject
+java_util_Map_entrySet(JNIEnv *env, jobject object, va_list args)
+{
+ assert(env && object);
+ static jobject sv;
+ return (sv ? sv : (sv = (*env)->AllocObject(env, (*env)->FindClass(env, "java/util/Set"))));
+}
+
+jobject
+java_util_Set_iterator(JNIEnv *env, jobject object, va_list args)
+{
+ assert(env && object);
+ static jobject sv;
+ return (sv ? sv : (sv = (*env)->AllocObject(env, (*env)->FindClass(env, "java/util/Iterator"))));
+}