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 ===== |