111 std::string description;
154 void add(std::string name, std::string description,
ModuleFn fn) {
155 m_entries.push_back({std::move(name), std::move(description), fn});
162 const std::vector<ModuleEntry> &
entries()
const {
return m_entries; }
171 for (
const auto &e : m_entries) {
180 std::vector<ModuleEntry> m_entries;
Singleton registry of all compiled-in modules.
Definition Modules.hpp:134
void add(std::string name, std::string description, ModuleFn fn)
Append a new entry to the registry.
Definition Modules.hpp:154
const std::vector< ModuleEntry > & entries() const
All registered modules, in registration order.
Definition Modules.hpp:162
static Registry & get()
Access the singleton instance.
Definition Modules.hpp:140
const ModuleEntry * find(const std::string &name) const
Look up a module by name.
Definition Modules.hpp:170
Stores Wavefunction (set of valence orbitals, grid, HF etc.)
Definition Wavefunction.hpp:37
In-out (timers, profilers, and read/write data)
Definition ChronoTimer.hpp:9
Modules are user-defined calculations run after the wavefunction has been solved.
Definition Module_Kionisation.cpp:21
void(*)(const IO::InputBlock &, const Wavefunction &) ModuleFn
Function-pointer signature shared by every module.
Definition Modules.hpp:96
void runModules(const IO::InputBlock &input, const Wavefunction &wf)
Iterate over the input blocks and run any that are modules.
Definition Modules.cpp:13
void runModule(const IO::InputBlock &module_input, const Wavefunction &wf)
Run a single module.
Definition Modules.cpp:29
void list_modules()
Print the list of compiled-in modules (name + description).
Definition Modules.cpp:58
One entry in the module registry.
Definition Modules.hpp:109
Helper struct: constructing a Register adds a module to the Registry.
Definition Modules.hpp:200
Register(const char *name, const char *description, ModuleFn fn)
Register a module by constructing one of these at file scope.
Definition Modules.hpp:208