store different factory variants in a union
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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 "
|
||||
|
||||
Reference in New Issue
Block a user