--- /dev/null
+#ifndef fmi2_xml_model_decription_impl_h_\r
+#define fmi2_xml_model_decription_impl_h_\r
+\r
+#include <stdarg.h>\r
+\r
+#include <JM/jm_callbacks.h>\r
+#include <JM/jm_vector.h>\r
+#include <JM/jm_named_ptr.h>\r
+#include <JM/jm_string_set.h>\r
+#include <FMI2/fmi2_xml_model_description.h>\r
+\r
+#include "fmi2_xml_unit_impl.h"\r
+#include "fmi2_xml_type_impl.h"\r
+#include "fmi2_xml_variable_impl.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+typedef enum fmi2_xml_model_description_status_enu_t {\r
+ fmi2_xml_model_description_enu_empty,\r
+ fmi2_xml_model_description_enu_ok,\r
+ fmi2_xml_model_description_enu_error\r
+} fmi2_xml_model_description_status_enu_t;\r
+\r
+/* ModelDescription is the entry point for the package*/\r
+struct fmi2_xml_model_description_t {\r
+\r
+ jm_callbacks* callbacks;\r
+\r
+ fmi2_xml_model_description_status_enu_t status;\r
+\r
+ jm_vector(char) fmi2_xml_standard_version;\r
+\r
+ jm_vector(char) modelName;\r
+\r
+ jm_vector(char) GUID;\r
+\r
+ jm_vector(char) description;\r
+\r
+ jm_vector(char) author;\r
+ jm_vector(char) copyright;\r
+ jm_vector(char) license;\r
+\r
+ jm_vector(char) version;\r
+ jm_vector(char) generationTool;\r
+ jm_vector(char) generationDateAndTime;\r
+\r
+ fmi2_variable_naming_convension_enu_t namingConvension;\r
+\r
+ size_t numberOfContinuousStates;\r
+\r
+ size_t numberOfEventIndicators;\r
+\r
+ double defaultExperimentStartTime;\r
+\r
+ double defaultExperimentStopTime;\r
+\r
+#define FMI2_DEFAULT_EXPERIMENT_TOLERANCE 1e-4\r
+\r
+ double defaultExperimentTolerance;\r
+\r
+#define FMI2_DEFAULT_EXPERIMENT_STEPSIZE 1e-2\r
+\r
+ double defaultExperimentStepSize;\r
+\r
+\r
+ jm_vector(char) modelIdentifierME;\r
+\r
+ jm_vector(char) modelIdentifierCS;\r
+\r
+ jm_vector(jm_string) sourceFilesME;\r
+ jm_vector(jm_string) sourceFilesCS;\r
+\r
+ jm_vector(jm_string) logCategories;\r
+ jm_vector(jm_string) logCategoryDescriptions;\r
+\r
+ jm_vector(jm_string) vendorList;\r
+\r
+ jm_vector(jm_named_ptr) unitDefinitions;\r
+ jm_vector(jm_named_ptr) displayUnitDefinitions;\r
+\r
+ fmi2_xml_type_definitions_t typeDefinitions;\r
+\r
+ jm_string_set descriptions;\r
+\r
+ jm_vector(jm_named_ptr) variablesByName;\r
+\r
+ jm_vector(jm_voidp)* variablesOrigOrder;\r
+\r
+ jm_vector(jm_voidp)* variablesByVR;\r
+\r
+ fmi2_fmu_kind_enu_t fmuKind;\r
+\r
+ unsigned int capabilities[fmi2_capabilities_Num];\r
+\r
+ fmi2_xml_model_structure_t* modelStructure;\r
+};\r
+\r
+void fmi2_xml_report_error(fmi2_xml_model_description_t* md, const char* module, const char* fmt, ...);\r
+\r
+void fmi2_xml_report_error_v(fmi2_xml_model_description_t* md, const char* module, const char* fmt, va_list ap);\r
+\r
+void fmi2_xml_report_warning(fmi2_xml_model_description_t* md, const char* module, const char* fmt, ...);\r
+\r
+void fmi2_xml_report_warning_v(fmi2_xml_model_description_t* md, const char* module, const char* fmt, va_list ap);\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif\r
+\r