Gromacs  2024.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
List of all members | Public Member Functions
gmx::OptionsAssigner Class Reference

#include <gromacs/options/optionsassigner.h>

Description

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):

gmx::Options options("name", "Title");
// Set up options
gmx::OptionsAssigner assigner(&options);
assigner.start();
assigner.startOption("opt1");
assigner.appendValue("3");
assigner.finishOption();
assigner.startSection("section");
assigner.startOption("opt2"); // Now in the subsection
assigner.appendValue("yes");
assigner.finishOption();
assigner.finishSection()
assigner.startOption("opt3"); // Again in the main options
assigner.appendValue("2");
assigner.finishOption();
assigner.finish();
*

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 Any &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...
 

Member Function Documentation

void gmx::OptionsAssigner::appendValue ( const Any value)

Appends a value to the value list of the current option.

Parameters
[in]valueValue to assign.
Exceptions
InvalidInputErrorif 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.

void gmx::OptionsAssigner::appendValue ( const std::string &  value)

Appends a value to the value list of the current option.

Parameters
[in]valueValue to assign.

See appendValue(const Any &) 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.

Exceptions
InvalidInputErrorif 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.

Parameters
[in]nameName of the option to start assigning to.
Exceptions
InvalidInputErrorif 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.

Parameters
[in]nameName of the subsection to start assigning to.
Exceptions
InvalidInputErrorif such a subsection is not found.

Strong exception safety guarantee.

bool gmx::OptionsAssigner::tryStartOption ( const char *  name)

Starts assigning values for an option.

Parameters
[in]nameName of the option to start assigning to.
Returns
true if name is a valid option name.
Exceptions
InvalidInputErrorif the option is specified more than once but doesn't support it.

The documentation for this class was generated from the following files: