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
,
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
,
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
,
45 JNIEXPORT jobjectArray JNICALL
Impl_mle_MidiShelf_devices(JNIEnv
* env
,
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
,
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
));