nn_ComputerState real

This commit is contained in:
2026-05-28 20:45:52 -03:00
parent 560cce77e8
commit 287e773aa5
5 changed files with 65 additions and 18 deletions

View File

@@ -5,6 +5,10 @@
#define CARBON_MAP_TO_NN_EXIT(enumcase) case enumcase:\
jfieldID id = env->GetFieldID(clazz, #enumcase, "Lorg.neoflock.NeoNucleus.nn_Exit;");\
return env->GetStaticObjectField(clazz, id);
#define CARBON_MAP_TO_NN_COMPUTERSTATE(enumcase) case enumcase:\
jfieldID id = env->GetFieldID(clazz, #enumcase, "Lorg.neoflock.NeoNucleus.nn_ComputerState;");\
return env->GetStaticObjectField(clazz, id);
// codename for NN JNI is Carbon because i needed something better than NN JNI
bool Carbon::PointerBacked::SetPointer(JNIEnv * env, jobject obj, void* ptr) {
jfieldID id = env->GetFieldID(env->GetObjectClass(obj), "ptr", "J");
@@ -77,6 +81,24 @@ nn_Exit From_nn_Exit(JNIEnv* env, jobject a) {
jint value = env->CallIntMethod(a, ordMID);
return (nn_Exit) value; // this should be fine as long as the header and java side don't desync
}
jobject Carbon::Map::To_nn_ComputerState(JNIEnv* env, nn_ComputerState a) {
jclass clazz = env->FindClass("org/neoflock/NeoComputers/nn_ComputerState");
switch (a) {
CARBON_MAP_TO_NN_COMPUTERSTATE(NN_RUNNING)
CARBON_MAP_TO_NN_COMPUTERSTATE(NN_BOOTUP)
CARBON_MAP_TO_NN_COMPUTERSTATE(NN_POWEROFF)
CARBON_MAP_TO_NN_COMPUTERSTATE(NN_RESTART)
CARBON_MAP_TO_NN_COMPUTERSTATE(NN_CRASHED)
CARBON_MAP_TO_NN_COMPUTERSTATE(NN_BLACKOUT)
CARBON_MAP_TO_NN_COMPUTERSTATE(NN_CHARCH)
}
}
nn_Exit From_nn_ComputerState(JNIEnv* env, jobject a) {
jclass clazz = env->FindClass("org/neoflock/NeoNucleus/nn_ComputerState");
jmethodID ordMID = env->GetMethodID(clazz, "ordinal", "()I");
jint value = env->CallIntMethod(a, ordMID);
return (nn_Exit) value;
}
namespace Carbon::Exceptions {
CARBON_EXCEPTION_FUNC(ThrowNullPtr, "java/lang/NullPointerException");
}

View File

@@ -26,7 +26,8 @@ namespace Carbon {
namespace Map {
jobject To_nn_Exit(JNIEnv* env, nn_Exit a);
nn_Exit From_nn_Exit(JNIEnv* env, jobject a);
jobject To_nn_ComputerState(JNIEnv* env, nn_ComputerState a);
nn_ComputerState From_nn_ComputerState(JNIEnv* env, jobject a);
}
typedef struct JavaObjectTarget { // i might lowkey drop this struct

View File

@@ -135,8 +135,8 @@ JNIEXPORT jobject JNICALL Java_org_neoflock_NeoNucleus_NativeBindings_nn_1mountC
(JNIEnv * env, jclass, jobject computer, jobject comp, jint slot, jboolean silent) {
nn_Computer* nnPC = (nn_Computer*) Carbon::PointerBacked::GetPointer(env, computer);
nn_Component* nnComp = (nn_Component*) Carbon::PointerBacked::GetPointer(env, comp);
NULLPTR_CHECK(nnPC, nn_Component);
NULLPTR_CHECK(nnComp, nn_Computer);
NULLPTR_CHECK(nnPC, nn_Computer);
NULLPTR_CHECK(nnComp, nn_Component);
return Carbon::Map::To_nn_Exit(env, nn_mountComponent(nnPC, nnComp, slot, silent));
}
@@ -169,3 +169,10 @@ JNIEXPORT jobject JNICALL Java_org_neoflock_NeoNucleus_NativeBindings_nn_1create
env->ReleaseStringUTFChars(address, addr);
return Carbon::InstantiateDefaultPBC(env, "org/neoflock/NeoNucleus/nn_Computer", computer);
}
JNIEXPORT jobject JNICALL Java_org_neoflock_NeoNucleus_NativeBindings_nn_1getComputerState
(JNIEnv * env, jclass, jobject computer) {
nn_Computer* nnPC = (nn_Computer*) Carbon::PointerBacked::GetPointer(env, computer);
NULLPTR_CHECK(nnPC, nn_Component);
return Carbon::Map::To_nn_ComputerState(env, nn_getComputerState(nnPC));
}