TerraLib and TerraView Wiki Page

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
wiki:designimplementation:plugin [2014/09/10 13:18]
gribeiro
wiki:designimplementation:plugin [2014/09/10 13:33] (current)
gribeiro [TerraLib → Plugin]
Line 1: Line 1:
 ====== TerraLib → Plugin ====== ====== TerraLib → Plugin ======
 +
 +
 +===== Introduction =====
 +
 +A plugin is a computer program that interacts with a host application such as TerraView or TerraMA2 adding new capabilities/​functionalities to it. These functionalities are added, in general, at runtime. There are several terms used instead of plugin: plug-in, addin, add-in, addon, add-on, snap-in, extension or supplement, for more information on plugin definitions see [[http://​en.wikipedia.org/​wiki/​Plug-in_%28computing%29|Wikipedia]]. ​
 +
 +This module provides a basic framework for those who want to create plugins in the TerraLib Platform. Instead of a framework target to a specific application such as TerraView or TerraMA2, this plugin framework handles the extensions (plugins) and is capable of loading then dynamically. It provides the basic foundation to simplify the burden of dealing with plugins: check-up of dependencies,​ configuration reading, plugin management and startup/​shutdown actions. Besides that, this framework allows plugins written using other programming languages, meanly the ones supported in the [[language binding modules]]. For instance you can create plugins in Lua, Java or R.
 +
 +As pointed out by Vandevoorde (2006), for C and C++ programs plugins are typically implemented as shared libraries that are dynamically loaded (and sometimes unloaded) by the main program.
 +
 +The next section will explain in details the design of this module.
 +===== Design Rationale =====
 +
 +==== A simple example in C++ ====
 +
 +===== Implementation Details =====
  
 A classe ''​AbstractPlugin''​ define a interface básica das implementações de suporte a plugins. Todo plugin: A classe ''​AbstractPlugin''​ define a interface básica das implementações de suporte a plugins. Todo plugin:
Line 127: Line 143:
 Plugins escritos na linguagem C++ possuem um suporte padrão para carga de bibliotecas dinâmicas e outros detalhes deste tipo de linguagem. A classe ''​CppPlugin''​ é a classe base para plugins escritos em C++ com este suporte. Plugins escritos na linguagem C++ possuem um suporte padrão para carga de bibliotecas dinâmicas e outros detalhes deste tipo de linguagem. A classe ''​CppPlugin''​ é a classe base para plugins escritos em C++ com este suporte.
  
 +===== Final Remarks and Future Works =====
 +
 +===== References =====