X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=org.simantics.fmil%2Fnative%2FFMUSimulator%2Fsrc%2Ffmu_control.cpp;h=45d75862789430ac1562fbda250a77e15c34929c;hb=dd1ca5e5d7fae427cae08e16c14e519df4727500;hp=43fe42c87d05cd1d12071ab4c00038d062e74774;hpb=d37b372df3c35c5f89c139146422041a79a726e5;p=simantics%2Ffmil.git diff --git a/org.simantics.fmil/native/FMUSimulator/src/fmu_control.cpp b/org.simantics.fmil/native/FMUSimulator/src/fmu_control.cpp index 43fe42c..45d7586 100644 --- a/org.simantics.fmil/native/FMUSimulator/src/fmu_control.cpp +++ b/org.simantics.fmil/native/FMUSimulator/src/fmu_control.cpp @@ -39,9 +39,15 @@ using namespace std; struct FMI1 { void *fmu; - vector variables; // all variables in an initialized model - vector valueReferences; // all value references - vector subscription; // subscribed value references + + vector variables; + vector descriptions; + vector valueReferences; + vector types; + vector variabilities; + vector causalities; + + vector subscription; double currentTime; double timeStep; @@ -128,6 +134,13 @@ JNIEXPORT jint JNICALL Java_org_simantics_fmil_FMIL_loadFMUFile_1 vars = FMI1_CS_GET_VARIABLES(fmi1.fmu, &variableCount); for(int i=0;iNewObjectArray(fmus[id].descriptions.size(), + env->FindClass("java/lang/String"), + env->NewStringUTF("")); + + for(int i=0;iSetObjectArrayElement(ret,i,env->NewStringUTF(fmus[id].descriptions[i].c_str())); + } + + return ret; + +} + JNIEXPORT jintArray JNICALL Java_org_simantics_fmil_FMIL_getAllVariableReferences_1 (JNIEnv *env, jobject obj, jint id, jintArray result) { @@ -425,6 +453,66 @@ JNIEXPORT jintArray JNICALL Java_org_simantics_fmil_FMIL_getAllVariableReference } +JNIEXPORT jintArray JNICALL Java_org_simantics_fmil_FMIL_getAllVariableTypes_1 + (JNIEnv *env, jobject obj, jint id, jintArray result) { + + jboolean isCopy; + jint* resultElements = env -> GetIntArrayElements(result, &isCopy); + jsize n = env -> GetArrayLength(result); + + int i; + for (i = 0; i < n; i++) { + resultElements[i] = fmus[id].types[i]; + } + + if (isCopy == JNI_TRUE) { + env -> ReleaseIntArrayElements(result, resultElements, 0); + } + + return result; + +} + +JNIEXPORT jintArray JNICALL Java_org_simantics_fmil_FMIL_getAllVariableVariabilities_1 + (JNIEnv *env, jobject obj, jint id, jintArray result) { + + jboolean isCopy; + jint* resultElements = env -> GetIntArrayElements(result, &isCopy); + jsize n = env -> GetArrayLength(result); + + int i; + for (i = 0; i < n; i++) { + resultElements[i] = fmus[id].variabilities[i]; + } + + if (isCopy == JNI_TRUE) { + env -> ReleaseIntArrayElements(result, resultElements, 0); + } + + return result; + +} + +JNIEXPORT jintArray JNICALL Java_org_simantics_fmil_FMIL_getAllVariableCausalities_1 + (JNIEnv *env, jobject obj, jint id, jintArray result) { + + jboolean isCopy; + jint* resultElements = env -> GetIntArrayElements(result, &isCopy); + jsize n = env -> GetArrayLength(result); + + int i; + for (i = 0; i < n; i++) { + resultElements[i] = fmus[id].causalities[i]; + } + + if (isCopy == JNI_TRUE) { + env -> ReleaseIntArrayElements(result, resultElements, 0); + } + + return result; + +} + /* JNIEXPORT jobjectArray JNICALL Java_org_simantics_fmil_FMIL_filterVariables_1 (JNIEnv *env, jobject obj, jstring id, jstring regexp) {