char *getStringElements(JNIEnv *jenv, jstring string) { if(string) { jbyteArray array = (jbyteArray)jenv->CallObjectMethod(string, getGetBytesId(jenv)); return getByteArrayElements(jenv, array); } return 0; }
JNIEXPORT jint JNICALL Java_org_jouvieje_fmodex_FmodExJNI_Sound_1getTag(JNIEnv *java_env, jclass jcls, jlong jpointer, jbyteArray jname, jint jindex, jlong jtag) { POINTER_TYPE pointer = (POINTER_TYPE)jpointer; const char *name = (const char *)getByteArrayElements(java_env, jname); int index = (int)jindex; FMOD_TAG *tag = 0; if(jtag) { POINTER_TYPE tagTmp = (POINTER_TYPE)jtag; tag = N2J_CAST_PTR(tagTmp, FMOD_TAG *); } FMOD_RESULT result_ = N2J_CAST_PTR(pointer, FMOD::Sound *)->getTag(name, index, tag); releaseByteArrayElements(java_env, jname, (const char *)name); return (jint)result_; }
JNIEXPORT jint JNICALL Java_org_jouvieje_fmodex_FmodExJNI_Sound_1addSyncPoint(JNIEnv *java_env, jclass jcls, jlong jpointer, jint joffset, jint joffsettype, jbyteArray jname, jobject jpoint) { POINTER_TYPE pointer = (POINTER_TYPE)jpointer; int offset = (int)joffset; FMOD_TIMEUNIT offsettype = (FMOD_TIMEUNIT)joffsettype; const char *name = (const char *)getByteArrayElements(java_env, jname); FMOD_SYNCPOINT *point/* = 0*/; FMOD_RESULT result_ = N2J_CAST_PTR(pointer, FMOD::Sound *)->addSyncPoint(offset, offsettype, name, &point); releaseByteArrayElements(java_env, jname, (const char *)name); if(jpoint) { POINTER_TYPE newAddress/* = 0*/; N2J_CAST_PTR(newAddress, FMOD_SYNCPOINT *) = point; setPointerAddress(java_env, jpoint, newAddress); } return (jint)result_; }