13 int main(
int argc,
char *argv[]) {
16 auto log = std::make_shared<GLogger>(gopts,
PLUGIN_LOGGER,
"plugin_example");
18 GManager managerAV(log,
"GManager Static");
25 map<string, Shape *> fffv;
31 Shape *aShape = fffv[
"triangle"];
35 fffv[
"triangle"]->Area();
38 log->info(0,
" Shape pointers from map: ", fffv[
"triangle"],
", from direct pointer:", aShape);
47 GManager managerB(log,
"GManager Dynamic");
49 map<string, Car *> ggg;
52 Car *aCar = ggg[
"ford"];
59 log->info(0,
" Car pointers from map: ", ggg[
"ford"],
", from direct pointer:", aCar);
60 log->info(0,
" run generalCarVar method from factory map: ", ggg[
"tesla"]->generalCarVar);
Owns factories and dynamically‑loaded libraries, providing run‑time creation.
Base * CreateObject(std::string_view name) const
Create an instance of previously registered factory as Base*.
T * LoadAndRegisterObjectFromLibrary(std::string_view name, GOptions *gopts)
Load a shared library, look up its instantiate symbol, and return object.
void clearDLMap() noexcept
Explicit cleanup (also called by destructor) – idempotent.
void RegisterObjectFactory(std::string_view name)
Register a concrete factory under name.
Generic factory/manager for GEMC plugin objects.
constexpr const char * PLUGIN_LOGGER
int main(int argc, char *argv[])