Plugin

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

Detailed Description

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.