Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
wiki:documentation:devguide:core:plugins [2016/11/21 09:38] carolina.santos |
wiki:documentation:devguide:core:plugins [2016/11/21 09:45] (current) carolina.santos [C++] |
||
|---|---|---|---|
| Line 15: | Line 15: | ||
| * AbstractPlugin | * AbstractPlugin | ||
| * AbstractPluginEngine | * AbstractPluginEngine | ||
| + | * CppPlugin | ||
| + | * CppPluginProxy | ||
| * CppPluginEngine | * CppPluginEngine | ||
| * PluginEngineManager | * PluginEngineManager | ||
| Line 24: | Line 26: | ||
| The **AbstractPluginEngine** class defines the interface of objects capable of performing the creation and loading of plugins from a set of information defined by a **PluginInfo** structure. Each programming language or structuring form of a plugin should provide a specific implementation of this class. This class eases how to prepare the load environment of a plugin. | The **AbstractPluginEngine** class defines the interface of objects capable of performing the creation and loading of plugins from a set of information defined by a **PluginInfo** structure. Each programming language or structuring form of a plugin should provide a specific implementation of this class. This class eases how to prepare the load environment of a plugin. | ||
| - | The **CppPluginEngine** class inherits from the **AbstractPluginEngine** class and is capable of loading dynamic libraries that have an entry point defined by the ''TERRALIB_PLUGIN_CALL_BACK_IMPL'' macro. | + | The **PluginInfo** class is an object that is serialized from a JSON file and has attributes to model the basic information of a plugin, shown below: |
| + | |||
| + | * ''name'': an unique internal value used to identify the plugin in the system. | ||
| + | * ''display_name'': name to be displayed in the graphical interface. | ||
| + | * ''description'': brief description of the plugin. | ||
| + | * ''version'': plugin version. | ||
| + | * ''release'': the launch date of the plugin. | ||
| + | * ''engine'': the plugin engine type (C++, LUA, JAVA). | ||
| + | * ''license_description'': a brief description of the plugin license. | ||
| + | * ''license_URL'': an URL where you can find more information about the license. | ||
| + | * ''site'': an URL pointing to the plugin's website. | ||
| + | * ''provider'': information about the plugin developer. | ||
| + | * ''name'': provider name. | ||
| + | * ''site'': provider website. | ||
| + | * ''email'': provider email. | ||
| + | * ''dependencies'': a list of plugins required for the plugin to be used. | ||
| + | * ''linked_libraries'': a list of linked libraries. | ||
| + | * ''resources'': a list of features used by the plugin. | ||
| + | * ''host_application'': host system information. | ||
| + | * ''name'': system name. | ||
| + | * ''version'': system version. | ||
| + | |||
| + | The **CppPluginEngine** class derives from the **AbstractPluginEngine** class and is capable of loading dynamic libraries that have an entry point defined by the ''TERRALIB_PLUGIN_CALL_BACK_IMPL'' macro. | ||
| **CppPluginEngine** class: | **CppPluginEngine** class: | ||
| Line 75: | Line 99: | ||
| </code> | </code> | ||
| - | The **PluginEngineManager** class is a singleton that will contain the record of all types of plugin loaders available in the system. The developer of new plugin loaders, classes derived from **AbstractPluginEngine**, should register objects in this singleton so TerraLib-based applications can load plugins. | + | The **PluginEngineManager** class is a singleton that will contain the record of all types of plugin loaders available in the system. The developer of new plugin loaders, classes derived from **AbstractPluginEngine**, should register objects in this singleton so TerraLib-based applications can load the plugins. |
| The **PluginManager** class is a singleton that will manage the registration of all the plugins, allowing the loading, downloading, initialization and finalization of the plugins. | The **PluginManager** class is a singleton that will manage the registration of all the plugins, allowing the loading, downloading, initialization and finalization of the plugins. | ||
| Line 263: | Line 287: | ||
| } // end namespace te | } // end namespace te | ||
| </code> | </code> | ||
| - | |||
| - | The **PluginInfo** class is an object that is serialized from a JSON file and has attributes to model the basic information of a plugin, shown below: | ||
| - | |||
| - | * ''name'': an unique internal value used to identify the plugin in the system. | ||
| - | * ''display_name'': name to be displayed in the graphical interface. | ||
| - | * ''description'': brief description of the plugin. | ||
| - | * ''version'': plugin version. | ||
| - | * ''release'': the launch date of the plugin. | ||
| - | * ''engine'': the plugin engine type (C++, LUA, JAVA). | ||
| - | * ''license_description'': a brief description of the plugin license. | ||
| - | * ''license_URL'': an URL where you can find more information about the license. | ||
| - | * ''site'': an URL pointing to the plugin's website. | ||
| - | * ''provider'': information about the plugin developer. | ||
| - | * ''name'': provider name. | ||
| - | * ''site'': provider website. | ||
| - | * ''email'': provider email. | ||
| - | * ''dependencies'': a list of plugins required for the plugin to be used. | ||
| - | * ''linked_libraries'': a list of linked libraries. | ||
| - | * ''resources'': a list of features used by the plugin. | ||
| - | * ''host_application'': host system information. | ||
| - | * ''name'': system name. | ||
| - | * ''version'': system version. | ||
| ===== Examples ===== | ===== Examples ===== | ||