| #if !defined(UTILS_INTERFACEHOLDER_HPP__) |
| #define UTILS_INTERFACEHOLDER_HPP__ |
| #include <toonz_plugin.h> |
| #include <toonz_hostif.h> |
| |
| extern toonz::host_interface_t *ifactory_; |
| |
| void release_interf(void *interf) |
| { |
| ifactory_->release_interface(interf); |
| } |
| |
| template <class T> |
| std::unique_ptr<T, decltype(&release_interf)> grab_interf(const toonz::UUID *uuid) |
| { |
| T *interf = nullptr; |
| if (ifactory_->query_interface(uuid, reinterpret_cast<void **>(&interf))) |
| return std::unique_ptr<T, decltype(&release_interf)>(nullptr, release_interf); |
| return std::move(std::unique_ptr<T, decltype(&release_interf)>(interf, release_interf)); |
| } |
| |
| #endif |