GSLAM  3.0.0
The Plugin Structure of GSLAM

The GSLAM core is designed to be very light weighted and only provides the core functionals.

To extend the functional, GSLAM provides a very general way to package or access other modules by the plugin system. GSLAM packages all plugins using the interface of Svar , including dataset plugins, tool plugins or application plugins. Generally speaking, users are able to access any Svar modules in GSLAM system.

API Documentation of GSLAM Plugin

Since all APIs are provided as Svar module, we can check the documentation with command 'gslam doc':

Here is the contents of tests application plugin:

build> ./gslam doc -plugin tests
{
"__builtin__" : {
"Json" : <class at 0x7f21ac00c080>,
"version" : 256
},
"gslam" : {
"apps" : {
"tests" : <function at 0x7f21ac00d728>
},
"setGlobalLogSinks" : <function at 0x7f21ac00cbf0>,
"setGlobalMessenger" : <function at 0x7f21ac00d200>
}
}

All GSLAM objects are putted to the gslam object, now we can see three function object:

And we can also see the function signature with option '-key':

build> ./gslam doc -plugin tests -key gslam.apps.tests
function(...)
function(svar)->int

The output means this application function accepts one argument with Svar type and returns a int.

For the class object '__builtin__.Json', we can also obtain the detail APIs:

build> ./gslam doc -plugin tests -key __builtin__.Json
class GSLAM::Json():
| Methods defined here:
| GSLAM::Json.dump(...)
| GSLAM::Json.dump(svar)->str
|
|
| GSLAM::Json.load(...)
| GSLAM::Json.load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)->svar
|
|

GSLAM Plugin Rules

Based on Svar, GSLAM defined serveral plugin types: