WSL/SLF GitLab Repository

Commit 6ef083ec authored by Mathias Bavay's avatar Mathias Bavay
Browse files

A class diagram has been added to the documentation as well as more detailed...

A class diagram has been added to the documentation as well as more detailed instructions in the "how to write a plugin" section (with links to the template plugin and CMakeLists compilation files)
parent d70a301f
...@@ -48,12 +48,12 @@ namespace mio { ...@@ -48,12 +48,12 @@ namespace mio {
* It is the responsibility of the plugin to properly convert the units toward the SI as used in MeteoIO (see the MeteoData class for a list of parameters and their units) * It is the responsibility of the plugin to properly convert the units toward the SI as used in MeteoIO (see the MeteoData class for a list of parameters and their units)
* *
* Various classes from MeteoIO can prove convenient for use by plugins: for example the Coords class should be used for geographic coordinates conversions, while the ConfigReader class should be used for getting configuration information from the user's configuration file. Please do NOT implement your own version of this kind of feature in your plugin but exclusively rely on the matching classes of MeteoIO, extending them if necessary. * Various classes from MeteoIO can prove convenient for use by plugins: for example the Coords class should be used for geographic coordinates conversions, while the ConfigReader class should be used for getting configuration information from the user's configuration file. Please do NOT implement your own version of this kind of feature in your plugin but exclusively rely on the matching classes of MeteoIO, extending them if necessary.
* Some example implementation can be found in ARCIO or A3DIO. * A template for writing a plugin class is available in the plugin directory under the name template.cc and template.h. Simply copy these two files under a new name and fill the methods that you want to implement. Some easy example implementation can be found in ARCIO or A3DIO.
* *
* @section plugins_registration Plugins registration * @section plugins_registration Plugins registration
* Once a plugin has been written, it must be "registered" so that it is known by the rest of the library. This is done in IOHandler::registerPlugins by adding a plugin key (that will be used by the user in the configuration file when he wants to use the said plugin), the name of the dynamic library that the plugin is bunddled in, the name of its implementation class, a pointer to the implementation class (use NULL and it will be properly initialized), and a pointer to the dynamicl library (again, set as NULL and the proper initialization will take place). For more information, see the IOPlugin class. * Once a plugin has been written, it must be "registered" so that it is known by the rest of the library. This is done in IOHandler::registerPlugins by adding a plugin key (that will be used by the user in the configuration file when he wants to use the said plugin), the name of the dynamic library that the plugin is bunddled in, the name of its implementation class, a pointer to the implementation class (use NULL and it will be properly initialized), and a pointer to the dynamicl library (again, set as NULL and the proper initialization will take place). For more information, see the IOPlugin class.
* *
* Finally, the build system has to be updated so that it offers the plugin to be build: a local file (in the plugin subdirectory) has to be edited so that the plugin is really built, then the toplevel file has to be modified so the user can choose to build the plugin if he wishes. Please keep in mind that all plugins should be optional (ie: they should not prevent the build of MeteoIO without them). * Finally, the build system has to be updated so that it offers the plugin to be build: a local file (<a href="../../meteoio/plugins/CMakeLists.txt">meteoio/plugins/CMakeLists.txt</a>) has to be edited so that the plugin is really built, then the toplevel file has to be modified so the user can choose to build the plugin if he wishes (<a href="../../CMakeLists.txt">CMakeLists.txt</a>). Please keep in mind that all plugins should be optional (ie: they should not prevent the build of MeteoIO without them) and please call your plugin compilation flag similarly as the other plugins (ie: PLUGIN_MYNAME).
* *
* @section plugins_documentation Plugins documentation * @section plugins_documentation Plugins documentation
* It is the responsibility of the plugin developer to properly document his plugin. The documentation should be placed as doxygen comments in the implementation file, following the example of A3DIO.cc: a subpage nammed after the plugin should be created (and referenced in MainPage.h) with at least the following sections: * It is the responsibility of the plugin developer to properly document his plugin. The documentation should be placed as doxygen comments in the implementation file, following the example of A3DIO.cc: a subpage nammed after the plugin should be created (and referenced in MainPage.h) with at least the following sections:
......
...@@ -39,6 +39,7 @@ namespace mio { ...@@ -39,6 +39,7 @@ namespace mio {
* -# \subpage plugins "Available plugins" and usage * -# \subpage plugins "Available plugins" and usage
* -# \subpage coords "Available coordinate systems" and usage * -# \subpage coords "Available coordinate systems" and usage
* -# \subpage filters "Available filters" and usage * -# \subpage filters "Available filters" and usage
* -# \subpage resampling "Available temporal interpolations" and usage
* -# \subpage interpol2d "Available spatial interpolations" and usage * -# \subpage interpol2d "Available spatial interpolations" and usage
* -# Programing using MeteoIO * -# Programing using MeteoIO
* -# \subpage quick_overview "Quick overview" of the functionnality provided by MeteoIO * -# \subpage quick_overview "Quick overview" of the functionnality provided by MeteoIO
...@@ -125,6 +126,9 @@ namespace mio { ...@@ -125,6 +126,9 @@ namespace mio {
* @page quick_overview Quick overview * @page quick_overview Quick overview
* This library contains various classes that have been designed to deal with various sets of problems. This page shows the different sets of problems and what kind of functionnality the library offers to tackle them. * This library contains various classes that have been designed to deal with various sets of problems. This page shows the different sets of problems and what kind of functionnality the library offers to tackle them.
* *
* @section class_structure Class structure
* \image html structure.png "simplified class structure"
* \image latex structure.eps "simplified class structure" width=0.9\textwidth
* *
* @section iohandler_sec Data reading * @section iohandler_sec Data reading
* The class IOHandler provides the meteorological data from the sources selected by the user in its configuration file. This class inherits from IOInterface and is implemented through plugins that are responsible for implementing a given data access (see \ref dev_plugins "Plugins developer's guide" for more information). It therefore proposes a uniform, standardized access to the data that can be meteorological data, gridded data (including Digital Elevation Model (DEM) data or variations like for landuse codes) and tables of coordinates (for special processing at users selected locations). A buffered version of this class exists: BufferedIOHandler that should be prefered. The description of the plugins and their usage can be found in \ref plugins "Available plugins". * The class IOHandler provides the meteorological data from the sources selected by the user in its configuration file. This class inherits from IOInterface and is implemented through plugins that are responsible for implementing a given data access (see \ref dev_plugins "Plugins developer's guide" for more information). It therefore proposes a uniform, standardized access to the data that can be meteorological data, gridded data (including Digital Elevation Model (DEM) data or variations like for landuse codes) and tables of coordinates (for special processing at users selected locations). A buffered version of this class exists: BufferedIOHandler that should be prefered. The description of the plugins and their usage can be found in \ref plugins "Available plugins".
......
...@@ -590,7 +590,7 @@ EXAMPLE_RECURSIVE = NO ...@@ -590,7 +590,7 @@ EXAMPLE_RECURSIVE = NO
# directories that contain image that are included in the documentation (see # directories that contain image that are included in the documentation (see
# the \image command). # the \image command).
IMAGE_PATH = IMAGE_PATH = ./doc/images
# The INPUT_FILTER tag can be used to specify a program that doxygen should # The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program # invoke to filter for each input file. Doxygen will invoke the filter program
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment