20 #if !defined(__MITSUBA_CORE_PLUGIN_H_)
21 #define __MITSUBA_CORE_PLUGIN_H_
23 #include <mitsuba/mitsuba.h>
24 #include <boost/filesystem.hpp>
25 #include <boost/scoped_ptr.hpp>
41 Plugin(
const std::string &shortName,
const fs::path &path);
47 bool isUtility()
const;
56 std::string getDescription()
const;
59 const fs::path &getPath()
const;
62 const std::string &getShortName()
const;
65 void *getSymbol(
const std::string &sym);
67 bool hasSymbol(
const std::string &sym)
const;
70 boost::scoped_ptr<PluginPrivate> d;
126 void ensurePluginLoaded(
const std::string &name);
129 std::vector<std::string> getLoadedPlugins()
const;
143 const Class *classType,
172 std::map<std::
string,
Plugin *> m_plugins;
174 static
ref<PluginManager> m_instance;
Generic serializable object, which supports construction from a Properties instance.
Definition: cobject.h:40
static void staticInitialization()
Initializes the built-in reference count debugger (if enabled)
#define MTS_EXPORT_CORE
Definition: getopt.h:29
static PluginManager * getInstance()
Return the global plugin manager.
Definition: plugin.h:121
Abstract utility class – can be used to implement loadable utility plugins that perform various actio...
Definition: util.h:32
#define MTS_DECLARE_CLASS()
This macro must be used in the initial definition in classes that derive from Object.
Definition: class.h:158
Reference counting helper.
Definition: ref.h:40
Stores meta-information about Object instances.
Definition: class.h:43
Associative parameter map for constructing subclasses of ConfigurableObject.
Definition: properties.h:46
Parent of all Mitsuba classes.
Definition: object.h:38
The plugin manager is responsible for resolving and loading external plugins.
Definition: plugin.h:118
static void staticShutdown()
Free the memory taken by staticInitialization()
Abstract plugin class – represents loadable configurable objects and utilities.
Definition: plugin.h:38
Thin wrapper around the recursive boost thread lock.
Definition: lock.h:34