SMTK
@SMTK_VERSION@
Simulation Modeling Tool Kit
|
Go to the documentation of this file.
10 #ifndef smtk_common_Extension_h
11 #define smtk_common_Extension_h
14 #include "smtk/CoreExports.h"
16 #include "smtk/common/CompilerInformation.h"
20 #pragma warning(disable : 4251)
55 #define smtkDeclareExtension(exportmacro, name, cls) \
56 void exportmacro smtk_##name##_extension_AutoInit_Construct() \
58 smtk::common::Extension::registerExtension( \
60 []() { return std::dynamic_pointer_cast<smtk::common::Extension>(cls::create()); }, \
63 void exportmacro smtk_##name##_extension_AutoInit_Destruct() \
65 smtk::common::Extension::unregisterExtension(#name); \
110 static bool registerExtension(
111 const std::string& name,
112 std::function<Extension::Ptr(
void)> ctor,
113 bool oneShot =
true);
116 static bool unregisterExtension(
const std::string& name);
126 static void visitAll(
127 std::function<std::pair<bool, bool>(
const std::string&, Extension::Ptr)> visitor);
134 static void visit(std::function<std::pair<bool, bool>(
const std::string&, T)> visitor)
138 result = smtk::dynamic_pointer_cast<typename T::element_type>(entry);
141 return std::make_pair(
false,
false);
143 return visitor(name, result);
148 static Extension::Ptr find(
const std::string& name,
bool removeOneShot =
true);
152 static typename T::Ptr
findAs(
const std::string& name)
154 typename T::Ptr result = std::dynamic_pointer_cast<T>(
Extension::find(name,
false));
The main namespace for the Simulation Modeling Tool Kit (SMTK).
Definition: doc.h:33
static Extension::Ptr find(const std::string &name, bool removeOneShot=true)
Find an extension given a specific name.
Definition: Extension.cxx:85
#define smtkEnableSharedPtr(...)
An abbreviation for enabling shared pointers.
Definition: SharedFromThis.h:154
static void visit(std::function< std::pair< bool, bool >(const std::string &, T)> visitor)
Iterate over all the extensions that are subclasses of the given type.
Definition: Extension.h:134
static void visitAll(std::function< std::pair< bool, bool >(const std::string &, Extension::Ptr)> visitor)
Call the given function on each registered extension.
Definition: Extension.cxx:61
static T::Ptr findAs(const std::string &name)
Find the first extension with a given name and type.
Definition: Extension.h:152
Macros for dealing with shared-pointer classes.
#define smtkTypeMacroBase(...)
Add typedefs to a class for identifcation.
Definition: SharedFromThis.h:55
Allow extension of operator functionality in separate libraries.
Definition: Extension.h:94