The plugin module provides support for the startup and shutdown of modules loaded at run time. More...
Classes | |
class | te::plugin::AbstractFinder |
The AbstractFinder class allows applications to extend how PluginManager can search for plugins. More... | |
class | te::plugin::AbstractPlugin |
An abstract class for TerraLib Plugins. More... | |
class | te::plugin::CppPlugin |
An abstract interface for Plugins written in C++. More... | |
class | te::plugin::CppPluginEngine |
An abstract class for plugin engines. More... | |
class | te::plugin::CppPluginProxy |
A proxy class for C++ plugins. More... | |
class | te::plugin::Plugin |
A base class for plugin types. More... | |
struct | te::plugin::PluginInfo |
The basic information about a plugin. More... | |
class | te::plugin::PluginManager |
A singleton for managing plugins. More... | |
struct | te::plugin::Provider |
This struct can be used to describe a given plugin provider. More... | |
The plugin module provides support for the startup and shutdown of modules loaded at run time.
A plugin (also called plug-in, addin, add-in, addon, add-on, snap-in, extension or suplement) is a computer program that interacts with a host application adding new capabilities/functionalities to it. Plugins can also be used to plug new functionalities in an extensible library/platform.
The TerraLib Plugin module comes with a basic framework for those who want to create plugins in the TerraLib Platform. Instead of having a framework target to a specific application like TerraView or SISMADEN, TerraLib Plugin framework just handle the extensions (plugins) and is capable of loading then dynamically.
It provides the basic foundation to simplify the burden of dealing with plugins: dependencies, configuration and startup/shutdown actions. Besides that in TerraLib 5 a plugin can be built using any language that has a support in the language binding modules. For instance you can create plugins in Haskell, Lua, PHP, Java, Python, C and C++.
Note that in TerraLib any plugin may have access to all other system parts. You can put no restrictions on it, so you can easily use all TerraLib API without worry about doing trickies. Also you have to define the API of your application. Each application plugin will be dependent on its application API. If you have parts of your plugin that can be shared between applications, you should isolate that part and make a plugin with a dependency for it.
The main classes/concepts in this module are listed here. The namespace associated to the Plugin module is te::plugin. To know more about it, see the te::plugin namespace documentation.