| 31 | |
| 32 | template <typename T, typename U> |
| 33 | inline std::unique_ptr<T> dynamicPointerCast(std::unique_ptr<U> &&R) noexcept { |
| 34 | static_assert(std::has_virtual_destructor_v<T>); |
| 35 | T *P = dynamic_cast<T *>(R.get()); |
| 36 | if (P) { |
| 37 | R.release(); |
| 38 | } |
| 39 | return std::unique_ptr<T>(P); |
| 40 | } |
| 41 | |
| 42 | std::unique_ptr<WasmEdge::Host::WasmBpfModule> createModule() { |
| 43 | using namespace std::literals::string_view_literals; |