SWMMVis  6.0.0-alpha.4
Qt6/C++ GIS-based graphical user interface for the SWMMVis engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
extensionmanager.cpp File Reference

Implementation of metadata-first native GUI extension loading. More...

#include "plugins/extensionmanager.h"
#include "sdk-build-manifest.h"
#include <QCoreApplication>
#include <QDir>
#include <QFileInfo>
#include <QJsonDocument>
#include <QLibrary>
#include <QPluginLoader>
#include <QRegularExpression>
#include <QStandardPaths>
#include <QThread>
#include <algorithm>
#include <exception>
Include dependency graph for extensionmanager.cpp:

Classes

struct  openswmmvis::ExtensionManager::Loaded
 One successfully initialized extension and its ordered owned lifetime resources. More...
 

Namespaces

namespace  openswmmvis
 

Detailed Description

Implementation of metadata-first native GUI extension loading.

Discovery reads embedded Qt metadata without executing native plugin code. Canonical library paths and validated plugin IDs are deduplicated in search-path order; SDK, Qt, compiler and architecture checks precede QPluginLoader::instance().

Startup persists the initializing plugin identity before calling third-party code. Workers and native edit scopes use additional operation markers. A surviving marker disables its owner on the next startup. Safe mode skips initialization while retaining the inventory.

Partial initialization joins workers and tears down host contributions. Failure diagnostics survive metadata rescans, and loaded libraries remain pinned until process exit to protect retained Qt callbacks. Enable changes and new libraries take effect after restart.

Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
Date
2026
License
GPL-3.0-or-later