| 15 | |
| 16 | template <typename T, typename U> |
| 17 | inline std::unique_ptr<T> dynamicPointerCast(std::unique_ptr<U> &&R) noexcept { |
| 18 | static_assert(std::has_virtual_destructor_v<T>); |
| 19 | T *P = dynamic_cast<T *>(R.get()); |
| 20 | if (P) { |
| 21 | R.release(); |
| 22 | } |
| 23 | return std::unique_ptr<T>(P); |
| 24 | } |
| 25 | |
| 26 | std::unique_ptr<WasmEdge::Host::WasiLoggingModule> createModule() { |
| 27 | using namespace std::literals::string_view_literals; |