1 /* -*- Mode: C++; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
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
,
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
,
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
,
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
,
55 JNIEXPORT jobject JNICALL
Impl_mle_TypeShelf_inJar(JNIEnv
* env
,
56 jclass classy
, jobject mleType
)
58 return forwardCallStaticObject(env
, TYPE_CLASSNAME
,
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
,
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
,
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
,
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
));