void delete_plugins () { discovered = False; started = False; interfaceTable.clear (); HashTableHandleIterator it; PluginStruct *ps (0); while (pluginTable.get_prev (it, ps)) { ps->delete_plugin (); } it.reset (); ps = 0; while (pluginTable.get_prev (it, ps)) { ps->unload_plugin (); } pluginTable.empty (); externTable.clear (); if (levelsHead) { delete levelsHead; levelsHead = 0; } levelsTail = 0; maxLevel = 1; }
void remove_plugin (const Plugin *PluginPtr) { HashTableHandleIterator it; for ( PluginStruct *current = pluginTable.get_last (it); current; current = pluginTable.get_prev (it)) { if (current->plugin) { current->plugin->discover_plugin (PluginDiscoverRemove, PluginPtr); } } }
void remove_all_plugins (Plugin *pluginPtr) { if (pluginPtr) { HashTableHandleIterator it; for ( PluginStruct *current = interfaceTable.get_last (it); current; current = interfaceTable.get_prev (it)) { pluginPtr->discover_plugin (PluginDiscoverRemove, current->plugin); } for ( const Plugin *ExPtr = externTable.get_last (it); ExPtr; ExPtr = externTable.get_prev (it)) { pluginPtr->discover_plugin (PluginDiscoverRemove, ExPtr); } } }