MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ create()

template<typename OpClass >
std::shared_ptr< OpClass > MayaFlux::Yantra::OperationRegistry::create ( )
inline

Create an operation instance.

Template Parameters
OpClassOperation class to create
Returns
Shared pointer to new operation instance, or nullptr if not registered

Definition at line 112 of file ComputeRegistry.hpp.

113 {
114 if constexpr (has_operation_category<OpClass>::value) {
115 TypeKey key { OpClass::operation_category, std::type_index(typeid(OpClass)) };
116 auto it = m_factories.find(key);
117 if (it != m_factories.end()) {
118 return std::static_pointer_cast<OpClass>(
119 std::any_cast<std::shared_ptr<void>>(it->second()));
120 }
121 }
122
123 for (const auto& [key, factory] : m_factories) {
124 if (key.operation_type == std::type_index(typeid(OpClass))) {
125 return std::static_pointer_cast<OpClass>(
126 std::any_cast<std::shared_ptr<void>>(factory()));
127 }
128 }
129
130 return nullptr;
131 }
std::unordered_map< TypeKey, Factory, TypeKeyHash > m_factories

References m_factories.