diff options
Diffstat (limited to 'api')
-rw-r--r-- | api/plugin-api.cpp | 46 | ||||
-rw-r--r-- | api/plugin-support.hpp | 29 |
2 files changed, 39 insertions, 36 deletions
diff --git a/api/plugin-api.cpp b/api/plugin-api.cpp index 5a485d62..404ed434 100644 --- a/api/plugin-api.cpp +++ b/api/plugin-api.cpp @@ -2,7 +2,28 @@ #include <utility> -using namespace plugin_api::detail; +namespace plugin_api::detail { + +BaseDialog::BaseDialog() = default; +void BaseDialog::closeEvent(QCloseEvent*) +{ + if (isVisible()) + { + hide(); + emit closing(); + } +} + +void BaseDialog::done(int) +{ + if (isVisible()) + { + hide(); + close(); + } +} + +} // ns plugin_api::detail // these exist so that vtable is emitted in a single compilation unit, not all of them. @@ -15,17 +36,6 @@ IExtension::~IExtension() = default; void ITrackerDialog::register_tracker(ITracker*) {} void ITrackerDialog::unregister_tracker() {} -BaseDialog::BaseDialog() = default; - -void BaseDialog::closeEvent(QCloseEvent*) -{ - if (isVisible()) - { - hide(); - emit closing(); - } -} - bool ITracker::center() { return false; } module_status ITracker::status_ok() @@ -46,15 +56,6 @@ IProtocolDialog::IProtocolDialog() = default; ITracker::ITracker() = default; ITrackerDialog::ITrackerDialog() = default; -void BaseDialog::done(int) -{ - if (isVisible()) - { - hide(); - close(); - } -} - IExtensionDialog::~IExtensionDialog() = default; bool module_status::is_ok() const @@ -71,6 +72,7 @@ module_status module_status_mixin::error(const QString& error) return module_status(error.isEmpty() ? "Unknown error" : error); } - Metadata::Metadata() = default; Metadata::~Metadata() = default; + + diff --git a/api/plugin-support.hpp b/api/plugin-support.hpp index 5062a688..34eee1a4 100644 --- a/api/plugin-support.hpp +++ b/api/plugin-support.hpp @@ -31,8 +31,10 @@ #define OPENTRACK_SOLIB_PREFIX "" -extern "C" typedef void* (*OPENTRACK_CTOR_FUNPTR)(void); -extern "C" typedef Metadata_* (*OPENTRACK_METADATA_FUNPTR)(void); +extern "C" { + using module_ctor_t = void* (*)(void); + using module_metadata_t = Metadata_* (*)(void); +} struct dylib final { @@ -63,26 +65,25 @@ struct dylib final if (check(!handle.load())) return; - if (check((Dialog = (OPENTRACK_CTOR_FUNPTR) handle.resolve("GetDialog"), !Dialog))) + if (check((Dialog = (module_ctor_t) handle.resolve("GetDialog"), !Dialog))) return; - if (check((Constructor = (OPENTRACK_CTOR_FUNPTR) handle.resolve("GetConstructor"), !Constructor))) + if (check((Constructor = (module_ctor_t) handle.resolve("GetConstructor"), !Constructor))) return; - if (check((Meta = (OPENTRACK_METADATA_FUNPTR) handle.resolve("GetMetadata"), !Meta))) + if (check((Meta = (module_metadata_t) handle.resolve("GetMetadata"), !Meta))) return; - auto m = std::unique_ptr<Metadata_>(Meta()); + std::unique_ptr<Metadata_> m{Meta()}; icon = m->icon(); name = m->name(); type = t; } - ~dylib() - { - // QLibrary refcounts the .dll's so don't forcefully unload - } + + // QLibrary refcounts the .dll's so don't forcefully unload + ~dylib() = default; static QList<std::shared_ptr<dylib>> enum_libraries(const QString& library_path) { @@ -134,9 +135,9 @@ struct dylib final QIcon icon; QString name; - OPENTRACK_CTOR_FUNPTR Dialog; - OPENTRACK_CTOR_FUNPTR Constructor; - OPENTRACK_METADATA_FUNPTR Meta; + module_ctor_t Dialog; + module_ctor_t Constructor; + module_metadata_t Meta; private: QLibrary handle; @@ -242,6 +243,6 @@ static inline std::shared_ptr<t> make_dylib_instance(const std::shared_ptr<dylib { std::shared_ptr<t> ret; if (lib != nullptr && lib->Constructor) - ret = std::shared_ptr<t>(reinterpret_cast<t*>(reinterpret_cast<OPENTRACK_CTOR_FUNPTR>(lib->Constructor)())); + ret = std::shared_ptr<t>(reinterpret_cast<t*>(reinterpret_cast<module_ctor_t>(lib->Constructor)())); return ret; } |