Switch Class Reference

A simple wrapper around bool so that it can be read as a word: true/false, on/off, yes/no, any/none. Also accepts 0/1 as a string and shortcuts t/f, y/n. More...

Public Types

enum  switchType : unsigned char {
  FALSE = 0 , TRUE = 1 , NO = 2 , YES = 3 ,
  OFF = 4 , ON = 5 , NONE = 6 , ANY = 7 ,
  INVALID = 8
}
 Switch enumerations corresponding to common text representations. More...
 

Public Member Functions

 Switch (const Switch &) noexcept=default
 Copy construct. More...
 
Switchoperator= (const Switch &) noexcept=default
 Copy assignment. More...
 
constexpr Switch () noexcept
 Default construct as false. More...
 
constexpr Switch (const switchType sw) noexcept
 Construct from enumerated value. More...
 
constexpr Switch (const bool b) noexcept
 Construct from bool. More...
 
constexpr Switch (const int i) noexcept
 Construct from int (treat integer as bool value) More...
 
 Switch (const std::string &str)
 Construct from string - catches bad input. More...
 
 Switch (const char *str)
 Construct from character array - catches bad input. More...
 
 Switch (const float val, const float tol=0.5)
 
 Switch (const double val, const double tol=0.5)
 
 Switch (const token &tok)
 Construct from token. Handles bool/label/word types. More...
 
 Switch (const word &key, const dictionary &dict)
 Construct from dictionary lookup. More...
 
 Switch (const word &key, const dictionary &dict, const Switch deflt, const bool failsafe=false)
 
 Switch (Istream &is)
 Construct from Istream by reading a token. More...
 
bool good () const noexcept
 True if the Switch represents a valid enumeration. More...
 
bool bad () const noexcept
 True if the Switch does not represent a valid enumeration. More...
 
switchType type () const noexcept
 The underlying enumeration value. More...
 
void negate () noexcept
 Flip the type, so OFF becomes ON, etc. More...
 
const char * c_str () const noexcept
 A C-string representation of the Switch value. More...
 
std::string str () const
 A string representation of the Switch value. More...
 
bool readIfPresent (const word &key, const dictionary &dict)
 Update the value of the Switch if it is found in the dictionary. More...
 
 operator bool () const noexcept
 Conversion to bool. More...
 
Switchoperator= (const switchType sw) noexcept
 Assignment from enumerated value. More...
 
Switchoperator= (const bool b) noexcept
 Assignment from bool. More...
 
 Switch (const std::string &str, bool allowBad)
 Deprecated(2020-01) From string with/without bad input test. More...
 
 Switch (const char *str, bool allowBad)
 Deprecated(2020-01) From string with/without bad input test. More...
 
 FOAM_DEPRECATED_FOR (2019-02, "good() or static found() method") bool valid() const noexcept
 Deprecated(2020-01) Use good() method, or static found() method. More...
 

Static Public Member Functions

static Switch getOrAddToDict (const word &key, dictionary &dict, const Switch deflt=switchType::FALSE)
 
static const char * name (const bool b) noexcept
 A string representation of bool as "false" / "true". More...
 
static Switch find (const std::string &str)
 
static bool found (const std::string &str)
 Test if there is a switch type corresponding to the given string. More...
 
static Switch lookupOrAddToDict (const word &name, dictionary &dict, const Switch deflt=switchType::FALSE)
 Same as getOrAddToDict() More...
 

Detailed Description

A simple wrapper around bool so that it can be read as a word: true/false, on/off, yes/no, any/none. Also accepts 0/1 as a string and shortcuts t/f, y/n.

Source files

Definition at line 77 of file Switch.H.

Member Enumeration Documentation

◆ switchType

enum switchType : unsigned char

Switch enumerations corresponding to common text representations.

Note
The values here are critical for its proper behaviour. The values correspond to an index into the predefined output names for the c_str() method and the lower bit is tested for determining the true/false bool value.
Enumerator
FALSE 

"false"

TRUE 

"true"

NO 

"no"

YES 

"yes"

OFF 

"off"

ON 

"on"

NONE 

"none"

ANY 

"any"

INVALID 

"invalid" (output only)

Definition at line 88 of file Switch.H.

Constructor & Destructor Documentation

◆ Switch() [1/15]

Switch ( const Switch )
defaultnoexcept

Copy construct.

◆ Switch() [2/15]

constexpr Switch ( )
inlineconstexprnoexcept

Default construct as false.

Definition at line 127 of file Switch.H.

◆ Switch() [3/15]

constexpr Switch ( const switchType  sw)
inlineconstexprnoexcept

Construct from enumerated value.

Definition at line 133 of file Switch.H.

◆ Switch() [4/15]

constexpr Switch ( const bool  b)
inlineconstexprnoexcept

Construct from bool.

Definition at line 139 of file Switch.H.

◆ Switch() [5/15]

constexpr Switch ( const int  i)
inlineconstexprnoexcept

Construct from int (treat integer as bool value)

Definition at line 145 of file Switch.H.

◆ Switch() [6/15]

Switch ( const std::string &  str)
explicit

Construct from string - catches bad input.

Use static find() method for a failsafe alternative

Definition at line 176 of file Switch.C.

◆ Switch() [7/15]

Switch ( const char *  str)
explicit

Construct from character array - catches bad input.

Use static find() method for a failsafe alternative

Definition at line 182 of file Switch.C.

◆ Switch() [8/15]

Switch ( const float  val,
const float  tol = 0.5 
)
explicit

Construct from float with rounding to zero given by the tolerance (default: 0.5)

Definition at line 200 of file Switch.C.

◆ Switch() [9/15]

Switch ( const double  val,
const double  tol = 0.5 
)
explicit

Construct from double with rounding to zero given by the tolerance (default: 0.5)

Definition at line 206 of file Switch.C.

◆ Switch() [10/15]

Switch ( const token tok)
explicit

Construct from token. Handles bool/label/word types.

Definition at line 212 of file Switch.C.

References bool, token::boolToken(), token::good(), token::isBool(), token::isLabel(), token::isWord(), token::labelToken(), and token::wordToken().

Here is the call graph for this function:

◆ Switch() [11/15]

Switch ( const word key,
const dictionary dict 
)

Construct from dictionary lookup.

FatalError if anything is incorrect.

Parameters
keyLookup key. Uses LITERAL (not REGEX)
dictdictionary

Definition at line 234 of file Switch.C.

References dict, Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, dictionary::get(), Switch::good(), keyType::LITERAL, and Foam::printTokenError().

Here is the call graph for this function:

◆ Switch() [12/15]

Switch ( const word key,
const dictionary dict,
const Switch  deflt,
const bool  failsafe = false 
)

Find the key in the dictionary and use the corresponding switch value or the default if not found in dictionary.

FatalIOError if the switch name is incorrect. Specifying failsafe downgrades the FatalIOError to an IOWarning.

Parameters
keyLookup key. Uses LITERAL (not REGEX)
dictdictionary
defltfallback if not found
failsafeWarn only on bad input

Definition at line 258 of file Switch.C.

References Switch::c_str(), dict, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, Switch::good(), IOWarningInFunction, keyType::LITERAL, Foam::printTokenError(), and dictionary::readIfPresent().

Here is the call graph for this function:

◆ Switch() [13/15]

Switch ( Istream is)
explicit

Construct from Istream by reading a token.

Definition at line 292 of file Switch.C.

◆ Switch() [14/15]

Switch ( const std::string &  str,
bool  allowBad 
)

Deprecated(2020-01) From string with/without bad input test.

Deprecated:
(2020-01) - confusing syntax, use static find() method

Definition at line 188 of file Switch.C.

◆ Switch() [15/15]

Switch ( const char *  str,
bool  allowBad 
)

Deprecated(2020-01) From string with/without bad input test.

Deprecated:
(2020-01) - confusing syntax, use static find() method

Definition at line 194 of file Switch.C.

Member Function Documentation

◆ operator=() [1/3]

Switch & operator= ( const Switch )
defaultnoexcept

Copy assignment.

◆ getOrAddToDict()

Foam::Switch getOrAddToDict ( const word key,
dictionary dict,
const Switch  deflt = switchType::FALSE 
)
static

Construct from dictionary, supplying default value so that if the value is not found, it is added into the dictionary.

Parameters
keyLookup key. Uses LITERAL (not REGEX)
dictdictionary
defltdefault value to add

Definition at line 163 of file Switch.C.

References dict, dictionary::getOrAdd(), and keyType::LITERAL.

Referenced by Switch::lookupOrAddToDict().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ name()

const char * name ( const bool  b)
staticnoexcept

A string representation of bool as "false" / "true".

Definition at line 145 of file Switch.C.

References b.

Referenced by Switch::lookupOrAddToDict().

Here is the caller graph for this function:

◆ find()

Foam::Switch find ( const std::string &  str)
static

Find switchType for the given string, returning as a Switch that can be tested for good() or bad().

Definition at line 151 of file Switch.C.

Referenced by IOstreamOption::compressionEnum(), isoSurfaceParams::getFilterType(), isTrue(), scalarRange::parse(), and error::useAbort().

Here is the caller graph for this function:

◆ found()

bool found ( const std::string &  str)
static

Test if there is a switch type corresponding to the given string.

Definition at line 157 of file Switch.C.

◆ good()

bool good ( ) const
noexcept

True if the Switch represents a valid enumeration.

Definition at line 300 of file Switch.C.

Referenced by argList::argList(), Switch::bad(), IOstreamOption::compressionEnum(), isoSurfaceParams::getFilterType(), isTrue(), Foam::operator>>(), scalarRange::parse(), functionObjectList::read(), and Switch::Switch().

Here is the caller graph for this function:

◆ bad()

bool bad ( ) const
inlinenoexcept

True if the Switch does not represent a valid enumeration.

Definition at line 225 of file Switch.H.

References Switch::good().

Here is the call graph for this function:

◆ type()

Foam::Switch::switchType type ( ) const
noexcept

The underlying enumeration value.

Definition at line 306 of file Switch.C.

◆ negate()

void negate ( )
noexcept

Flip the type, so OFF becomes ON, etc.

Ignored if the Switch is INVALID

Definition at line 312 of file Switch.C.

◆ c_str()

const char * c_str ( ) const
noexcept

A C-string representation of the Switch value.

Definition at line 322 of file Switch.C.

Referenced by Foam::operator<<(), and Switch::Switch().

Here is the caller graph for this function:

◆ str()

std::string str ( ) const

A string representation of the Switch value.

Definition at line 328 of file Switch.C.

◆ readIfPresent()

bool readIfPresent ( const word key,
const dictionary dict 
)

Update the value of the Switch if it is found in the dictionary.

Parameters
keyLookup key. Uses LITERAL (not REGEX)
dictdictionary

Definition at line 334 of file Switch.C.

References dict, keyType::LITERAL, Switch::readIfPresent(), and dictionary::readIfPresent().

Referenced by adjointkOmegaSST::read(), qZeta::read(), Switch::readIfPresent(), and regionModel1D::regionModel1D().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ operator bool()

operator bool ( ) const
inlinenoexcept

Conversion to bool.

Definition at line 251 of file Switch.H.

◆ operator=() [2/3]

Switch & operator= ( const switchType  sw)
inlinenoexcept

Assignment from enumerated value.

Definition at line 257 of file Switch.H.

◆ operator=() [3/3]

Switch & operator= ( const bool  b)
inlinenoexcept

Assignment from bool.

Definition at line 264 of file Switch.H.

References b, Switch::FALSE, and Switch::TRUE.

◆ FOAM_DEPRECATED_FOR()

FOAM_DEPRECATED_FOR ( 2019-  02,
"good() or static found() method"   
) const
inlinenoexcept

Deprecated(2020-01) Use good() method, or static found() method.

Deprecated:
(2020-01) Use good() method, or static found() method

Definition at line 285 of file Switch.H.

◆ lookupOrAddToDict()

static Switch lookupOrAddToDict ( const word name,
dictionary dict,
const Switch  deflt = switchType::FALSE 
)
inlinestatic

Same as getOrAddToDict()

Definition at line 292 of file Switch.H.

References dict, Switch::getOrAddToDict(), and Switch::name().

Here is the call graph for this function:

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