fmiStatus fmiGetString(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiString value[]) { int i; ModelInstance* comp = (ModelInstance *)c; if (invalidState(comp, "fmiGetString", not_modelError)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiGetString", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiGetString", "value[]", value)) return fmiError; for (i=0; i<nvr; i++) { if (vrOutOfRange(comp, "fmiGetString", vr[i], NUMBER_OF_STRINGS)) return fmiError; value[i] = comp->s[vr[i]]; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiGetString: #s%u# = '%s'", vr[i], value[i]); } return fmiOK; }
fmiStatus fmiGetBoolean(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiBoolean value[]) { int i; ModelInstance* comp = (ModelInstance *)c; if (invalidState(comp, "fmiGetBoolean", not_modelError)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiGetBoolean", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiGetBoolean", "value[]", value)) return fmiError; for (i=0; i<nvr; i++) { if (vrOutOfRange(comp, "fmiGetBoolean", vr[i], NUMBER_OF_BOOLEANS)) return fmiError; value[i] = comp->b[vr[i]]; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiGetBoolean: #b%u# = %s", vr[i], value[i]? "true" : "false"); } return fmiOK; }
fmiStatus fmiGetInteger(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiInteger value[]) { int i; fmi_Component* comp = (fmi_Component *)c; if (invalidState(comp, "fmiGetInteger", not_modelError)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiGetInteger", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiGetInteger", "value[]", value)) return fmiError; for (i=0; i<nvr; i++) { if (vrOutOfRange(comp, "fmiGetInteger", vr[i], NUMBER_OF_INTEGERS)) return fmiError; value[i] = comp->i[vr[i]]; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiGetInteger: #i%u# = %d", vr[i], value[i]); } return fmiOK; }
fmiStatus fmiSetInteger(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiInteger value[]){ int i; ModelInstance* comp = (ModelInstance *)c; if (invalidState(comp, "fmiSetInteger", modelInstantiated|modelInitialized)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetInteger", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetInteger", "value[]", value)) return fmiError; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetInteger: nvr = %d", nvr); for (i=0; i<nvr; i++) { if (vrOutOfRange(comp, "fmiSetInteger", vr[i], NUMBER_OF_INTEGERS)) return fmiError; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetInteger: #i%d# = %d", vr[i], value[i]); comp->i[vr[i]] = value[i]; } return fmiOK; }
fmiStatus fmiGetReal(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiReal value[]) { ModelInstance* comp = (ModelInstance*)c; if (invalidState(comp, "fmiGetReal", not_modelError)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiGetReal", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiGetReal", "value[]", value)) return fmiError; #if NUMBER_OF_REALS>0 int i; for (i=0; i<nvr; i++) { if (vrOutOfRange(comp, "fmiGetReal", vr[i], NUMBER_OF_REALS)) return fmiError; value[i] = getReal(comp, vr[i]); // to be implemented by the includer of this file // if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", // "fmiGetReal: #r%u# = %.16g", vr[i], value[i]); } #endif return fmiOK; }
fmiStatus fmiSetString(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiString value[]){ int i; ModelInstance* comp = (ModelInstance*)c; if (invalidState(comp, "fmiSetString", modelInstantiated|modelInitialized)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetString", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetString", "value[]", value)) return fmiError; // if (comp->loggingOn) // comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetString: nvr = %d", nvr); for (i=0; i<nvr; i++) { if (vrOutOfRange(comp, "fmiSetString", vr[i], NUMBER_OF_STRINGS)) return fmiError; // if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", // "fmiSetString: #s%d# = '%s'", vr[i], value[i]); comp->s[vr[i]] = value[i]; } return fmiOK; }
fmiStatus fmiSetBoolean(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiBoolean value[]){ int i; fmi_Component* comp = (fmi_Component *)c; if (invalidState(comp, "fmiSetBoolean", modelInstantiated|modelInitialized)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetBoolean", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetBoolean", "value[]", value)) return fmiError; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetBoolean: nvr = %d", nvr); for (i=0; i<nvr; i++) { if (vrOutOfRange(comp, "fmiSetBoolean", vr[i], NUMBER_OF_BOOLEANS)) return fmiError; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetBoolean: #b%d# = %s", vr[i], value[i] ? "true" : "false"); comp->b[vr[i]] = value[i]; } return fmiOK; }
fmiStatus fmiSetReal(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiReal value[]){ int i; ModelInstance* comp = (ModelInstance *)c; if (invalidState(comp, "fmiSetReal", modelInstantiated|modelInitialized)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetReal", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetReal", "value[]", value)) return fmiError; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetReal: nvr = %d", nvr); // no check whether setting the value is allowed in the current state for (i=0; i<nvr; i++) { if (vrOutOfRange(comp, "fmiSetReal", vr[i], NUMBER_OF_REALS)) return fmiError; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetReal: #r%d# = %.16g", vr[i], value[i]); comp->r[vr[i]] = value[i]; } return fmiOK; }
fmiStatus fmiSetExternalFunction(fmiComponent c, fmiValueReference vr[], size_t nvr, const void* value[]) { unsigned int i=0; ModelInstance* comp = (ModelInstance *)c; if (invalidState(comp, "fmiTerminate", modelInstantiated)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetExternalFunction", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetExternalFunction", "value[]", value)) return fmiError; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetExternalFunction"); // no check wether setting the value is allowed in the current state for (i=0; i<nvr; i++) { if (vrOutOfRange(comp, "fmiSetExternalFunction", vr[i], NUMBER_OF_EXTERNALFUNCTIONS)) return fmiError; if (setExternalFunction(comp, vr[i],value[i]) != fmiOK) // to be implemented by the includer of this file return fmiError; } return fmiOK; }
fmiStatus fmiSetString(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiString value[]) { unsigned int i=0; ModelInstance* comp = (ModelInstance *)c; if (invalidState(comp, "fmiSetString", modelInstantiated|modelInitialized)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetString", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetString", "value[]", value)) return fmiError; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetString: nvr = %d", nvr); for (i=0; i<nvr; i++) { if (vrOutOfRange(comp, "fmiSetString", vr[i], NUMBER_OF_STRINGS)) return fmiError; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetString: #s%d# = '%s'", vr[i], value[i]); if (setString(comp, vr[i],value[i]) != fmiOK) // to be implemented by the includer of this file return fmiError; } return fmiOK; }
fmiStatus fmiGetString(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiString value[]) { unsigned int i=0; ModelInstance* comp = (ModelInstance *)c; if (invalidState(comp, "fmiGetString", not_modelError)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiGetString", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiGetString", "value[]", value)) return fmiError; #if NUMBER_OF_STRINGS>0 for (i=0; i<nvr; i++) { if (vrOutOfRange(comp, "fmiGetString", vr[i], NUMBER_OF_STRINGS)) return fmiError; value[i] = getString(comp, vr[i]); // to be implemented by the includer of this file if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiGetString: #s%u# = '%s'", vr[i], value[i]); } return fmiOK; #else return fmiOK; #endif }
fmiStatus fmiGetReal(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiReal value[]) { unsigned int i=0; ModelInstance* comp = (ModelInstance *)c; if (invalidState(comp, "fmiGetReal", not_modelError)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiGetReal", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiGetReal", "value[]", value)) return fmiError; #if NUMBER_OF_REALS>0 for (i=0; i<nvr; i++) { if (vrOutOfRange(comp, "fmiGetReal", vr[i], NUMBER_OF_REALS+NUMBER_OF_STATES)) return fmiError; value[i] = getReal(comp, vr[i]); if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiGetReal: #r%u# = %.16g", vr[i], value[i]); } return fmiOK; #else return fmiOK; #endif }
fmiStatus fmiSetString(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiString value[]){ int i; ModelInstance* comp = (ModelInstance *)c; if (invalidState(comp, "fmiSetString", modelInstantiated|modelInitialized)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetString", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetString", "value[]", value)) return fmiError; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetString: nvr = %d", nvr); for (i=0; i<nvr; i++) { char *string = (char *)comp->s[vr[i]]; if (vrOutOfRange(comp, "fmiSetString", vr[i], NUMBER_OF_STRINGS)) return fmiError; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetString: #s%d# = '%s'", vr[i], value[i]); if (value[i] == NULL) { if (string) comp->functions.freeMemory(string); comp->s[vr[i]] = NULL; comp->functions.logger(comp, comp->instanceName, fmiWarning, "warning", "fmiSetString: string argument value[%d] = NULL.", i); } else { if (string==NULL || strlen(string) < strlen(value[i])) { if (string) comp->functions.freeMemory(string); comp->s[vr[i]] = comp->functions.allocateMemory(1+strlen(value[i]), sizeof(char)); if (!comp->s[vr[i]]) { comp->state = modelError; comp->functions.logger(NULL, comp->instanceName, fmiError, "error", "fmiSetString: Out of memory."); return fmiError; } } strcpy((char *)comp->s[vr[i]], (char *)value[i]); } } return fmiOK; }
fmiStatus fmiSetReal(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiReal value[]) { unsigned int i=0; ModelInstance* comp = (ModelInstance *)c; if (invalidState(comp, "fmiSetReal", modelInstantiated|modelInitialized)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetReal", "vr[]", vr)) return fmiError; if (nvr>0 && nullPointer(comp, "fmiSetReal", "value[]", value)) return fmiError; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetReal: nvr = %d", nvr); // no check wether setting the value is allowed in the current state for (i=0; i<nvr; i++) { if (vrOutOfRange(comp, "fmiSetReal", vr[i], NUMBER_OF_REALS+NUMBER_OF_STATES)) return fmiError; if (comp->loggingOn) comp->functions.logger(c, comp->instanceName, fmiOK, "log", "fmiSetReal: #r%d# = %.16g", vr[i], value[i]); if (setReal(comp, vr[i],value[i]) != fmiOK) // to be implemented by the includer of this file return fmiError; } return fmiOK; }