]> gerrit.simantics Code Review - simantics/fmil.git/blobdiff - org.simantics.fmil/native/FMUSimulator/src/fmu_control.cpp
Mavenized FMIL projects.
[simantics/fmil.git] / org.simantics.fmil / native / FMUSimulator / src / fmu_control.cpp
index 45d75862789430ac1562fbda250a77e15c34929c..c5c99412d644fc8752d99d039043115d982a8e1a 100644 (file)
@@ -42,11 +42,17 @@ struct FMI1 {
 \r
        vector<string> variables;\r
        vector<string> descriptions;\r
+       vector<string> declaredTypes;\r
        vector<int> valueReferences;\r
        vector<int> types;\r
        vector<int> variabilities;\r
        vector<int> causalities;\r
 \r
+       vector<string> declaredTypeNames;\r
+       vector<string> typeDescriptions;\r
+       vector<string> quantities;\r
+       vector<string> units;\r
+\r
        vector<int> subscription;\r
        double currentTime;\r
        double timeStep;\r
@@ -120,7 +126,9 @@ JNIEXPORT jint JNICALL Java_org_simantics_fmil_FMIL_loadFMUFile_1
        HMODULE module = NULL;\r
        FMI1 fmi1;\r
        FMIL_Variable *vars;\r
+       FMIL_DeclaredType *types;\r
        int variableCount = 0;\r
+       int typeCount = 0;\r
 \r
     const char *fmuPath = env->GetStringUTFChars(path, 0);\r
        const char *fmuTempDir = env->GetStringUTFChars(tempDir, 0);\r
@@ -138,12 +146,34 @@ JNIEXPORT jint JNICALL Java_org_simantics_fmil_FMIL_loadFMUFile_1
                        fmi1.descriptions.push_back(string(vars[i].description));\r
           else\r
                        fmi1.descriptions.push_back(string(""));\r
+          if(vars[i].declaredType)\r
+                       fmi1.declaredTypes.push_back(string(vars[i].declaredType));\r
+          else\r
+                       fmi1.declaredTypes.push_back(string(""));\r
           fmi1.types.push_back(vars[i].type);\r
           fmi1.causalities.push_back(vars[i].causality);\r
           fmi1.variabilities.push_back(vars[i].variability);\r
           fmi1.valueReferences.push_back(vars[i].vr);\r
    }\r
 \r
+   types = FMI1_CS_GET_DECLARED_TYPES(fmi1.fmu, &typeCount);\r
+   for(int i=0;i<typeCount;i++) {\r
+          fmi1.declaredTypeNames.push_back(string(types[i].name));\r
+          if(types[i].description)\r
+                       fmi1.typeDescriptions.push_back(string(types[i].description));\r
+          else\r
+                       fmi1.typeDescriptions.push_back(string(""));\r
+          if(types[i].quantity)\r
+                       fmi1.quantities.push_back(string(types[i].quantity));\r
+          else\r
+                       fmi1.quantities.push_back(string(""));\r
+          if(types[i].unit)\r
+                       fmi1.units.push_back(string(types[i].unit));\r
+          else\r
+                       fmi1.units.push_back(string(""));\r
+   }\r
+\r
+\r
    fmus.push_back(fmi1);\r
 \r
        env->ReleaseStringUTFChars(path, fmuPath);\r
@@ -433,6 +463,21 @@ JNIEXPORT jobjectArray JNICALL Java_org_simantics_fmil_FMIL_getAllVariableDescri
 \r
 }\r
 \r
+JNIEXPORT jobjectArray JNICALL Java_org_simantics_fmil_FMIL_getAllVariableDeclaredTypes_1\r
+  (JNIEnv *env, jobject obj, jint id) {\r
+\r
+       jobjectArray ret= (jobjectArray)env->NewObjectArray(fmus[id].declaredTypes.size(),  \r
+                       env->FindClass("java/lang/String"),  \r
+                       env->NewStringUTF(""));\r
+   \r
+       for(int i=0;i<fmus[id].declaredTypes.size();i++) {  \r
+               env->SetObjectArrayElement(ret,i,env->NewStringUTF(fmus[id].declaredTypes[i].c_str()));  \r
+       }  \r
+\r
+       return ret;  \r
+\r
+}\r
+\r
 JNIEXPORT jintArray JNICALL Java_org_simantics_fmil_FMIL_getAllVariableReferences_1\r
   (JNIEnv *env, jobject obj, jint id, jintArray result) {\r
 \r
@@ -513,6 +558,66 @@ JNIEXPORT jintArray JNICALL Java_org_simantics_fmil_FMIL_getAllVariableCausaliti
 \r
 }\r
 \r
+JNIEXPORT jobjectArray JNICALL Java_org_simantics_fmil_FMIL_getAllDeclaredTypes_1\r
+  (JNIEnv *env, jobject obj, jint id) {\r
+\r
+       jobjectArray ret= (jobjectArray)env->NewObjectArray(fmus[id].declaredTypeNames.size(),  \r
+                       env->FindClass("java/lang/String"),  \r
+                       env->NewStringUTF(""));\r
+   \r
+       for(int i=0;i<fmus[id].declaredTypeNames.size();i++) {  \r
+               env->SetObjectArrayElement(ret,i,env->NewStringUTF(fmus[id].declaredTypeNames[i].c_str()));  \r
+       }  \r
+\r
+       return ret;  \r
+\r
+}\r
+\r
+JNIEXPORT jobjectArray JNICALL Java_org_simantics_fmil_FMIL_getAllDeclaredTypeDescriptions_1\r
+  (JNIEnv *env, jobject obj, jint id) {\r
+\r
+       jobjectArray ret= (jobjectArray)env->NewObjectArray(fmus[id].typeDescriptions.size(),  \r
+                       env->FindClass("java/lang/String"),  \r
+                       env->NewStringUTF(""));\r
+   \r
+       for(int i=0;i<fmus[id].typeDescriptions.size();i++) {  \r
+               env->SetObjectArrayElement(ret,i,env->NewStringUTF(fmus[id].typeDescriptions[i].c_str()));  \r
+       }  \r
+\r
+       return ret;  \r
+\r
+}\r
+\r
+JNIEXPORT jobjectArray JNICALL Java_org_simantics_fmil_FMIL_getAllDeclaredTypeQuantities_1\r
+  (JNIEnv *env, jobject obj, jint id) {\r
+\r
+       jobjectArray ret= (jobjectArray)env->NewObjectArray(fmus[id].quantities.size(),  \r
+                       env->FindClass("java/lang/String"),  \r
+                       env->NewStringUTF(""));\r
+   \r
+       for(int i=0;i<fmus[id].quantities.size();i++) {  \r
+               env->SetObjectArrayElement(ret,i,env->NewStringUTF(fmus[id].quantities[i].c_str()));  \r
+       }  \r
+\r
+       return ret;  \r
+\r
+}\r
+\r
+JNIEXPORT jobjectArray JNICALL Java_org_simantics_fmil_FMIL_getAllDeclaredTypeUnits_1\r
+  (JNIEnv *env, jobject obj, jint id) {\r
+\r
+       jobjectArray ret= (jobjectArray)env->NewObjectArray(fmus[id].units.size(),  \r
+                       env->FindClass("java/lang/String"),  \r
+                       env->NewStringUTF(""));\r
+   \r
+       for(int i=0;i<fmus[id].units.size();i++) {  \r
+               env->SetObjectArrayElement(ret,i,env->NewStringUTF(fmus[id].units[i].c_str()));  \r
+       }  \r
+\r
+       return ret;  \r
+\r
+}\r
+\r
 /*\r
 JNIEXPORT jobjectArray JNICALL Java_org_simantics_fmil_FMIL_filterVariables_1\r
   (JNIEnv *env, jobject obj, jstring id, jstring regexp) {\r