23 lines
635 B
C++
23 lines
635 B
C++
|
#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
|