/* 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 . */ #ifndef FMI2_XML_CALLBACKS_H #define FMI2_XML_CALLBACKS_H #include #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