Class MultiLibraryClassLoader
Defined in File multi_library_class_loader.hpp
Class Documentation
-
class MultiLibraryClassLoader
A ClassLoader that can bind more than one runtime library.
Public Functions
-
explicit MultiLibraryClassLoader(bool enable_ondemand_loadunload)
Constructor for the class.
- Parameters:
enable_ondemand_loadunload – - Flag indicates if classes are to be loaded/unloaded automatically as class_loader are created and destroyed
-
virtual ~MultiLibraryClassLoader()
Virtual destructor for class.
Creates an instance of an object of given class name with ancestor class Base This version does not look in a specific library for the factory, but rather the first open library that defines the classs.
- Parameters:
Base – - polymorphic type indicating base class
class_name – - the name of the concrete plugin class we want to instantiate
- Returns:
A std::shared_ptr<Base> to newly created plugin
Creates an instance of an object of given class name with ancestor class Base This version takes a specific library to make explicit the factory being used.
- Parameters:
Base – - polymorphic type indicating base class
class_name – - the name of the concrete plugin class we want to instantiate
library_path – - the library from which we want to create the plugin
- Returns:
A std::shared_ptr<Base> to newly created plugin
-
template<class Base>
inline ClassLoader::UniquePtr<Base> createUniqueInstance(const std::string &class_name) Creates an instance of an object of given class name with ancestor class Base.
This version does not look in a specific library for the factory, but rather the first open library that defines the class
- Parameters:
Base – - polymorphic type indicating base class
class_name – - the name of the concrete plugin class we want to instantiate
- Returns:
A unique pointer to newly created plugin
-
template<class Base>
inline ClassLoader::UniquePtr<Base> createUniqueInstance(const std::string &class_name, const std::string &library_path) Creates an instance of an object of given class name with ancestor class Base.
This version takes a specific library to make explicit the factory being used
- Parameters:
Base – - polymorphic type indicating base class
class_name – - the name of the concrete plugin class we want to instantiate
library_path – - the library from which we want to create the plugin
- Returns:
A unique pointer to newly created plugin
-
template<class Base>
inline Base *createUnmanagedInstance(const std::string &class_name) Creates an instance of an object of given class name with ancestor class Base This version does not look in a specific library for the factory, but rather the first open library that defines the class This version should not be used as the plugin system cannot do automated safe loading/unloadings.
- Parameters:
Base – - polymorphic type indicating base class
class_name – - the name of the concrete plugin class we want to instantiate
- Returns:
An unmanaged Base* to newly created plugin
-
template<class Base>
inline Base *createUnmanagedInstance(const std::string &class_name, const std::string &library_path) Creates an instance of an object of given class name with ancestor class Base This version takes a specific library to make explicit the factory being used This version should not be used as the plugin system cannot do automated safe loading/unloadings.
- Parameters:
Base – - polymorphic type indicating Base class
class_name – - name of class for which we want to create instance
library_path – - the fully qualified path to the runtime library
-
template<class Base>
inline bool isClassAvailable(const std::string &class_name) const Indicates if a class has been loaded and can be instantiated.
- Parameters:
Base – - polymorphic type indicating Base class
class_name – - name of class that is be inquired about
- Returns:
true if loaded, false otherwise
-
bool isLibraryAvailable(const std::string &library_path) const
Indicates if a library has been loaded into memory.
- Parameters:
library_path – - The full qualified path to the runtime library
- Returns:
true if library is loaded, false otherwise
-
template<class Base>
inline std::vector<std::string> getAvailableClasses() const Gets a list of all classes that are loaded by the class loader.
- Parameters:
Base – - polymorphic type indicating Base class
- Returns:
A vector<string> of the available classes
-
template<class Base>
inline std::vector<std::string> getAvailableClassesForLibrary(const std::string &library_path) Gets a list of all classes loaded for a particular library.
- Parameters:
Base – - polymorphic type indicating Base class
- Returns:
A vector<string> of the available classes in the passed library
-
std::vector<std::string> getRegisteredLibraries() const
Gets a list of all libraries opened by this class loader.
- Returns:
A list of libraries opened by this class loader
-
void loadLibrary(const std::string &library_path)
Loads a library into memory for this class loader.
- Parameters:
library_path – - the fully qualified path to the runtime library
-
int unloadLibrary(const std::string &library_path)
Unloads a library for this class loader.
- Parameters:
library_path – - the fully qualified path to the runtime library
- Returns:
The number of times more unloadLibrary() has to be called for it to be unbound from this MultiLibraryClassLoader
-
explicit MultiLibraryClassLoader(bool enable_ondemand_loadunload)