Gromacs
2018.1
|
#include <gromacs/options/optionsassigner.h>
Decorator class for assigning values to Options.
This class extends the interface of an Options object by providing methods to set values for options. It also keeps track of necessary state variables to assign values to options in subsections within the Options object. Typical use (without error handling):
Classes | |
class | Impl |
Private implementation class for OptionsAssigner. More... | |
Public Member Functions | |
OptionsAssigner (Options *options) | |
Creates an object that assigns to the given object. | |
void | setAcceptBooleanNoPrefix (bool bEnabled) |
Sets the assigner to recognize boolean options with a "no" prefix. More... | |
void | start () |
Starts assigning values. More... | |
void | startSection (const char *name) |
Starts assigning values to options in a subsection. More... | |
void | startOption (const char *name) |
Starts assigning values for an option. More... | |
bool | tryStartOption (const char *name) |
Starts assigning values for an option. More... | |
void | appendValue (const Variant &value) |
Appends a value to the value list of the current option. More... | |
void | appendValue (const std::string &value) |
Appends a value to the value list of the current option. More... | |
void | finishOption () |
Finish assigning values for the current option. More... | |
void | finishSection () |
Finish assigning values to a subsection. More... | |
void | finish () |
Finish assigning options through the object. More... | |
void gmx::OptionsAssigner::appendValue | ( | const Variant & | value | ) |
Appends a value to the value list of the current option.
[in] | value | Value to assign. |
InvalidInputError | if the value cannot be converted or if there are too many values for an option. |
Basic exception safety guarantee: If this method throws, erroneous values are ignored, but it is possible to continue assigning values to the same option. However, if value
would result in more than one value, and some of them can be converted, but some result in errors, it is currently possible that some values have been added to the option even if an exception is thrown.
Strong exception safety guarantee if the option provides value conversion with the same guarantee. All options where a single input value always results in a single output value provide this.
This method provides the same exception safety guarantee as the OptionStorageTemplate::convertValue() method of the storage class implementing the option where the value is assigned to.
void gmx::OptionsAssigner::appendValue | ( | const std::string & | value | ) |
Appends a value to the value list of the current option.
[in] | value | Value to assign. |
See appendValue(const Variant &) for more details.
void gmx::OptionsAssigner::finish | ( | ) |
Finish assigning options through the object.
Does not throw.
void gmx::OptionsAssigner::finishOption | ( | ) |
Finish assigning values for the current option.
InvalidInputError | if the set of values since startOption() is not valid. |
If this method throws, it returns to the state where the option was before startOption(), i.e., all values added with appendValue() since the last startOption() are discarded.
Independent of whether the method throws, the option opened with startOption() will be closed after the call.
void gmx::OptionsAssigner::finishSection | ( | ) |
Finish assigning values to a subsection.
Does not throw.
void gmx::OptionsAssigner::setAcceptBooleanNoPrefix | ( | bool | bEnabled | ) |
Sets the assigner to recognize boolean options with a "no" prefix.
With this option set, startOption
("noname") is interpreted as startOption
("name") followed by appendValue
("no"), if there is no option by the name "noname", but there is a boolean option with name "name".
By default, the prefix is not recognized.
Can be set or cleared at any time, and will have effect on all subsequent calls of startOption().
Does not throw.
void gmx::OptionsAssigner::start | ( | ) |
Starts assigning values.
Does not throw.
void gmx::OptionsAssigner::startOption | ( | const char * | name | ) |
Starts assigning values for an option.
[in] | name | Name of the option to start assigning to. |
InvalidInputError | if such an option is not found, or if the option is specified more than once but doesn't support it. |
void gmx::OptionsAssigner::startSection | ( | const char * | name | ) |
Starts assigning values to options in a subsection.
[in] | name | Name of the subsection to start assigning to. |
InvalidInputError | if such a subsection is not found. |
Strong exception safety guarantee.
bool gmx::OptionsAssigner::tryStartOption | ( | const char * | name | ) |
Starts assigning values for an option.
[in] | name | Name of the option to start assigning to. |
name
is a valid option name. InvalidInputError | if the option is specified more than once but doesn't support it. |