args 6.4.16
A simple single-header C++11 STL-only argument parser library
Loading...
Searching...
No Matches
Classes | Enumerations | Functions
args Namespace Reference

contains all the functionality of the args library More...

Classes

class  ActionFlag
 A flag class that calls a function when it's matched. More...
 
class  ArgumentParser
 The main user facing command line argument parser class. More...
 
class  Base
 Base class for all match types. More...
 
class  Command
 Main class for building subparsers. More...
 
class  Completion
 An exception that contains autocompletion reply. More...
 
class  CompletionFlag
 
class  CounterFlag
 A flag class that simply counts the number of times it's matched. More...
 
struct  EitherFlag
 A simple unified option type for unified initializer lists for the Matcher class. More...
 
class  Error
 Base error class. More...
 
class  ExtraError
 Error that occurs when a singular flag is specified multiple times. More...
 
class  Flag
 Boolean argument matcher. More...
 
class  FlagBase
 Base class for all flag options. More...
 
class  GlobalOptions
 Class for using global options in ArgumentParser. More...
 
class  Group
 Class for all kinds of validating groups, including ArgumentParser. More...
 
class  Help
 An exception that indicates that the user has requested help. More...
 
class  HelpFlag
 Help flag class. More...
 
struct  HelpParams
 A simple structure of parameters for easy user-modifyable help menus. More...
 
class  ImplicitValueFlag
 An optional argument-accepting flag class. More...
 
class  MapError
 Errors in map lookups. More...
 
class  MapFlag
 A mapping value flag class. More...
 
class  MapFlagList
 A mapping value flag list class. More...
 
class  MapPositional
 A positional argument mapping class. More...
 
class  MapPositionalList
 A positional argument mapping list class. More...
 
class  Matcher
 A class of "matchers", specifying short and flags that can possibly be matched. More...
 
class  NamedBase
 Base class for all match types that have a name. More...
 
struct  Nargs
 A number of arguments which can be consumed by an option. More...
 
class  NargsValueFlag
 A variadic arguments accepting flag class. More...
 
class  ParseError
 Errors that occur during regular parsing. More...
 
class  Positional
 A positional argument class. More...
 
class  PositionalBase
 Base class for positional options. More...
 
class  PositionalList
 A positional argument class that pushes the found values into a list. More...
 
class  RequiredError
 Errors that when a required flag is omitted. More...
 
class  Subparser
 Utility class for building subparsers with coroutines/callbacks. More...
 
class  SubparserError
 (INTERNAL) An exception that emulates coroutine-like control flow for subparsers.
 
class  UsageError
 Errors that occur during usage. More...
 
class  ValidationError
 Errors that are detected from group validation after parsing finishes. More...
 
class  ValueFlag
 An argument-accepting flag class. More...
 
class  ValueFlagBase
 Base class for value-accepting flag options. More...
 
class  ValueFlagList
 An argument-accepting flag class that pushes the found values into a list. More...
 
struct  ValueReader
 A default Reader class for argument classes. More...
 

Enumerations

enum class  Options {
  None = 0x0 , Single = 0x01 , Required = 0x02 , HiddenFromUsage = 0x04 ,
  HiddenFromDescription = 0x08 , Global = 0x10 , KickOut = 0x20 , HiddenFromCompletion = 0x40 ,
  Hidden = HiddenFromUsage | HiddenFromDescription | HiddenFromCompletion
}
 Attributes for flags. More...
 

Functions

template<typename Option >
auto get (Option &option_) -> decltype(option_.Get())
 Getter to grab the value from the argument type.
 
std::string::size_type Glyphs (const std::string &string_)
 (INTERNAL) Count UTF-8 glyphs
 
template<typename T >
bool SafeAdd (T a, T b, T &out)
 Safe addition to prevent integer overflow.
 
template<typename T >
bool SafeMultiply (T a, T b, T &out)
 Safe multiplication to prevent integer overflow.
 
template<typename It >
std::vector< std::string > Wrap (It begin, It end, const std::string::size_type width, std::string::size_type firstlinewidth=0, std::string::size_type firstlineindent=0)
 (INTERNAL) Wrap a vector of words into a vector of lines
 
std::vector< std::string > Wrap (const std::string &in, const std::string::size_type width, std::string::size_type firstlinewidth=0)
 (INTERNAL) Wrap a string into a vector of lines
 
Options operator| (Options lhs, Options rhs)
 
Options operator& (Options lhs, Options rhs)
 
std::ostream & operator<< (std::ostream &os, const ArgumentParser &parser)
 

Detailed Description

contains all the functionality of the args library

Enumeration Type Documentation

◆ Options

enum class args::Options
strong

Attributes for flags.

Enumerator
None 

Default options.

Single 

Flag can't be passed multiple times.

Required 

Flag can't be omitted.

HiddenFromUsage 

Flag is excluded from usage line.

HiddenFromDescription 

Flag is excluded from options help.

Global 

Flag is global and can be used in any subcommand.

KickOut 

Flag stops a parser.

HiddenFromCompletion 

Flag is excluded from auto completion.

Hidden 

Flag is excluded from options help and usage line.

Function Documentation

◆ get()

template<typename Option >
auto args::get ( Option &  option_) -> decltype(option_.Get())

Getter to grab the value from the argument type.

If the Get() function of the type returns a reference, so does this, and the value will be modifiable.

◆ Glyphs()

std::string::size_type args::Glyphs ( const std::string &  string_)
inline

(INTERNAL) Count UTF-8 glyphs

This is not reliable, and will fail for combinatory glyphs, but it's good enough here for now.

Parameters
stringThe string to count glyphs from
Returns
The UTF-8 glyphs in the string

◆ SafeAdd()

template<typename T >
bool args::SafeAdd ( a,
b,
T &  out 
)

Safe addition to prevent integer overflow.

Returns true if the addition is successful, false if it would overflow.

◆ SafeMultiply()

template<typename T >
bool args::SafeMultiply ( a,
b,
T &  out 
)

Safe multiplication to prevent integer overflow.

Returns true if the multiplication is successful, false if it would overflow.

◆ Wrap() [1/2]

std::vector< std::string > args::Wrap ( const std::string &  in,
const std::string::size_type  width,
std::string::size_type  firstlinewidth = 0 
)
inline

(INTERNAL) Wrap a string into a vector of lines

This is quick and hacky, but works well enough. You can specify a different width for the first line

Parameters
widthThe width of the body
firstlinewidthe width of the first line, defaults to the width of the body
Returns
the vector of lines

◆ Wrap() [2/2]

template<typename It >
std::vector< std::string > args::Wrap ( It  begin,
It  end,
const std::string::size_type  width,
std::string::size_type  firstlinewidth = 0,
std::string::size_type  firstlineindent = 0 
)
inline

(INTERNAL) Wrap a vector of words into a vector of lines

Empty words are skipped. Word "\n" forces wrapping.

Parameters
beginThe begin iterator
endThe end iterator
widthThe width of the body
firstlinewidththe width of the first line, defaults to the width of the body
firstlineindentthe indent of the first line, defaults to 0
Returns
the vector of lines