]> gerrit.simantics Code Review - simantics/fmil.git/blobdiff - org.simantics.fmil.core/native/FMILibrary/src/Import/include/FMI1/fmi1_import.h
Add FMILibrary-2.0.3 to org.simantics.fmil.core\native.
[simantics/fmil.git] / org.simantics.fmil.core / native / FMILibrary / src / Import / include / FMI1 / fmi1_import.h
diff --git a/org.simantics.fmil.core/native/FMILibrary/src/Import/include/FMI1/fmi1_import.h b/org.simantics.fmil.core/native/FMILibrary/src/Import/include/FMI1/fmi1_import.h
new file mode 100644 (file)
index 0000000..67b48f2
--- /dev/null
@@ -0,0 +1,241 @@
+/*\r
+    Copyright (C) 2012 Modelon AB\r
+\r
+    This program is free software: you can redistribute it and/or modify\r
+    it under the terms of the BSD style license.
+\r
+    This program is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+    FMILIB_License.txt file for more details.\r
+\r
+    You should have received a copy of the FMILIB_License.txt file\r
+    along with this program. If not, contact Modelon AB <http://www.modelon.com>.\r
+*/\r
+\r
+/** \file fmi1_import.h\r
+*  \brief Public interface to the FMI import C-library.\r
+*/\r
+\r
+#ifndef FMI1_IMPORT_H_\r
+#define FMI1_IMPORT_H_\r
+\r
+#include <stddef.h>\r
+#include <fmilib_config.h>\r
+#include <JM/jm_callbacks.h>\r
+#include <FMI/fmi_import_util.h>\r
+#include <FMI/fmi_import_context.h>\r
+/* #include <FMI1/fmi1_xml_model_description.h> */\r
+\r
+#include <FMI1/fmi1_types.h>
+#include <FMI1/fmi1_functions.h>
+#include <FMI1/fmi1_enums.h>\r
+\r
+#include "fmi1_import_type.h"\r
+#include "fmi1_import_unit.h"\r
+#include "fmi1_import_variable.h"\r
+#include "fmi1_import_vendor_annotations.h"\r
+#include "fmi1_import_capabilities.h"\r
+#include "fmi1_import_variable_list.h"\r
+\r
+#include "fmi1_import_capi.h"\r
+#include "fmi1_import_convenience.h"\r
+#include "fmi1_import_cosim.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+/**\r
+ * \addtogroup  fmi1_import FMI 1.0 import interface\r
+ *  All the structures used in the interfaces are intended to\r
+ *  be treated as opaque objects by the client code.\r
+ @{ \r
+ */\r
+\r
+/**    \addtogroup fmi1_import_init Constuction, destruction and error handling\r
+ *     \addtogroup fmi1_import_gen General information retrieval\r
+ *     \addtogroup fmi1_import_capi Interface to the standard FMI 1.0 "C" API\r
+ *  \brief Convenient functions for calling the FMI functions. This interface wrappes the "C" API. \r
+ */\r
+ /** @} */\r
+ /** @} */\r
+\r
+/** \addtogroup fmi1_import_init Constuction, destruction and error handling\r
+@{\r
+*/\r
+/**\r
+   \brief Create ::fmi1_import_t structure and parse the XML file.\r
+\r
+    @param context A context data strucutre is used to propagate the callbacks for memory handling and logging.\r
+    @param dirPath A directory name (full path) of a directory where the FMU was unzipped.\r
+    @return The new structure if parsing was successfull. 0-pointer is returned on error.\r
+*/\r
+FMILIB_EXPORT fmi1_import_t* fmi1_import_parse_xml( fmi_import_context_t* context, const char* dirPath);\r
+\r
+/**\r
+* \brief Retrieve the last error message.\r
+*\r
+* Error handling:\r
+*\r
+*  Many functions in the library return pointers to struct. An error is indicated by returning NULL/0-pointer.\r
+*  If error is returned than fmi1_import_get_last_error() functions can be used to retrieve the error message.\r
+*  If logging callbacks were specified then the same information is reported via logger.\r
+*  Memory for the error string is allocated and deallocated in the module.\r
+*  Client code should not store the pointer to the string since it can become invalid.\r
+*    @param fmu An FMU object as returned by fmi1_import_parse_xml().\r
+*    @return NULL-terminated string with an error message.\r
+*/\r
+FMILIB_EXPORT const char* fmi1_import_get_last_error(fmi1_import_t* fmu);\r
+\r
+/**\r
+\brief Clear the error message.\r
+* @param fmu An FMU object as returned by fmi1_import_parse_xml().\r
+* @return 0 if further processing is possible. If it returns 1 then the \r
+*      error was not recoverable. The \p fmu object should then be freed and recreated.\r
+*/\r
+FMILIB_EXPORT int fmi1_import_clear_last_error(fmi1_import_t* fmu);\r
+\r
+/**\r
+\brief Release the memory allocated\r
+@param fmu An fmu object as returned by fmi1_import_parse_xml().\r
+*/\r
+FMILIB_EXPORT void fmi1_import_free(fmi1_import_t* fmu);\r
+/** @}\r
+\addtogroup fmi1_import_gen\r
+ * \brief Functions for retrieving general model information. Memory for the strings is allocated and deallocated in the module.\r
+ *   All the functions take an FMU object as returned by fmi1_import_parse_xml() as a parameter. \r
+ *   The information is retrieved from the XML file.\r
+ * @{\r
+*/\r
+/** \r
+\brief Get model name. \r
+@param fmu An fmu object as returned by fmi1_import_parse_xml().\r
+*/\r
+FMILIB_EXPORT const char* fmi1_import_get_model_name(fmi1_import_t* fmu);\r
+\r
+/** \r
+\brief Get model identifier. \r
+@param fmu An fmu object as returned by fmi1_import_parse_xml().\r
+*/\r
+FMILIB_EXPORT const char* fmi1_import_get_model_identifier(fmi1_import_t* fmu);\r
+\r
+/** \r
+\brief Get FMU GUID. \r
+@param fmu An fmu object as returned by fmi1_import_parse_xml().\r
+*/\r
+FMILIB_EXPORT const char* fmi1_import_get_GUID(fmi1_import_t* fmu);\r
+\r
+/** \r
+\brief Get FMU description.\r
+@param fmu An fmu object as returned by fmi1_import_parse_xml().\r
+*/\r
+FMILIB_EXPORT const char* fmi1_import_get_description(fmi1_import_t* fmu);\r
+\r
+/** \r
+\brief Get FMU author. \r
+@param fmu An fmu object as returned by fmi1_import_parse_xml().\r
+*/\r
+FMILIB_EXPORT const char* fmi1_import_get_author(fmi1_import_t* fmu);\r
+\r
+/** \brief Get FMU version.\r
+@param fmu An fmu object as returned by fmi1_import_parse_xml().\r
+*/\r
+FMILIB_EXPORT const char* fmi1_import_get_model_version(fmi1_import_t* fmu);\r
+\r
+/** \brief Get FMI standard version (always 1.0). \r
+@param fmu An fmu object as returned by fmi1_import_parse_xml().\r
+*/\r
+FMILIB_EXPORT const char* fmi1_import_get_model_standard_version(fmi1_import_t* fmu);\r
+\r
+/** \brief Get FMU generation tool. \r
+@param fmu An fmu object as returned by fmi1_import_parse_xml().\r
+*/\r
+FMILIB_EXPORT const char* fmi1_import_get_generation_tool(fmi1_import_t* fmu);\r
+\r
+/** \brief Get FMU generation date and time. \r
+@param fmu An fmu object as returned by fmi1_import_parse_xml().\r
+*/\r
+FMILIB_EXPORT const char* fmi1_import_get_generation_date_and_time(fmi1_import_t* fmu);\r
+\r
+/** \brief Get variable naming convention used. \r
+@param fmu An fmu object as returned by fmi1_import_parse_xml().\r
+*/\r
+FMILIB_EXPORT fmi1_variable_naming_convension_enu_t fmi1_import_get_naming_convention(fmi1_import_t* fmu);\r
+\r
+/** \brief Get the number of contnuous states. */\r
+FMILIB_EXPORT unsigned int fmi1_import_get_number_of_continuous_states(fmi1_import_t* fmu);\r
+\r
+/** \brief Get the number of event indicators. */\r
+FMILIB_EXPORT unsigned int fmi1_import_get_number_of_event_indicators(fmi1_import_t* fmu);\r
+\r
+/** \brief Get the start time for default experiment  as specified in the XML file. */\r
+FMILIB_EXPORT double fmi1_import_get_default_experiment_start(fmi1_import_t* fmu);\r
+\r
+/** \brief Get the stop time for default experiment  as specified in the XML file. */\r
+FMILIB_EXPORT double fmi1_import_get_default_experiment_stop(fmi1_import_t* fmu);\r
+\r
+/** \brief Get the tolerance default experiment as specified in the XML file. */\r
+FMILIB_EXPORT double fmi1_import_get_default_experiment_tolerance(fmi1_import_t* fmu);\r
+\r
+/** \brief Get the type of the FMU (model exchange or co-simulation) */\r
+FMILIB_EXPORT fmi1_fmu_kind_enu_t fmi1_import_get_fmu_kind(fmi1_import_t* fmu);\r
+\r
+/** \brief Get the structure with capability flags.\r
+       @return A pointer to the fmi1_import_capabilities_t allocated within the library. \r
+                       Note that for model exchange FMUs the values of all the flags are always default.\r
+*/\r
+FMILIB_EXPORT fmi1_import_capabilities_t* fmi1_import_get_capabilities(fmi1_import_t* fmu);\r
+\r
+/** \brief Get the list of all the type definitions in the model*/
+FMILIB_EXPORT fmi1_import_type_definitions_t* fmi1_import_get_type_definitions(fmi1_import_t* );
+\r
+/** \brief Get a list of all the unit definitions in the model. */
+FMILIB_EXPORT fmi1_import_unit_definitions_t* fmi1_import_get_unit_definitions(fmi1_import_t* fmu);
+\r
+/** 
+       \brief Get the direct dependency information
+
+       @return A variable list is returned for variables with causality Output. Null pointer for others. */
+FMILIB_EXPORT fmi1_import_variable_list_t* fmi1_import_get_direct_dependency(fmi1_import_t* fmu, fmi1_import_variable_t*);
+\r
+/** \brief Get the variable with the same value reference that is not an alias*/
+FMILIB_EXPORT fmi1_import_variable_t* fmi1_import_get_variable_alias_base(fmi1_import_t* fmu,fmi1_import_variable_t*);
+
+/**
+    Get the list of all the variables aliased to the given one (including the base one).
+
+    Note that the list is ordered: base variable, aliases, negated aliases.
+*/
+FMILIB_EXPORT fmi1_import_variable_list_t* fmi1_import_get_variable_aliases(fmi1_import_t* fmu,fmi1_import_variable_t*);
+\r
+/** \brief Get the list of all the variables in the model.\r
+* @param fmu An FMU object as returned by fmi1_import_parse_xml().\r
+* @return a variable list with all the variables in the model.\r
+*\r
+* Note that variable lists are allocated dynamically and must be freed when not needed any longer.\r
+*/\r
+FMILIB_EXPORT fmi1_import_variable_list_t* fmi1_import_get_variable_list(fmi1_import_t* fmu);\r
+\r
+/** \brief Get the list of all the variables in the model in alphabetical order.\r
+* @param fmu An FMU object as returned by fmi1_import_parse_xml().\r
+* @return a variable list with all the variables in the model sorted in alphabetical order.\r
+*\r
+* Note that variable lists are allocated dynamically and must be freed when not needed any longer.\r
+*/\r
+FMILIB_EXPORT fmi1_import_variable_list_t* fmi1_import_get_variable_list_alphabetical_order(fmi1_import_t* fmu);\r
+\r
+/** \brief Create a variable list with a single variable.\r
+  \r
+\param fmu An FMU object that this variable list will reference.\r
+\param v A variable.\r
+*/\r
+FMILIB_EXPORT fmi1_import_variable_list_t* fmi1_import_create_var_list(fmi1_import_t* fmu,fmi1_import_variable_t* v);\r
+\r
+/**@} */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif\r