|
| ~PluginManager () |
|
Data * | findData (const char *nm) |
|
const Data * | findData (const char *nm) const |
|
const Data * | findDataWithDispName (const char *) const |
|
const char * | getAutoDir (bool usr) const |
|
ObjectSet< Data > & | getData () |
|
const char * | getFileName (const Data &) const |
|
void | getNotLoadedByUser (BufferStringSet &) const |
|
bool | isPresent (const char *) const |
|
bool | load (const char *libnm) |
| Explicit load of a plugin. More...
|
|
bool | load (const char *libnm, Data::AutoSource, int autotype) |
|
void | loadAuto (bool late, bool withfilter=false) |
| see class comments More...
|
|
bool | unload (const char *libnm) |
| Explicit unload of a plugin. More...
|
|
void | unLoadAll () |
|
const char * | userName (const char *) const |
|
| CallBacker () |
|
| CallBacker (const CallBacker &) |
|
virtual | ~CallBacker () |
|
bool | attachCB (const NotifierAccess &, const CallBack &, bool onlyifnew=false) const |
|
bool | attachCB (const NotifierAccess *notif, const CallBack &cb, bool onlyifnew=false) const |
|
void | detachAllNotifiers () const |
| Call from the destructor of your inherited object. More...
|
|
void | detachCB (const NotifierAccess &, const CallBack &) const |
|
void | detachCB (const NotifierAccess *notif, const CallBack &cb) const |
|
virtual bool | isCapsule () const |
|
bool | isNotifierAttached (const NotifierAccess *) const |
| Only for debugging purposes, don't use. More...
|
|
void | stopReceivingNotifications () const |
|
virtual CallBacker * | trueCaller () |
|
Plugin manager - loads plugins: shared libs or DLLs.
Note: there are macros making most of the below stuff not interesting. See header file odplugin.h.
For making your own plugins, no need to include this file. Use odplugin.h.
For shared libs to be in any way useful, an init function must be called. The name of that function should predictable. It is constructed as follows: InitxxxPlugin where xxx is the name of the plugin file, where: libxxx.so -> xxx xxx.dll -> xxx etc.
The signature is:
extern "C" { const char* InitxxxPlugin(int,char**); }
Optional extras:
1) If you want the plugin to be loaded automatically at startup define:
extern "C" int GetxxxPluginType(void);
if not defined, PI_AUTO_INIT_NONE is assumed, which means it will not be loaded if not explicitly done so.
Loading from startup is done from $HOME/.od/plugins/$PLFSUBDIR/libs or $dGB_APPL/plugins/$PLFSUBDIR/libs. The plguniins in these directories will be loaded only if they are mentioned in a .alo file in the parent directory, $HOME/.od/plugins/$PLFSUBDIR or $dGB_APPL/plugins/$PLFSUBDIR. The alo files are handled in alphabetical order.
2) It may be a good idea to define a function:
extern "C" PluginInfo* GetxxxPluginInfo(void);
Make sure it returns an object of type PluginManager::Info*. Make sure it points to an existing object (static or made with new/malloc);
3) The user of PIM() can decide not to load all of the .alo load libs. After construction, the getData() list is filled. You can change the source_ to None before calling loadAuto().
<>