--- /dev/null
+/*\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