|
Deki 1.3.0
Modular C++ 2D engine for embedded displays and desktop
|
Per-category provider registry that lives in deki-engine-core.dll. More...
#include <DekiProviderRegistryBase.h>
Public Member Functions | |
| void | Register (IDekiPackage *provider, const char *providerId, bool isPlugin) |
| void | Unregister (IDekiPackage *provider) |
| IDekiPackage * | GetById (const char *providerId) const |
| IDekiPackage * | GetDefault () const |
| int | GetCount () const |
| IDekiPackage * | GetAt (int idx) const |
| void | ClearPluginProviders () |
| Called by PackageLoader before FreeLibrary on each plugin DLL. | |
| DekiProviderRegistryBase ()=default | |
| DekiProviderRegistryBase (const DekiProviderRegistryBase &)=delete | |
| DekiProviderRegistryBase & | operator= (const DekiProviderRegistryBase &)=delete |
Static Public Member Functions | |
| static DekiProviderRegistryBase & | ForCategory (const char *category) |
| static void | ClearAllPluginProviders () |
| Static convenience: clear plugin-owned providers across every known category. | |
Per-category provider registry that lives in deki-engine-core.dll.
One instance per category string (e.g. "location", "weather"). Package DLLs register their concrete providers here at DekiPlugin_RegisterComponents time.
The base stores IDekiPackage* pointers and is interface-agnostic on purpose: the typed wrapper (DekiProviderRegistry<Interface>) downcasts via static_cast. Safe because each (category, providerId) pair is owned by exactly one type.
Same DLL-boundary pattern as DekiSettingsRegistry — singleton symbol is exported from deki-engine-core.dll so every package DLL sees the same instance via dllimport. Plugin-aware ClearPlugin path lets PackageLoader drop providers before FreeLibrary without dangling vtables.
|
default |
|
delete |
|
static |
| void DekiProviderRegistryBase::Register | ( | IDekiPackage * | provider, |
| const char * | providerId, | ||
| bool | isPlugin ) |
| void DekiProviderRegistryBase::Unregister | ( | IDekiPackage * | provider | ) |
| IDekiPackage * DekiProviderRegistryBase::GetById | ( | const char * | providerId | ) | const |
| IDekiPackage * DekiProviderRegistryBase::GetDefault | ( | ) | const |
| int DekiProviderRegistryBase::GetCount | ( | ) | const |
| IDekiPackage * DekiProviderRegistryBase::GetAt | ( | int | idx | ) | const |
| void DekiProviderRegistryBase::ClearPluginProviders | ( | ) |
Called by PackageLoader before FreeLibrary on each plugin DLL.
Removes every provider registered with isPlugin=true and frees the owned memory. Engine-core-owned providers (isPlugin=false) are preserved.
|
static |
Static convenience: clear plugin-owned providers across every known category.
Used by PackageLoader::UnloadAllPackages as belt-and-braces in case a plugin's DekiPlugin_Shutdown didn't clean up after itself.
|
delete |