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)