#pragma once #include "facetracknoir/plugin-api.hpp" #include #include #include #include #include #include template using ptr = std::shared_ptr; extern "C" typedef void* (*CTOR_FUNPTR)(void); extern "C" typedef Metadata* (*METADATA_FUNPTR)(void); class DynamicLibrary { public: DynamicLibrary(const QString& filename); ~DynamicLibrary(); CTOR_FUNPTR Dialog; CTOR_FUNPTR Constructor; METADATA_FUNPTR Metadata; QString filename; private: #if defined(_WIN32) QLibrary* handle; #else void* handle; #endif }; struct SelectedLibraries { using dylib = ptr; ptr pTracker; ptr pFilter; ptr pProtocol; SelectedLibraries(QFrame* frame, dylib t, dylib p, dylib f); SelectedLibraries() : pTracker(nullptr), pFilter(nullptr), pProtocol(nullptr), correct(false) {} ~SelectedLibraries(); bool correct; };