summaryrefslogtreecommitdiff
path: root/src/fakejvm/jvm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/fakejvm/jvm.h')
-rw-r--r--src/fakejvm/jvm.h81
1 files changed, 0 insertions, 81 deletions
diff --git a/src/fakejvm/jvm.h b/src/fakejvm/jvm.h
deleted file mode 100644
index 937ddfd..0000000
--- a/src/fakejvm/jvm.h
+++ /dev/null
@@ -1,81 +0,0 @@
-#pragma once
-
-#include "jni.h"
-#include <stdbool.h>
-
-struct jvm_string {
- const char *data;
- size_t size;
- bool heap; // if on heap, then `data` should be freed
-};
-
-struct jvm_array {
- void *data;
- size_t element_sz, size; // `size` == in elements, `size * element_sz` for bytes
-};
-
-struct jvm_class {
- struct jvm_string name;
-};
-
-struct jvm_method {
- jclass klass;
- struct jvm_string name, signature;
-};
-
-struct jvm_object {
- jclass this_klass;
-
- union {
- struct jvm_array array;
- struct jvm_method method;
- struct jvm_class klass;
- struct jvm_string string;
- };
-
- enum jvm_object_type {
- JVM_OBJECT_NONE,
- JVM_OBJECT_ARRAY,
- JVM_OBJECT_METHOD,
- JVM_OBJECT_CLASS,
- JVM_OBJECT_STRING,
- JVM_OBJECT_LAST,
- } type;
-};
-
-struct jvm_native_method {
- struct jvm_method method;
- void *function;
-};
-
-struct jvm {
- // [0] object is created on `jvm_init` and it's a class object for defining the class of a class
- // every class object's `this_class` member points back to [0], causing recursion.
- // Every other object or class definition is created lazily as needed, only [0] is special.
- // `jobject`'s we return through JNI are actually (index+1) to this array, not pointers.
- struct jvm_object objects[256];
-
- // Native methods registered by the application.
- // Nothing special, but there's no need to access this array either really.
- // You can use `jvm_get_native_method` instead.
- struct jvm_native_method methods[255];
-
- // These hold the function pointers for our JNI implementation.
- struct JNINativeInterface native;
- struct JNIInvokeInterface invoke;
-
- // JNI's api is weird.. pointer to a reference of a struct, OK!
- // Developers have to dereference these pointers to call methods from an ... reference.
- // NOTE: These are pointers, and JNI interface passes pointers to these pointers!
- JNIEnv env; // points to native
- JavaVM vm; // points to invoke
-};
-
-void*
-jvm_get_native_method(struct jvm *jvm, const char *klass, const char *method);
-
-void
-jvm_release(struct jvm *jvm);
-
-void
-jvm_init(struct jvm *jvm);