@@ -235,7 +235,6 @@ static void printVar(FILE *fout, int level, VAR_INFO* info) {
235235 fprintf (fout , "</variable>\n" );
236236}
237237
238-
239238static void printFunctions (FILE * fout , FILE * plt , const char * plotFormat , const char * outputPath , const char * modelFilePrefix , DATA * data ) {
240239 int i ;
241240 for (i = 0 ; i < data -> modelData -> modelDataXml .nFunctions ; i ++ ) {
@@ -269,13 +268,52 @@ static void printProfileBlocks(FILE *fout, FILE *plt, const char *plotFormat, co
269268 }
270269}
271270
272- static void printEquations (FILE * fout , int n , MODEL_DATA_XML * xml ) {
271+
272+ static int getVarIdByName (DATA * data , const char * varName )
273+ {
274+ int i ;
275+ for (i = 0 ;i < data -> modelData -> nVariablesReal ;++ i )
276+ if (strcmp (varName , data -> modelData -> realVarsData [i ].info .name ) == 0 )
277+ return data -> modelData -> realVarsData [i ].info .id ;
278+
279+ for (i = 0 ;i < data -> modelData -> nParametersReal ;++ i )
280+ if (strcmp (varName , data -> modelData -> realParameterData [i ].info .name ) == 0 )
281+ return data -> modelData -> realParameterData [i ].info .id ;
282+
283+ for (i = 0 ;i < data -> modelData -> nVariablesInteger ;++ i )
284+ if (strcmp (varName , data -> modelData -> integerVarsData [i ].info .name ) == 0 )
285+ return data -> modelData -> integerVarsData [i ].info .id ;
286+
287+ for (i = 0 ;i < data -> modelData -> nParametersInteger ;++ i )
288+ if (strcmp (varName , data -> modelData -> integerParameterData [i ].info .name ) == 0 )
289+ return data -> modelData -> integerParameterData [i ].info .id ;
290+
291+ for (i = 0 ;i < data -> modelData -> nVariablesBoolean ;++ i )
292+ if (strcmp (varName , data -> modelData -> integerParameterData [i ].info .name ) == 0 )
293+ return data -> modelData -> integerParameterData [i ].info .id ;
294+
295+ for (i = 0 ;i < data -> modelData -> nParametersBoolean ;++ i )
296+ if (strcmp (varName , data -> modelData -> booleanParameterData [i ].info .name ) == 0 )
297+ return data -> modelData -> booleanParameterData [i ].info .id ;
298+
299+ for (i = 0 ;i < data -> modelData -> nVariablesString ;++ i )
300+ if (strcmp (varName , data -> modelData -> stringVarsData [i ].info .name ) == 0 )
301+ return data -> modelData -> stringVarsData [i ].info .id ;
302+
303+ for (i = 0 ;i < data -> modelData -> nParametersString ;++ i )
304+ if (strcmp (varName , data -> modelData -> stringParameterData [i ].info .name ) == 0 )
305+ return data -> modelData -> stringParameterData [i ].info .id ;
306+
307+ return 0 ;
308+ }
309+
310+ static void printEquations (FILE * fout , int n , MODEL_DATA_XML * xml , DATA * data ) {
273311 int i ,j ;
274312 for (i = 0 ; i < n ; i ++ ) {
275313 indent (fout ,2 );fprintf (fout , "<equation id=\"eq%d\">\n" , modelInfoGetEquation (xml ,i ).id );
276314 indent (fout ,4 );fprintf (fout , "<refs>\n" );
277315 for (j = 0 ; j < modelInfoGetEquation (xml ,i ).numVar ; j ++ ) {
278- indent (fout ,6 );fprintf (fout , "<ref refid=\"var%d\" />\n" , 0 /* modelInfoGetEquation(xml,i).vars[j]->id */ );
316+ indent (fout ,6 );fprintf (fout , "<ref refid=\"var%d\" />\n" , getVarIdByName ( data , modelInfoGetEquation (xml ,i ).vars [j ]) );
279317 }
280318 indent (fout ,4 );fprintf (fout , "</refs>\n" );
281319 indent (fout ,4 );fprintf (fout , "<calcinfo time=\"%f\" count=\"%lu\"/>\n" , rt_accumulated (SIM_TIMER_FIRST_FUNCTION + xml -> nFunctions + xml -> nProfileBlocks + modelInfoGetEquation (xml ,i ).id ), (long ) rt_ncall (SIM_TIMER_FIRST_FUNCTION + xml -> nFunctions + xml -> nProfileBlocks + modelInfoGetEquation (xml ,i ).id ));
@@ -439,7 +477,7 @@ int printModelInfo(DATA *data, threadData_t *threadData, const char *outputPath,
439477 fprintf (fout , "</functions>\n" );
440478
441479 fprintf (fout , "<equations>\n" );
442- printEquations (fout , data -> modelData -> modelDataXml .nEquations , & data -> modelData -> modelDataXml );
480+ printEquations (fout , data -> modelData -> modelDataXml .nEquations , & data -> modelData -> modelDataXml , data );
443481 fprintf (fout , "</equations>\n" );
444482
445483 fprintf (fout , "<profileblocks>\n" );
0 commit comments