undoStudio
The IDE of the undoRT ecosystem
Loading...
Searching...
No Matches
undoStudio::core::PluginManager Class Reference

Loads and owns the lifetime of dynamically-loaded undoApp plugins. More...

#include <PluginManager.hpp>

Collaboration diagram for undoStudio::core::PluginManager:
Collaboration graph

Classes

struct  LoadedPlugin
 

Public Member Functions

int loadPluginsFromDirectory (const std::string &directory)
 Scan a directory for *.so files and load each as a plugin.
 
bool loadPlugin (const std::string &path)
 Load a single plugin by path.
 
void shutdownAll ()
 Tear down and unload every loaded plugin, in reverse load order.
 
std::size_t pluginCount () const
 Number of currently loaded plugins.
 

Static Public Member Functions

static PluginManager & getInstance ()
 Get the singleton instance of PluginManager.
 

Private Member Functions

 PluginManager ()=default
 
 ~PluginManager ()=default
 
 PluginManager (const PluginManager &)=delete
 
PluginManager & operator= (const PluginManager &)=delete
 

Private Attributes

std::vector< LoadedPlugin > m_plugins
 

Detailed Description

Loads and owns the lifetime of dynamically-loaded undoApp plugins.

Constructor & Destructor Documentation

◆ PluginManager() [1/2]

undoStudio::core::PluginManager::PluginManager ( )
privatedefault

◆ ~PluginManager()

undoStudio::core::PluginManager::~PluginManager ( )
privatedefault

◆ PluginManager() [2/2]

undoStudio::core::PluginManager::PluginManager ( const PluginManager &  )
privatedelete

Member Function Documentation

◆ getInstance()

PluginManager & undoStudio::core::PluginManager::getInstance ( )
static

Get the singleton instance of PluginManager.

◆ loadPlugin()

bool undoStudio::core::PluginManager::loadPlugin ( const std::string &  path)

Load a single plugin by path.

Parameters
pathPath to the shared library
Returns
true on success

◆ loadPluginsFromDirectory()

int undoStudio::core::PluginManager::loadPluginsFromDirectory ( const std::string &  directory)

Scan a directory for *.so files and load each as a plugin.

Parameters
directoryPath to scan (relative or absolute)
Returns
Number of plugins successfully loaded

◆ operator=()

PluginManager & undoStudio::core::PluginManager::operator= ( const PluginManager &  )
privatedelete

◆ pluginCount()

std::size_t undoStudio::core::PluginManager::pluginCount ( ) const
inline

Number of currently loaded plugins.

◆ shutdownAll()

void undoStudio::core::PluginManager::shutdownAll ( )

Tear down and unload every loaded plugin, in reverse load order.

Must be called BEFORE ImGuiManager::shutdown(): plugin panels are std::function objects whose code lives inside the plugin's shared library, so ImGuiManager must forget about them before dlclose() unmaps that memory.

Member Data Documentation

◆ m_plugins

std::vector<LoadedPlugin> undoStudio::core::PluginManager::m_plugins
private

The documentation for this class was generated from the following files: