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 // 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
,
27 return forwardCallStaticObject(env
, JARSHELF_CLASSNAME
,
28 "classPath", JARSHELF_CLASSPATH_DESC
);
31 JNIEXPORT jobject JNICALL
Impl_mle_JarShelf_libraries(JNIEnv
* env
,
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
,
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
,
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
,
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
,
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
,
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
));