Loading...
Searching...
No Matches
AsNumberWithUnit Class Reference

Multiply a number by a factor using given mapping. More...

#include <CLI11.h>

+ Inheritance diagram for AsNumberWithUnit:

Public Types

enum  Options {
  CASE_SENSITIVE = 0 , CASE_INSENSITIVE = 1 , UNIT_OPTIONAL = 0 , UNIT_REQUIRED = 2 ,
  DEFAULT = CASE_INSENSITIVE | UNIT_OPTIONAL
}
 Adjust AsNumberWithUnit behavior. More...
 

Public Member Functions

template<typename Number >
 AsNumberWithUnit (std::map< std::string, Number > mapping, Options opts=DEFAULT, const std::string &unit_name="UNIT")
 
- Public Member Functions inherited from Validator
 Validator (std::string validator_desc)
 Construct a Validator with just the description string.
 
 Validator (std::function< std::string(std::string &)> op, std::string validator_desc, std::string validator_name="")
 Construct Validator from basic information.
 
Validatoroperation (std::function< std::string(std::string &)> op)
 Set the Validator operation function.
 
std::string operator() (std::string &str) const
 This is the required operator for a Validator - provided to help users (CLI11 uses the member func directly)
 
std::string operator() (const std::string &str) const
 This is the required operator for a Validator - provided to help users (CLI11 uses the member func directly)
 
Validatordescription (std::string validator_desc)
 Specify the type string.
 
CLI11_NODISCARD Validator description (std::string validator_desc) const
 Specify the type string.
 
CLI11_NODISCARD std::string get_description () const
 Generate type description information for the Validator.
 
Validatorname (std::string validator_name)
 Specify the type string.
 
CLI11_NODISCARD Validator name (std::string validator_name) const
 Specify the type string.
 
CLI11_NODISCARD const std::string & get_name () const
 Get the name of the Validator.
 
Validatoractive (bool active_val=true)
 Specify whether the Validator is active or not.
 
CLI11_NODISCARD Validator active (bool active_val=true) const
 Specify whether the Validator is active or not.
 
Validatornon_modifying (bool no_modify=true)
 Specify whether the Validator can be modifying or not.
 
Validatorapplication_index (int app_index)
 Specify the application index of a validator.
 
CLI11_NODISCARD Validator application_index (int app_index) const
 Specify the application index of a validator.
 
CLI11_NODISCARD int get_application_index () const
 Get the current value of the application index.
 
CLI11_NODISCARD bool get_active () const
 Get a boolean if the validator is active.
 
CLI11_NODISCARD bool get_modifying () const
 Get a boolean if the validator is allowed to modify the input returns true if it can modify the input.
 
Validator operator& (const Validator &other) const
 Combining validators is a new validator.
 
Validator operator| (const Validator &other) const
 Combining validators is a new validator.
 
Validator operator! () const
 Create a validator that fails when a given validator succeeds.
 

Additional Inherited Members

- Protected Member Functions inherited from Validator
 Validator (std::string validator_desc, std::function< std::string(std::string &)> func)
 
- Protected Attributes inherited from Validator
std::function< std::string()> desc_function_ {[]() { return std::string{}; }}
 This is the description function, if empty the description_ will be used.
 
std::function< std::string(std::string &)> func_ {[](std::string &) { return std::string{}; }}
 This is the base function that is to be called.
 
std::string name_ {}
 The name for search purposes of the Validator.
 
int application_index_ = -1
 A Validator will only apply to an indexed value (-1 is all elements)
 
bool active_ {true}
 Enable for Validator to allow it to be disabled if need be.
 
bool non_modifying_ {false}
 specify that a validator should not modify the input
 

Detailed Description

Multiply a number by a factor using given mapping.

Can be used to write transforms for SIZE or DURATION inputs.

Example: With mapping = {"b"->1, "kb"->1024, "mb"->1024*1024} one can recognize inputs like "100", "12kb", "100 MB", that will be automatically transformed to 100, 14448, 104857600.

Output number type matches the type in the provided mapping. Therefore, if it is required to interpret real inputs like "0.42 s", the mapping should be of a type <string, float> or <string, double>.

Definition at line 3479 of file CLI11.h.

Member Enumeration Documentation

◆ Options

enum Options

Adjust AsNumberWithUnit behavior.

CASE_SENSITIVE/CASE_INSENSITIVE controls how units are matched. UNIT_OPTIONAL/UNIT_REQUIRED throws ValidationError if UNIT_REQUIRED is set and unit literal is not found.

Definition at line 3485 of file CLI11.h.

Constructor & Destructor Documentation

◆ AsNumberWithUnit()

AsNumberWithUnit ( std::map< std::string, Number >  mapping,
Options  opts = DEFAULT,
const std::string &  unit_name = "UNIT" 
)
inlineexplicit

Definition at line 3494 of file CLI11.h.


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