From d95d5f19547a88dc595922f5254c4b308ec643ac Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 11 Mar 2021 23:52:35 -0500 Subject: [PATCH] store different factory variants in a union --- examples/plugins/helloplugin.cpp | 4 +--- examples/plugins/morse2plugin.cpp | 6 ++---- examples/plugins/nve2plugin.cpp | 4 +--- src/lammpsplugin.h | 8 +++++--- src/plugin.cpp | 6 +++--- 5 files changed, 12 insertions(+), 16 deletions(-) diff --git a/examples/plugins/helloplugin.cpp b/examples/plugins/helloplugin.cpp index 1c9d0c2779..11f2cfb891 100644 --- a/examples/plugins/helloplugin.cpp +++ b/examples/plugins/helloplugin.cpp @@ -41,9 +41,7 @@ extern "C" void lammpsplugin_init(void *lmp, void *handle, void *regfunc) plugin.name = "hello"; plugin.info = "Hello world command v1.0"; plugin.author = "Axel Kohlmeyer (akohlmey@gmail.com)"; - plugin.creator1 = nullptr; - plugin.creator2 = nullptr; - plugin.creator3 = (lammpsplugin_factory3 *) &hellocreator; + plugin.creator.v3 = (lammpsplugin_factory3 *) &hellocreator; plugin.handle = handle; (*register_plugin)(&plugin,lmp); } diff --git a/examples/plugins/morse2plugin.cpp b/examples/plugins/morse2plugin.cpp index dfc341e0c0..a4151dcc3d 100644 --- a/examples/plugins/morse2plugin.cpp +++ b/examples/plugins/morse2plugin.cpp @@ -31,15 +31,13 @@ extern "C" void lammpsplugin_init(void *lmp, void *handle, void *regfunc) plugin.name = "morse2"; plugin.info = "Morse2 variant pair style v1.0"; plugin.author = "Axel Kohlmeyer (akohlmey@gmail.com)"; - plugin.creator1 = (lammpsplugin_factory1 *) &morse2creator; - plugin.creator2 = nullptr; - plugin.creator3 = nullptr; + plugin.creator.v1 = (lammpsplugin_factory1 *) &morse2creator; plugin.handle = handle; (*register_plugin)(&plugin,lmp); // also register morse2/omp pair style. only need to update changed fields plugin.name = "morse2/omp"; plugin.info = "Morse2 variant pair style for OpenMP v1.0"; - plugin.creator1 = (lammpsplugin_factory1 *) &morse2ompcreator; + plugin.creator.v1 = (lammpsplugin_factory1 *) &morse2ompcreator; (*register_plugin)(&plugin,lmp); } diff --git a/examples/plugins/nve2plugin.cpp b/examples/plugins/nve2plugin.cpp index 785ec8dbe1..d17db1dfc7 100644 --- a/examples/plugins/nve2plugin.cpp +++ b/examples/plugins/nve2plugin.cpp @@ -24,9 +24,7 @@ extern "C" void lammpsplugin_init(void *lmp, void *handle, void *regfunc) plugin.name = "nve2"; plugin.info = "NVE2 variant fix style v1.0"; plugin.author = "Axel Kohlmeyer (akohlmey@gmail.com)"; - plugin.creator1 = nullptr; - plugin.creator2 = (lammpsplugin_factory2 *) &nve2creator; - plugin.creator3 = nullptr; + plugin.creator.v2 = (lammpsplugin_factory2 *) &nve2creator; plugin.handle = handle; (*register_plugin)(&plugin,lmp); } diff --git a/src/lammpsplugin.h b/src/lammpsplugin.h index 3de2bcdcdf..1baed9799d 100644 --- a/src/lammpsplugin.h +++ b/src/lammpsplugin.h @@ -28,9 +28,11 @@ extern "C" { const char *name; const char *info; const char *author; - lammpsplugin_factory1 *creator1; - lammpsplugin_factory2 *creator2; - lammpsplugin_factory3 *creator3; + union { + lammpsplugin_factory1 *v1; + lammpsplugin_factory2 *v2; + lammpsplugin_factory3 *v3; + } creator; void *handle; } lammpsplugin_t; diff --git a/src/plugin.cpp b/src/plugin.cpp index ea1c46b705..a95fde5b73 100644 --- a/src/plugin.cpp +++ b/src/plugin.cpp @@ -129,7 +129,7 @@ namespace LAMMPS_NS "style {} from plugin", plugin->name)); } - (*pair_map)[plugin->name] = (Force::PairCreator)plugin->creator1; + (*pair_map)[plugin->name] = (Force::PairCreator)plugin->creator.v1; } else if (pstyle == "fix") { auto fix_map = lmp->modify->fix_map; @@ -139,7 +139,7 @@ namespace LAMMPS_NS "style {} from plugin", plugin->name)); } - (*fix_map)[plugin->name] = (Modify::FixCreator)plugin->creator2; + (*fix_map)[plugin->name] = (Modify::FixCreator)plugin->creator.v2; } else if (pstyle == "command") { auto command_map = lmp->input->command_map; @@ -149,7 +149,7 @@ namespace LAMMPS_NS "style {} from plugin", plugin->name)); } - (*command_map)[plugin->name] = (Input::CommandCreator)plugin->creator3; + (*command_map)[plugin->name] = (Input::CommandCreator)plugin->creator.v3; } else { utils::logmesg(lmp,fmt::format("Loading plugin for {} styles not "