Chaste Commit::357af77f3d8b47aa179dbebbdde04c89ce3f2aca
CommandLineArguments Class Reference

#include <CommandLineArguments.hpp>

+ Inheritance diagram for CommandLineArguments:
+ Collaboration diagram for CommandLineArguments:

Public Member Functions

bool OptionExists (const std::string &rOption)
 
int GetNumberOfArgumentsForOption (const std::string &rOption, bool throwIfNone=false)
 
char * GetValueCorrespondingToOption (const std::string &rOption, int valueNumber=1)
 
double GetDoubleCorrespondingToOption (const std::string &rOption, int valueNumber=1)
 
int GetIntCorrespondingToOption (const std::string &rOption, int valueNumber=1)
 
unsigned GetUnsignedCorrespondingToOption (const std::string &rOption, int valueNumber=1)
 
std::string GetStringCorrespondingToOption (const std::string &rOption, int valueNumber=1)
 
std::vector< std::string > GetStringsCorrespondingToOption (const std::string &rOption)
 
std::vector< double > GetDoublesCorrespondingToOption (const std::string &rOption)
 
std::vector< int > GetIntsCorrespondingToOption (const std::string &rOption)
 
std::vector< unsigned > GetUnsignedsCorrespondingToOption (const std::string &rOption)
 
bool GetBoolCorrespondingToOption (const std::string &rOption)
 
std::vector< std::string > GetUnusedOptions ()
 

Static Public Member Functions

static CommandLineArguments * Instance ()
 

Public Attributes

int * p_argc
 
char *** p_argv
 

Private Member Functions

 CommandLineArguments ()
 
void MarkOptionUsed (const std::string &rOption)
 
int GetIndexForArgument (std::string rOption)
 
void TestOptionFormat (const std::string &rOption)
 

Private Attributes

std::set< std::string > mUsedOptions
 

Static Private Attributes

static CommandLineArguments * mpInstance = nullptr
 

Detailed Description

A convenient holder for the command line arguments, with helper methods for checking whether an option has been given or getting the value(s) corresponding to a given option.

Options are considered to be any argument starting with a '-' followed by a non-numeric character, in order to distinguish between options and negative numbers. Each option may have zero or more values following it on the command line. Examples:

  • -option1 on
  • –my_param value
  • –verbose
  • -numbers 1 8 -4.5
  • –models model1 model2

The cxxtest harness will fill in the member variables when a test is started. They can then be read by PETSc when it is initialised, and by other code as required.

Every option that is looked up and found is recorded as used. If PETSc is initialised at the time, the option is also marked as used in PETSc's options database, so that PETSc's report of unused options at PetscFinalize (on by default in debug builds of PETSc, or with -options_left) only lists options that neither Chaste nor PETSc has read. GetUnusedOptions() gives the same information on demand.

Definition at line 70 of file CommandLineArguments.hpp.

Constructor & Destructor Documentation

◆ CommandLineArguments()

CommandLineArguments::CommandLineArguments ( )
private

Default constructor. Should never be called directly, call CommandLineArguments::Instance() instead.

Definition at line 46 of file CommandLineArguments.cpp.

References mpInstance.

Referenced by Instance().

Member Function Documentation

◆ GetBoolCorrespondingToOption()

bool CommandLineArguments::GetBoolCorrespondingToOption ( const std::string &  rOption)

Read bools from the command line. This accepts 0 or 1, and also true/True/TRUE and false/False/FALSE.

Parameters
rOptionThe option name as a string.
Returns
Whether the option was set to true or false.

Definition at line 258 of file CommandLineArguments.cpp.

References EXCEPTION, and GetStringCorrespondingToOption().

◆ GetDoubleCorrespondingToOption()

double CommandLineArguments::GetDoubleCorrespondingToOption ( const std::string &  rOption,
int  valueNumber = 1 
)
Returns
the double for a given option.

This uses GetValueCorrespondingToOption and converts the char* to a double.

Parameters
rOptionthe option name as a string.
valueNumberthe number of the argument following the option definition (defaults to 1, for 1st argument).

Definition at line 95 of file CommandLineArguments.cpp.

References GetValueCorrespondingToOption().

Referenced by GetDoublesCorrespondingToOption().

◆ GetDoublesCorrespondingToOption()

std::vector< double > CommandLineArguments::GetDoublesCorrespondingToOption ( const std::string &  rOption)
Returns
a collection of doubles for a given option.

This uses GetDoubleCorrespondingToOption repeatedly.

Parameters
rOptionthe option name as a string.

Definition at line 225 of file CommandLineArguments.cpp.

References GetDoubleCorrespondingToOption(), and GetNumberOfArgumentsForOption().

◆ GetIndexForArgument()

int CommandLineArguments::GetIndexForArgument ( std::string  rOption)
private
Returns
the index for the given argument. Returns -1 if the argument is not found.
Parameters
rOptionthe argument name as a string.
Returns
the position of the argument in the list (indexed from 1)

Definition at line 118 of file CommandLineArguments.cpp.

References EXCEPTION, MarkOptionUsed(), p_argc, p_argv, and TestOptionFormat().

Referenced by GetNumberOfArgumentsForOption(), GetValueCorrespondingToOption(), and OptionExists().

◆ GetIntCorrespondingToOption()

int CommandLineArguments::GetIntCorrespondingToOption ( const std::string &  rOption,
int  valueNumber = 1 
)
Returns
the int for a given option.

This uses GetValueCorrespondingToOption and converts the char* to an int.

Parameters
rOptionthe option name as a string.
valueNumberthe number of the argument following the option definition (defaults to 1, for 1st argument).

Definition at line 101 of file CommandLineArguments.cpp.

References GetValueCorrespondingToOption().

Referenced by GetIntsCorrespondingToOption().

◆ GetIntsCorrespondingToOption()

std::vector< int > CommandLineArguments::GetIntsCorrespondingToOption ( const std::string &  rOption)
Returns
a collection of ints for a given option.

This uses GetIntCorrespondingToOption repeatedly.

Parameters
rOptionthe option name as a string.

Definition at line 247 of file CommandLineArguments.cpp.

References GetIntCorrespondingToOption(), and GetNumberOfArgumentsForOption().

◆ GetNumberOfArgumentsForOption()

int CommandLineArguments::GetNumberOfArgumentsForOption ( const std::string &  rOption,
bool  throwIfNone = false 
)
Returns
the number of arguments for a given option. Throws an Exception if the option does not have any following arguments, or the option does not exist. So you can use OptionExists() to avoid Exceptions in your code when using the other public methods.
Parameters
rOptionthe option name as a string.
throwIfNoneWhether to give an exception if there are no arguments for this rOption (defaults to false).
Returns
the number of arguments following this option.

Definition at line 177 of file CommandLineArguments.cpp.

References EXCEPTION, GetIndexForArgument(), p_argc, and p_argv.

Referenced by GetDoublesCorrespondingToOption(), GetIntsCorrespondingToOption(), GetStringsCorrespondingToOption(), GetUnsignedsCorrespondingToOption(), GetValueCorrespondingToOption(), and Citations::Print().

◆ GetStringCorrespondingToOption()

std::string CommandLineArguments::GetStringCorrespondingToOption ( const std::string &  rOption,
int  valueNumber = 1 
)
Returns
the string for a given option.

This uses GetValueCorrespondingToOption and converts the char* to a std::string.

Parameters
rOptionthe option name as a string.
valueNumberthe number of the argument following the option definition (defaults to 1, for 1st argument).

Definition at line 207 of file CommandLineArguments.cpp.

References GetValueCorrespondingToOption().

Referenced by GetBoolCorrespondingToOption(), GetStringsCorrespondingToOption(), and Citations::Print().

◆ GetStringsCorrespondingToOption()

std::vector< std::string > CommandLineArguments::GetStringsCorrespondingToOption ( const std::string &  rOption)
Returns
a collection of strings for a given option (useful for inputting a list of files for example).

This uses GetStringCorrespondingToOption repeatedly.

Parameters
rOptionthe option name as a string.

Definition at line 214 of file CommandLineArguments.cpp.

References GetNumberOfArgumentsForOption(), and GetStringCorrespondingToOption().

◆ GetUnsignedCorrespondingToOption()

unsigned CommandLineArguments::GetUnsignedCorrespondingToOption ( const std::string &  rOption,
int  valueNumber = 1 
)
Returns
the unsigned for a given option.

This uses GetValueCorrespondingToOption and converts the char* to an unsigned. Throws an exception if the option converts to a negative integer.

Parameters
rOptionthe option name as a string.
valueNumberthe number of the argument following the option definition (defaults to 1, for 1st argument).

Definition at line 107 of file CommandLineArguments.cpp.

References EXCEPTION, and GetValueCorrespondingToOption().

Referenced by GetUnsignedsCorrespondingToOption().

◆ GetUnsignedsCorrespondingToOption()

std::vector< unsigned > CommandLineArguments::GetUnsignedsCorrespondingToOption ( const std::string &  rOption)
Returns
a collection of unsigneds for a given option.

This uses GetUnsignedCorrespondingToOption repeatedly.

Parameters
rOptionthe option name as a string.

Definition at line 236 of file CommandLineArguments.cpp.

References GetNumberOfArgumentsForOption(), and GetUnsignedCorrespondingToOption().

◆ GetUnusedOptions()

std::vector< std::string > CommandLineArguments::GetUnusedOptions ( )
Returns
the options given on the command line that have not been read, either through this class or (if PETSc is initialised) by PETSc itself, in the order they were given. Values following an option are not listed separately.

Definition at line 148 of file CommandLineArguments.cpp.

References PetscTools::IsInitialised(), mUsedOptions, p_argc, and p_argv.

◆ GetValueCorrespondingToOption()

char * CommandLineArguments::GetValueCorrespondingToOption ( const std::string &  rOption,
int  valueNumber = 1 
)
Returns
the value for a given option, i.e. the argument after the option name in the list of command line arguments. For example, if the following arguments were given ./heart/build/debug/TestMyClassRunner -timestep 0.04 Then calling CommandLineArguments::Instance()->GetValueCorrespondingToOption("-timestep"); will return 0.04 (as a char*). Use atoi or atof to convert the char* to an int or a double(float) respectively, or call one of our convenience methods for common types.
Parameters
rOptionthe option name as a string.
valueNumberthe number of the argument following the option definition (defaults to 1, for 1st argument).

Definition at line 78 of file CommandLineArguments.cpp.

References EXCEPT_IF_NOT, EXCEPTION, GetIndexForArgument(), GetNumberOfArgumentsForOption(), p_argv, and TestOptionFormat().

Referenced by GetDoubleCorrespondingToOption(), GetIntCorrespondingToOption(), GetStringCorrespondingToOption(), and GetUnsignedCorrespondingToOption().

◆ Instance()

◆ MarkOptionUsed()

void CommandLineArguments::MarkOptionUsed ( const std::string &  rOption)
private

Record that an option has been used, and tell PETSc so it is not reported as unused.

Parameters
rOptionthe option name.

Definition at line 133 of file CommandLineArguments.cpp.

References PetscTools::IsInitialised(), and mUsedOptions.

Referenced by GetIndexForArgument().

◆ OptionExists()

◆ TestOptionFormat()

void CommandLineArguments::TestOptionFormat ( const std::string &  rOption)
private

Throw an exception if the option is not of the required form: '-' followed by a non-numeric character.

Parameters
rOptionthe option name to check the format of.

Definition at line 283 of file CommandLineArguments.cpp.

References EXCEPTION.

Referenced by GetIndexForArgument(), GetValueCorrespondingToOption(), and OptionExists().

Member Data Documentation

◆ mpInstance

CommandLineArguments * CommandLineArguments::mpInstance = nullptr
staticprivate

The single instance of the class.

Definition at line 78 of file CommandLineArguments.hpp.

Referenced by CommandLineArguments(), and Instance().

◆ mUsedOptions

std::set<std::string> CommandLineArguments::mUsedOptions
private

The options that have been looked up and found.

Definition at line 81 of file CommandLineArguments.hpp.

Referenced by GetUnusedOptions(), and MarkOptionUsed().

◆ p_argc

◆ p_argv


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