]> gerrit.simantics Code Review - simantics/fmil.git/blobdiff - org.simantics.fmil.core/native/FMILibrary/src/Util/include/FMI2/fmi2_xml_callbacks.h
Add FMILibrary-2.0.3 to org.simantics.fmil.core\native.
[simantics/fmil.git] / org.simantics.fmil.core / native / FMILibrary / src / Util / include / FMI2 / fmi2_xml_callbacks.h
diff --git a/org.simantics.fmil.core/native/FMILibrary/src/Util/include/FMI2/fmi2_xml_callbacks.h b/org.simantics.fmil.core/native/FMILibrary/src/Util/include/FMI2/fmi2_xml_callbacks.h
new file mode 100644 (file)
index 0000000..6ec5f0a
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+    Copyright (C) 2012 Modelon AB
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the BSD style license.
+
+     This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    FMILIB_License.txt file for more details.
+
+    You should have received a copy of the FMILIB_License.txt file
+    along with this program. If not, contact Modelon AB <http://www.modelon.com>.
+*/
+
+#ifndef FMI2_XML_CALLBACKS_H
+#define FMI2_XML_CALLBACKS_H
+
+#include <fmilib_config.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/** \file fmi2_xml_callbacks.h Definition of ::fmi2_xml_callbacks_t and supporting functions
+       *
+       * \addtogroup fmi2_utils
+       * @{
+               \addtogroup fmi2_xml_callbacks
+       * @}
+*/
+/** \addtogroup fmi2_xml_callbacks Definition of XML callbacks struct
+* @{  */
+typedef struct fmi2_xml_callbacks_t fmi2_xml_callbacks_t;
+
+/** \name XML handling callbacks
+* @{ 
+*/
+/** \brief Handle start of an XML element within tool annotation in a SAX parser.
+*
+*      @param context as specified when setting up the callbacks,
+*   @param parentName - tool name as given by name attibute to the Tool elelent,
+*   @param parent - NULL for model level annotations; fmi2_import_variable_t * variable pointer for variable annotations. 
+*   @param elm - name of the element, 
+*   @param attr - attributes (names and values).
+*  The function should return 0 on success or error code on exit (in which case parsing will be aborted).
+*/
+typedef int (*fmi2_xml_element_start_handle_ft)(       void *context, const char *toolName, void *parent, const char *elm, const char **attr);
+
+/** \brief Handle data of an XML element within tool annotation in a SAX parser.
+*
+*  @param context as specified when setting up the callbacks
+*  @param s - data string
+*  @param len - length of the data.
+*  The function should return 0 on success or error code on exit (in which case parsing will be aborted).
+*/
+typedef int (*fmi2_xml_element_data_handle_ft)(void* context, const char *s, int len);
+
+/** \brief Handle end of an XML element within tool annotation in a SAX parser.
+*
+*  @param context as specified when setting up the callbacks
+*  @param elm - name of the element.
+*  The function should return 0 on success or error code on exit (in which case parsing will be aborted).
+*/
+typedef int (*fmi2_xml_element_end_handle_ft)(void *context, const char *elm);
+
+/** \brief XML callbacks are used to process parts of XML that are not handled by the library */
+struct fmi2_xml_callbacks_t {
+       fmi2_xml_element_start_handle_ft startHandle; /** \brief Handle start of an XML element within tool annotation in a SAX parser. */
+       fmi2_xml_element_data_handle_ft  dataHandle;  /** \brief Handle data of an XML element within tool annotation in a SAX parser.  */
+       fmi2_xml_element_end_handle_ft   endHandle;   /** \brief Handle end of an XML element within tool annotation in a SAX parser. */
+       void* context;  /** \breif Context ponter is forwarded to the handle functions. */
+};
+/* @}
+*/
+
+#ifdef __cplusplus
+}
+#endif
+/* JM_CONTEXT_H */
+#endif