Skip to content
This repository was archived by the owner on May 18, 2019. It is now read-only.

Commit ed39588

Browse files
committed
more fixes for ticket:5030
- fix variable cross reference for equations in modelinfo.c - fix equation display in html in default_profiling.xsl - fix a bad string comparison (str == "") in systemimpl.c Belonging to [master]: - #2841
1 parent 1565982 commit ed39588

File tree

3 files changed

+44
-6
lines changed

3 files changed

+44
-6
lines changed

Compiler/runtime/systemimpl.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -904,7 +904,7 @@ extern int SystemImpl__copyFile(const char *str_1, const char *str_2)
904904
rv = SystemImpl__createDirectory(str_2);
905905
}
906906

907-
if (str_1 == "")
907+
if (strcmp(str_1, "") == 0)
908908
rv = 0;
909909

910910
char targetFile[100];

Compiler/scripts/default_profiling.xsl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@
133133
<table>
134134
<tr><th class="name">Name</th><th>Variables</th></tr>
135135
<xsl:for-each select="equations/equation">
136-
<tr><td class="name"><a name="{@id}"><xsl:value-of select="@name"/></a></td>
136+
<tr><td class="name"><a name="{@id}"><xsl:value-of select="@id"/></a></td>
137137
<td><xsl:choose>
138138
<xsl:when test="count(refs/ref)=0">&nbsp;</xsl:when>
139139
<xsl:otherwise><xsl:for-each select="refs/ref"><a href="#{@refid}"><xsl:value-of select="id(@refid)/@name"/></a><xsl:if test="position() != last()">, </xsl:if>

SimulationRuntime/c/simulation/modelinfo.c

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,6 @@ static void printVar(FILE *fout, int level, VAR_INFO* info) {
235235
fprintf(fout, "</variable>\n");
236236
}
237237

238-
239238
static 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

Comments
 (0)