diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2024-10-07 19:30:56 +0200 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2024-10-07 19:30:56 +0200 |
| commit | 40a899bd6ee536eae093337bf2d0dcc8db4e46f1 (patch) | |
| tree | 485ace3e6fd28b91f394efd277732651e10824d8 /portmidi/pm_java/pmjni/pmjni.c | |
| parent | 6fc4bddfdf8e056469f316c1a0fe488efbb4253a (diff) | |
| download | ttdaw-40a899bd6ee536eae093337bf2d0dcc8db4e46f1.tar.gz | |
Moved example code examples folder
Diffstat (limited to 'portmidi/pm_java/pmjni/pmjni.c')
| -rw-r--r-- | portmidi/pm_java/pmjni/pmjni.c | 354 |
1 files changed, 0 insertions, 354 deletions
diff --git a/portmidi/pm_java/pmjni/pmjni.c b/portmidi/pm_java/pmjni/pmjni.c deleted file mode 100644 index c60cffb..0000000 --- a/portmidi/pm_java/pmjni/pmjni.c +++ /dev/null @@ -1,354 +0,0 @@ -#include "portmidi.h" -#include "porttime.h" -#include "jportmidi_JportMidiApi.h" -#include <stdio.h> - -// these macros assume JNIEnv *env is declared and valid: -// -#define CLASS(c, obj) jclass c = (*env)->GetObjectClass(env, obj) -#define ADDRESS_FID(fid, c) \ - jfieldID fid = (*env)->GetFieldID(env, c, "address", "J") -// Uses Java Long (64-bit) to make sure there is room to store a -// pointer. Cast this to a C long (either 32 or 64 bit) to match -// the size of a pointer. Finally cast int to pointer. All this -// is supposed to avoid C compiler warnings and (worse) losing -// address bits. -#define PMSTREAM(obj, fid) ((PmStream *) (intptr_t) (*env)->GetLongField(env, obj, fid)) -// Cast stream to long to convert integer to pointer, then expand -// integer to 64-bit jlong. This avoids compiler warnings. -#define SET_PMSTREAM(obj, fid, stream) \ - (*env)->SetLongField(env, obj, fid, (jlong) (intptr_t) stream) - - -/* - * Method: Pm_Initialize - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Initialize - (JNIEnv *env, jclass cl) -{ - return Pm_Initialize(); -} - - -/* - * Method: Pm_Terminate - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Terminate - (JNIEnv *env, jclass cl) -{ - return Pm_Terminate(); -} - - -/* - * Method: Pm_HasHostError - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1HasHostError - (JNIEnv *env, jclass cl, jobject jstream) -{ - CLASS(c, jstream); - ADDRESS_FID(fid, c); - return Pm_HasHostError(PMSTREAM(jstream, fid)); -} - - -/* - * Method: Pm_GetErrorText - */ -JNIEXPORT jstring JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetErrorText - (JNIEnv *env, jclass cl, jint i) -{ - return (*env)->NewStringUTF(env, Pm_GetErrorText(i)); -} - - -/* - * Method: Pm_GetHostErrorText - */ -JNIEXPORT jstring JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetHostErrorText - (JNIEnv *env, jclass cl) -{ - char msg[PM_HOST_ERROR_MSG_LEN]; - Pm_GetHostErrorText(msg, PM_HOST_ERROR_MSG_LEN); - return (*env)->NewStringUTF(env, msg); -} - - -/* - * Method: Pm_CountDevices - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1CountDevices - (JNIEnv *env, jclass cl) -{ - return Pm_CountDevices(); -} - - -/* - * Method: Pm_GetDefaultInputDeviceID - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDefaultInputDeviceID - (JNIEnv *env, jclass cl) -{ - return Pm_GetDefaultInputDeviceID(); -} - - -/* - * Method: Pm_GetDefaultOutputDeviceID - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDefaultOutputDeviceID - (JNIEnv *env, jclass cl) -{ - return Pm_GetDefaultOutputDeviceID(); -} - - -/* - * Method: Pm_GetDeviceInterf - */ -JNIEXPORT jstring JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDeviceInterf - (JNIEnv *env, jclass cl, jint i) -{ - const PmDeviceInfo *info = Pm_GetDeviceInfo(i); - if (!info) return NULL; - return (*env)->NewStringUTF(env, info->interf); -} - - -/* - * Method: Pm_GetDeviceName - */ -JNIEXPORT jstring JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDeviceName - (JNIEnv *env, jclass cl, jint i) -{ - const PmDeviceInfo *info = Pm_GetDeviceInfo(i); - if (!info) return NULL; - return (*env)->NewStringUTF(env, info->name); -} - - -/* - * Method: Pm_GetDeviceInput - */ -JNIEXPORT jboolean JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDeviceInput - (JNIEnv *env, jclass cl, jint i) -{ - const PmDeviceInfo *info = Pm_GetDeviceInfo(i); - if (!info) return (jboolean) 0; - return (jboolean) info->input; -} - - -/* - * Method: Pm_GetDeviceOutput - */ -JNIEXPORT jboolean JNICALL Java_jportmidi_JPortMidiApi_Pm_1GetDeviceOutput - (JNIEnv *env, jclass cl, jint i) -{ - const PmDeviceInfo *info = Pm_GetDeviceInfo(i); - if (!info) return (jboolean) 0; - return (jboolean) info->output; -} - - -/* - * Method: Pm_OpenInput - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1OpenInput - (JNIEnv *env, jclass cl, - jobject jstream, jint index, jstring extras, jint bufsiz) -{ - PmError rslt; - PortMidiStream *stream; - CLASS(c, jstream); - ADDRESS_FID(fid, c); - rslt = Pm_OpenInput(&stream, index, NULL, bufsiz, NULL, NULL); - SET_PMSTREAM(jstream, fid, stream); - return rslt; -} - - -/* - * Method: Pm_OpenOutput - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1OpenOutput - (JNIEnv *env, jclass cl, jobject jstream, jint index, jstring extras, - jint bufsiz, jint latency) -{ - PmError rslt; - PortMidiStream *stream; - CLASS(c, jstream); - ADDRESS_FID(fid, c); - rslt = Pm_OpenOutput(&stream, index, NULL, bufsiz, NULL, NULL, latency); - SET_PMSTREAM(jstream, fid, stream); - return rslt; -} - - -/* - * Method: Pm_SetFilter - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1SetFilter - (JNIEnv *env, jclass cl, jobject jstream, jint filters) -{ - CLASS(c, jstream); - ADDRESS_FID(fid, c); - return Pm_SetFilter(PMSTREAM(jstream, fid), filters); -} - - -/* - * Method: Pm_SetChannelMask - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1SetChannelMask - (JNIEnv *env, jclass cl, jobject jstream, jint mask) -{ - CLASS(c, jstream); - ADDRESS_FID(fid, c); - return Pm_SetChannelMask(PMSTREAM(jstream, fid), mask); -} - - -/* - * Method: Pm_Abort - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Abort - (JNIEnv *env, jclass cl, jobject jstream) -{ - CLASS(c, jstream); - ADDRESS_FID(fid, c); - return Pm_Abort(PMSTREAM(jstream, fid)); -} - - -/* - * Method: Pm_Close - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Close - (JNIEnv *env, jclass cl, jobject jstream) -{ - CLASS(c, jstream); - ADDRESS_FID(fid, c); - return Pm_Close(PMSTREAM(jstream, fid)); -} - - -/* - * Method: Pm_Read - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Read - (JNIEnv *env, jclass cl, jobject jstream, jobject jpmevent) -{ - CLASS(jstream_class, jstream); - ADDRESS_FID(address_fid, jstream_class); - jclass jpmevent_class = (*env)->GetObjectClass(env, jpmevent); - jfieldID message_fid = - (*env)->GetFieldID(env, jpmevent_class, "message", "I"); - jfieldID timestamp_fid = - (*env)->GetFieldID(env, jpmevent_class, "timestamp", "I"); - PmEvent buffer; - PmError rslt = Pm_Read(PMSTREAM(jstream, address_fid), &buffer, 1); - (*env)->SetIntField(env, jpmevent, message_fid, buffer.message); - (*env)->SetIntField(env, jpmevent, timestamp_fid, buffer.timestamp); - return rslt; -} - - -/* - * Method: Pm_Poll - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Poll - (JNIEnv *env, jclass cl, jobject jstream) -{ - CLASS(c, jstream); - ADDRESS_FID(fid, c); - return Pm_Poll(PMSTREAM(jstream, fid)); -} - - -/* - * Method: Pm_Write - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1Write - (JNIEnv *env, jclass cl, jobject jstream, jobject jpmevent) -{ - CLASS(jstream_class, jstream); - ADDRESS_FID(address_fid, jstream_class); - jclass jpmevent_class = (*env)->GetObjectClass(env, jpmevent); - jfieldID message_fid = - (*env)->GetFieldID(env, jpmevent_class, "message", "I"); - jfieldID timestamp_fid = - (*env)->GetFieldID(env, jpmevent_class, "timestamp", "I"); - // note that we call WriteShort because it's simpler than constructing - // a buffer and passing it to Pm_Write - return Pm_WriteShort(PMSTREAM(jstream, address_fid), - (*env)->GetIntField(env, jpmevent, timestamp_fid), - (*env)->GetIntField(env, jpmevent, message_fid)); -} - - -/* - * Method: Pm_WriteShort - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1WriteShort - (JNIEnv *env, jclass cl, jobject jstream, jint when, jint msg) -{ - CLASS(c, jstream); - ADDRESS_FID(fid, c); - return Pm_WriteShort(PMSTREAM(jstream, fid), when, msg); -} - - -/* - * Method: Pm_WriteSysEx - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pm_1WriteSysEx - (JNIEnv *env, jclass cl, jobject jstream, jint when, jbyteArray jmsg) -{ - CLASS(c, jstream); - ADDRESS_FID(fid, c); - jbyte *bytes = (*env)->GetByteArrayElements(env, jmsg, 0); - PmError rslt = Pm_WriteSysEx(PMSTREAM(jstream, fid), when, - (unsigned char *) bytes); - (*env)->ReleaseByteArrayElements(env, jmsg, bytes, 0); - return rslt; -} - -/* - * Method: Pt_TimeStart - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pt_1TimeStart - (JNIEnv *env, jclass c, jint resolution) -{ - return Pt_Start(resolution, NULL, NULL); -} - -/* - * Method: Pt_TimeStop - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pt_1TimeStop - (JNIEnv *env, jclass c) - { - return Pt_Stop(); - } - -/* - * Method: Pt_Time - */ -JNIEXPORT jint JNICALL Java_jportmidi_JPortMidiApi_Pt_1Time - (JNIEnv *env, jclass c) - { - return Pt_Time(); - } - -/* - * Method: Pt_TimeStarted - */ -JNIEXPORT jboolean JNICALL Java_jportmidi_JPortMidiApi_Pt_1TimeStarted - (JNIEnv *env, jclass c) -{ - return Pt_Started(); -} - - |
