Move emulator-base native code into its own non-Gradle directory.
[SquirrelJME.git] / emulators / emulator-base-native / c / mle_type.c
blobd344cc94c8b2dd208dcec234b82cbeb3e9de31f4
1 /* -*- Mode: C++; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
3 // SquirrelJME
4 // Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
5 // ---------------------------------------------------------------------------
6 // SquirrelJME is under the Mozilla Public License Version 2.0.
7 // See license.mkd for licensing and copyright information.
8 // -------------------------------------------------------------------------*/
10 #include "squirreljme.h"
12 #define TYPE_CLASSNAME "cc/squirreljme/emulator/EmulatedTypeShelf"
14 #define BINARYNAME_DESC "(Lcc/squirreljme/jvm/mle/brackets/TypeBracket;)Ljava/lang/String;"
15 #define CLASSTOTYPE_DESC "(Ljava/lang/Class;)Lcc/squirreljme/jvm/mle/brackets/TypeBracket;"
16 #define COMPONENTROOT_DESC "(Lcc/squirreljme/jvm/mle/brackets/TypeBracket;)Lcc/squirreljme/jvm/mle/brackets/TypeBracket;"
17 #define FINDTYPE_DESC "(Ljava/lang/String;)Lcc/squirreljme/jvm/mle/brackets/TypeBracket;"
18 #define INJAR_DESC "(Lcc/squirreljme/jvm/mle/brackets/TypeBracket;)Lcc/squirreljme/jvm/mle/brackets/JarPackageBracket;"
19 #define INTERFACES_DESC "(Lcc/squirreljme/jvm/mle/brackets/TypeBracket;)[Lcc/squirreljme/jvm/mle/brackets/TypeBracket;"
20 #define ISARRAY_DESC "(Lcc/squirreljme/jvm/mle/brackets/TypeBracket;)Z"
21 #define TYPETOCLASS_DESC "(Lcc/squirreljme/jvm/mle/brackets/TypeBracket;)Ljava/lang/Class;"
23 JNIEXPORT jobject JNICALL Impl_mle_TypeShelf_binaryName(JNIEnv* env,
24 jclass classy, jobject mleType)
26 return forwardCallStaticObject(env, TYPE_CLASSNAME,
27 "binaryName", BINARYNAME_DESC,
28 mleType);
31 JNIEXPORT jobject JNICALL Impl_mle_TypeShelf_classToType(JNIEnv* env,
32 jclass classy, jobject javaClass)
34 return forwardCallStaticObject(env, TYPE_CLASSNAME,
35 "classToType", CLASSTOTYPE_DESC,
36 javaClass);
39 JNIEXPORT jobject JNICALL Impl_mle_TypeShelf_componentRoot(JNIEnv* env,
40 jclass classy, jobject mleType)
42 return forwardCallStaticObject(env, TYPE_CLASSNAME,
43 "componentRoot", COMPONENTROOT_DESC,
44 mleType);
47 JNIEXPORT jobject JNICALL Impl_mle_TypeShelf_findType(JNIEnv* env,
48 jclass classy, jobject className)
50 return forwardCallStaticObject(env, TYPE_CLASSNAME,
51 "findType", FINDTYPE_DESC,
52 className);
55 JNIEXPORT jobject JNICALL Impl_mle_TypeShelf_inJar(JNIEnv* env,
56 jclass classy, jobject mleType)
58 return forwardCallStaticObject(env, TYPE_CLASSNAME,
59 "inJar", INJAR_DESC,
60 mleType);
63 JNIEXPORT jobject JNICALL Impl_mle_TypeShelf_interfaces(JNIEnv* env,
64 jclass classy, jobject mleType)
66 return forwardCallStaticObject(env, TYPE_CLASSNAME,
67 "interfaces", INTERFACES_DESC,
68 mleType);
71 JNIEXPORT jboolean JNICALL Impl_mle_TypeShelf_isArray(JNIEnv* env,
72 jclass classy, jobject mleType)
74 return forwardCallStaticBoolean(env, TYPE_CLASSNAME,
75 "isArray", ISARRAY_DESC,
76 mleType);
79 JNIEXPORT jobject JNICALL Impl_mle_TypeShelf_typeToClass(JNIEnv* env,
80 jclass classy, jobject mleType)
82 return forwardCallStaticObject(env, TYPE_CLASSNAME,
83 "typeToClass", TYPETOCLASS_DESC,
84 mleType);
87 static const JNINativeMethod mleTypeMethods[] =
89 {"binaryName", BINARYNAME_DESC, (void*)Impl_mle_TypeShelf_binaryName},
90 {"classToType", CLASSTOTYPE_DESC, (void*)Impl_mle_TypeShelf_classToType},
91 {"componentRoot", COMPONENTROOT_DESC, (void*)Impl_mle_TypeShelf_componentRoot},
92 {"findType", FINDTYPE_DESC, (void*)Impl_mle_TypeShelf_findType},
93 {"inJar", INJAR_DESC, (void*)Impl_mle_TypeShelf_inJar},
94 {"interfaces", INTERFACES_DESC, (void*)Impl_mle_TypeShelf_interfaces},
95 {"isArray", ISARRAY_DESC, (void*)Impl_mle_TypeShelf_isArray},
96 {"typeToClass", TYPETOCLASS_DESC, (void*)Impl_mle_TypeShelf_typeToClass},
99 jint JNICALL mleTypeInit(JNIEnv* env, jclass classy)
101 return (*env)->RegisterNatives(env,
102 (*env)->FindClass(env, "cc/squirreljme/jvm/mle/TypeShelf"),
103 mleTypeMethods, sizeof(mleTypeMethods) /
104 sizeof(JNINativeMethod));