Move emulator-base native code into its own non-Gradle directory.
[SquirrelJME.git] / emulators / emulator-base-native / c / mle_midi.c
bloba647972ac93e804677b3802e3ceefeaf0edeab7b
1 /* -*- Mode: C++; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
3 // Multi-Phasic Applications: SquirrelJME
4 // Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
5 // ---------------------------------------------------------------------------
6 // SquirrelJME is under the GNU General Public License v3+, or later.
7 // See license.mkd for licensing and copyright information.
8 // ------------------------------------------------------------------------ */
10 #include "squirreljme.h"
12 // The class to forward to
13 #define MIDI_CLASSNAME "cc/squirreljme/emulator/EmulatedMidiShelf"
15 #define MIDI_DATARECEIVE_DESC "(Lcc/squirreljme/jvm/mle/brackets/MidiPortBracket;[BII)I"
16 #define MIDI_DATATRANSMIT_DESC "(Lcc/squirreljme/jvm/mle/brackets/MidiPortBracket;[BII)V"
17 #define MIDI_DEVICENAME_DESC "(Lcc/squirreljme/jvm/mle/brackets/MidiDeviceBracket;)Ljava/lang/String;"
18 #define MIDI_DEVICES_DESC "()[Lcc/squirreljme/jvm/mle/brackets/MidiDeviceBracket;"
19 #define MIDI_PORTS_DESC "(Lcc/squirreljme/jvm/mle/brackets/MidiDeviceBracket;Z)[Lcc/squirreljme/jvm/mle/brackets/MidiPortBracket;"
21 JNIEXPORT jint JNICALL Impl_mle_MidiShelf_dataReceive(JNIEnv* env,
22 jclass classy, jobject port, jbyteArray buf, jint off, jint len)
24 return forwardCallStaticInteger(env, MIDI_CLASSNAME,
25 "dataReceive", MIDI_DATARECEIVE_DESC,
26 port, buf, off, len);
29 JNIEXPORT void JNICALL Impl_mle_MidiShelf_dataTransmit(JNIEnv* env,
30 jclass classy, jobject port, jbyteArray buf, jint off, jint len)
32 forwardCallStaticVoid(env, MIDI_CLASSNAME,
33 "dataTransmit", MIDI_DATATRANSMIT_DESC,
34 port, buf, off, len);
37 JNIEXPORT jstring JNICALL Impl_mle_MidiShelf_deviceName(JNIEnv* env,
38 jclass classy, jobject device)
40 return (jstring)forwardCallStaticObject(env, MIDI_CLASSNAME,
41 "deviceName", MIDI_DEVICENAME_DESC,
42 device);
45 JNIEXPORT jobjectArray JNICALL Impl_mle_MidiShelf_devices(JNIEnv* env,
46 jclass classy)
48 return (jobjectArray)forwardCallStaticObject(env, MIDI_CLASSNAME,
49 "devices", MIDI_DEVICES_DESC);
52 JNIEXPORT jobjectArray JNICALL Impl_mle_MidiShelf_ports(JNIEnv* env,
53 jclass classy, jobject device, jboolean transmit)
55 return (jobjectArray)forwardCallStaticObject(env, MIDI_CLASSNAME,
56 "ports", MIDI_PORTS_DESC,
57 device, transmit);
60 static const JNINativeMethod mleMidiMethods[] =
62 {"dataReceive", MIDI_DATARECEIVE_DESC, (void*)Impl_mle_MidiShelf_dataReceive},
63 {"dataTransmit", MIDI_DATATRANSMIT_DESC, (void*)Impl_mle_MidiShelf_dataTransmit},
64 {"deviceName", MIDI_DEVICENAME_DESC, (void*)Impl_mle_MidiShelf_deviceName},
65 {"devices", MIDI_DEVICES_DESC, (void*)Impl_mle_MidiShelf_devices},
66 {"ports", MIDI_PORTS_DESC, (void*)Impl_mle_MidiShelf_ports},
69 jint JNICALL mleMidiInit(JNIEnv* env, jclass classy)
71 return (*env)->RegisterNatives(env,
72 (*env)->FindClass(env, "cc/squirreljme/jvm/mle/MidiShelf"),
73 mleMidiMethods, sizeof(mleMidiMethods) /
74 sizeof(JNINativeMethod));