Gromacs
2025-dev-20241002-88a4191
|
#include <gromacs/options/options.h>
Collection of options.
See Extensible Handling of Options (options) for an overview of how the options work. The IOptionsContainerWithSections interface documents how to add options.
In order to keep the public interface of this class simple, functionality to assign values to options is provided by a separate OptionsAssigner class. Similarly, functionality for looping over all options (e.g., for writing out help) is provided by OptionsIterator.
Public Member Functions | |
Options () | |
Initializes an empty options root container. | |
void | addManager (IOptionManager *manager) |
Adds an option manager. More... | |
IOptionsContainer & | addGroup () override |
Creates a subgroup of options within the current options. More... | |
OptionSectionInfo & | rootSection () |
Returns a handle to the root section. | |
const OptionSectionInfo & | rootSection () const |
Returns a handle to the root section. | |
void | finish () |
Notifies the collection that all option values are assigned. More... | |
Public Member Functions inherited from gmx::IOptionsContainerWithSections | |
template<class SectionType > | |
SectionType::HandleType | addSection (const SectionType §ion) |
Adds a section to this collection. More... | |
Public Member Functions inherited from gmx::IOptionsContainer | |
template<class OptionType > | |
OptionType::InfoType * | addOption (const OptionType &settings) |
Adds a recognized option. More... | |
Friends | |
class | OptionsAssigner |
Needed to be able to extend the interface of this object. | |
Additional Inherited Members | |
Protected Member Functions inherited from gmx::IOptionsContainerWithSections | |
GMX_DEFAULT_CONSTRUCTORS (IOptionsContainerWithSections) | |
Protected Member Functions inherited from gmx::IOptionsContainer | |
GMX_DEFAULT_CONSTRUCTORS (IOptionsContainer) | |
|
overridevirtual |
Creates a subgroup of options within the current options.
To add options to the group, use the returned interface.
Currently, this is only used to influence the order of options: all options in a group appear before options in a group added after it, no matter in which order the options are added to the groups. In the future, the groups could also be used to influence the help output.
Implements gmx::IOptionsContainer.
void gmx::Options::addManager | ( | IOptionManager * | manager | ) |
Adds an option manager.
manager | Manager to add. |
std::bad_alloc | if out of memory. |
Option managers are used by some types of options that require interaction between different option instances (e.g., selection options), or need to support globally set properties (e.g., a global default file prefix). Option objects can retrieve the pointer to their manager when they are created, and the caller can alter the behavior of the options through the manager. See the individual managers for details.
Caller is responsible for memory management of manager
. The Options object (and its contained options) only stores a reference to the object.
This method cannot be called after adding options or sections.
void gmx::Options::finish | ( | ) |
Notifies the collection that all option values are assigned.
InvalidInputError | if invalid user input is detected. |
This function should be called after no more option values are to be assigned. Values in storage variables are guaranteed to be available only after this call, although in most cases, they are available already during assignment.
If invalid option values, e.g., missing required option, is detected at this point, this function throws. The thrown exception contains information on all errors detected during the call.