Ensure log directory exists first.
[SquirrelJME.git] / emulators / emulator-base / src / main / c / mle_jar.c
blob9d3213c84f1983f20b5514668df1553e56b6c215
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 // The class to forward to
13 #define JARSHELF_CLASSNAME "cc/squirreljme/emulator/EmulatedJarPackageShelf"
15 #define JARSHELF_CLASSPATH_DESC "()[Lcc/squirreljme/jvm/mle/brackets/JarPackageBracket;"
16 #define JARSHELF_LIBRARIES_DESC "()[Lcc/squirreljme/jvm/mle/brackets/JarPackageBracket;"
17 #define JARSHELF_LIBRARYID_DESC "(Lcc/squirreljme/jvm/mle/brackets/JarPackageBracket;)I"
18 #define JARSHELF_LIBRARYPATH_DESC "(Lcc/squirreljme/jvm/mle/brackets/JarPackageBracket;)Ljava/lang/String;"
19 #define JARSHELF_OPENRESOURCE_DESC "(Lcc/squirreljme/jvm/mle/brackets/JarPackageBracket;Ljava/lang/String;)Ljava/io/InputStream;"
20 #define JARSHELF_PREFIXCODE_DESC "(Lcc/squirreljme/jvm/mle/brackets/JarPackageBracket;)I"
21 #define JARSHELF_RAWDATA_DESC "(Lcc/squirreljme/jvm/mle/brackets/JarPackageBracket;I[BII)I"
22 #define JARSHELF_RAWSIZE_DESC "(Lcc/squirreljme/jvm/mle/brackets/JarPackageBracket;)I"
24 JNIEXPORT jobject JNICALL Impl_mle_JarShelf_classPath(JNIEnv* env,
25 jclass classy)
27 return forwardCallStaticObject(env, JARSHELF_CLASSNAME,
28 "classPath", JARSHELF_CLASSPATH_DESC);
31 JNIEXPORT jobject JNICALL Impl_mle_JarShelf_libraries(JNIEnv* env,
32 jclass classy)
34 return forwardCallStaticObject(env, JARSHELF_CLASSNAME,
35 "libraries", JARSHELF_LIBRARIES_DESC);
38 JNIEXPORT jint JNICALL Impl_mle_JarShelf_libraryId(JNIEnv* env,
39 jclass classy, jobject jar)
41 return forwardCallStaticInteger(env, JARSHELF_CLASSNAME,
42 "libraryId", JARSHELF_LIBRARYID_DESC,
43 jar);
46 JNIEXPORT jobject JNICALL Impl_mle_JarShelf_libraryPath(JNIEnv* env,
47 jclass classy, jobject jar)
49 return forwardCallStaticObject(env, JARSHELF_CLASSNAME,
50 "libraryPath", JARSHELF_LIBRARYPATH_DESC,
51 jar);
54 JNIEXPORT jobject JNICALL Impl_mle_JarShelf_openResource(JNIEnv* env,
55 jclass classy, jobject jar, jobject rcName)
57 return forwardCallStaticObject(env, JARSHELF_CLASSNAME,
58 "openResource", JARSHELF_OPENRESOURCE_DESC,
59 jar, rcName);
62 JNIEXPORT jint JNICALL Impl_mle_JarShelf_prefixCode(JNIEnv* env,
63 jclass classy, jobject jar)
65 return forwardCallStaticInteger(env, JARSHELF_CLASSNAME,
66 "prefixCode", JARSHELF_PREFIXCODE_DESC,
67 jar);
70 JNIEXPORT jint JNICALL Impl_mle_JarShelf_rawData(JNIEnv* env,
71 jclass classy, jobject jar, jint jarOff,
72 jbyteArray buf, jint off, jint len)
74 return forwardCallStaticInteger(env, JARSHELF_CLASSNAME,
75 "rawData", JARSHELF_RAWDATA_DESC,
76 jar, jarOff, buf, off, len);
79 JNIEXPORT jint JNICALL Impl_mle_JarShelf_rawSize(JNIEnv* env,
80 jclass classy, jobject jar)
82 return forwardCallStaticInteger(env, JARSHELF_CLASSNAME,
83 "rawSize", JARSHELF_RAWSIZE_DESC,
84 jar);
87 static const JNINativeMethod mleJarMethods[] =
89 {"classPath", JARSHELF_CLASSPATH_DESC, (void*)Impl_mle_JarShelf_classPath},
90 {"libraries", JARSHELF_LIBRARIES_DESC, (void*)Impl_mle_JarShelf_libraries},
91 {"libraryId", JARSHELF_LIBRARYID_DESC, (void*)Impl_mle_JarShelf_libraryId},
92 {"libraryPath", JARSHELF_LIBRARYPATH_DESC, (void*)Impl_mle_JarShelf_libraryPath},
93 {"openResource", JARSHELF_OPENRESOURCE_DESC, (void*)Impl_mle_JarShelf_openResource},
94 {"prefixCode", JARSHELF_PREFIXCODE_DESC, (void*)Impl_mle_JarShelf_prefixCode},
95 {"rawData", JARSHELF_RAWDATA_DESC, (void*)Impl_mle_JarShelf_rawData},
96 {"rawSize", JARSHELF_RAWSIZE_DESC, (void*)Impl_mle_JarShelf_rawSize},
99 jint JNICALL mleJarInit(JNIEnv* env, jclass classy)
101 return (*env)->RegisterNatives(env,
102 (*env)->FindClass(env, "cc/squirreljme/jvm/mle/JarPackageShelf"),
103 mleJarMethods, sizeof(mleJarMethods) / sizeof(JNINativeMethod));