| 76 | ////////////////////////////////////////////////////////////////////////// |
| 77 | template<typename DerivedModule> |
| 78 | DerivedModule* FindModule() |
| 79 | { |
| 80 | AFIModule* pLogicModule = FindModule(GET_CLASS_NAME(DerivedModule)); |
| 81 | ARK_ASSERT_RET_VAL(pLogicModule != nullptr, nullptr); |
| 82 | |
| 83 | if (!std::is_base_of<AFIModule, DerivedModule>::value) |
| 84 | { |
| 85 | return nullptr; |
| 86 | } |
| 87 | |
| 88 | DerivedModule* derived_module = dynamic_cast<DerivedModule*>(pLogicModule); |
| 89 | ARK_ASSERT_RET_VAL(derived_module != nullptr, nullptr); |
| 90 | |
| 91 | return derived_module; |
| 92 | } |
| 93 | |
| 94 | template<typename PLUGIN_TYPE> |
| 95 | void Register() |