Bash++
Bash++ compiler internal documentation
Public Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Static Private Attributes | List of all members
XGetOpt::OptionParser< Options > Class Template Reference

Parses command-line arguments based on a set of defined options. More...

#include <xgetopt.h>

Collaboration diagram for XGetOpt::OptionParser< Options >:
Collaboration graph
[legend]

Public Member Functions

constexpr std::string_view getHelpString () const
 Get the compile-time generated help string.
 
constexpr const OptionArraygetOptions () const
 
OptionSequence parse (int argc, char *argv[]) const
 Parse command-line arguments according to the defined options.
 
template<StopCondition end>
std::pair< OptionSequence, OptionRemainderparse_until (int argc, char *argv[]) const
 Parse command-line arguments until a specified condition is met.
 

Private Types

using OptionArray = std::array< Helpers::OptionView, N >
 

Private Member Functions

template<StopCondition parseUntil>
std::pair< OptionSequence, OptionRemainderparse_impl (int argc, char *argv[]) const
 

Static Private Member Functions

static constexpr std::array< char, 3 *N+2 > build_short_options_ (const OptionArray &opts)
 
static constexpr std::array< struct option, N+1 > build_long_options_ (const OptionArray &opts)
 
static constexpr Helpers::FixedString< help_string_lengthgenerateHelpString (const OptionArray &options)
 

Static Private Attributes

static constexpr size_t N = sizeof...(Options)
 
static constexpr OptionArray options
 
static constexpr size_t help_string_length = Helpers::calculate_help_string_length<N>(options)
 
static constexpr std::array< char, 3 *N+2 > short_options = build_short_options_(options)
 
static constexpr std::array< struct option, N+1 > long_options = build_long_options_(options)
 
static constexpr Helpers::FixedString< help_string_lengthhelp_string = generateHelpString(options)
 

Detailed Description

template<Helpers::option_like... Options>
class XGetOpt::OptionParser< Options >

Parses command-line arguments based on a set of defined options.

Template Parameters
OptionsThe variadic list of option definitions

Member Typedef Documentation

◆ OptionArray

template<Helpers::option_like... Options>
using XGetOpt::OptionParser< Options >::OptionArray = std::array<Helpers::OptionView, N>
private

Member Function Documentation

◆ build_long_options_()

template<Helpers::option_like... Options>
static constexpr std::array< struct option, N+1 > XGetOpt::OptionParser< Options >::build_long_options_ ( const OptionArray opts)
inlinestaticconstexprprivate

◆ build_short_options_()

template<Helpers::option_like... Options>
static constexpr std::array< char, 3 *N+2 > XGetOpt::OptionParser< Options >::build_short_options_ ( const OptionArray opts)
inlinestaticconstexprprivate

◆ generateHelpString()

template<Helpers::option_like... Options>
static constexpr Helpers::FixedString< help_string_length > XGetOpt::OptionParser< Options >::generateHelpString ( const OptionArray options)
inlinestaticconstexprprivate

◆ getHelpString()

template<Helpers::option_like... Options>
constexpr std::string_view XGetOpt::OptionParser< Options >::getHelpString ( ) const
inlineconstexpr

Get the compile-time generated help string.

Returns
constexpr std::string_view The help string for this option parser detailing all options

◆ getOptions()

template<Helpers::option_like... Options>
constexpr const OptionArray & XGetOpt::OptionParser< Options >::getOptions ( ) const
inlineconstexpr

◆ parse()

template<Helpers::option_like... Options>
OptionSequence XGetOpt::OptionParser< Options >::parse ( int  argc,
char *  argv[] 
) const
inline

Parse command-line arguments according to the defined options.

Parameters
argcThe argument count
argvThe argument vector
Returns
OptionSequence The sequence of parsed options and non-option arguments

◆ parse_impl()

template<Helpers::option_like... Options>
template<StopCondition parseUntil>
std::pair< OptionSequence, OptionRemainder > XGetOpt::OptionParser< Options >::parse_impl ( int  argc,
char *  argv[] 
) const
inlineprivate

◆ parse_until()

template<Helpers::option_like... Options>
template<StopCondition end>
std::pair< OptionSequence, OptionRemainder > XGetOpt::OptionParser< Options >::parse_until ( int  argc,
char *  argv[] 
) const
inline

Parse command-line arguments until a specified condition is met.

This overload allows specifying a condition to stop parsing early, such as stopping at the first non-option argument or the first error.

Template Parameters
endThe condition to stop parsing at
Parameters
argcThe argument count
argvThe argument vector
Returns
std::pair<OptionSequence, OptionRemainder> A pair containing the parsed options and the remaining unparsed arguments

Member Data Documentation

◆ help_string

template<Helpers::option_like... Options>
constexpr Helpers::FixedString<help_string_length> XGetOpt::OptionParser< Options >::help_string = generateHelpString(options)
staticconstexprprivate

◆ help_string_length

template<Helpers::option_like... Options>
constexpr size_t XGetOpt::OptionParser< Options >::help_string_length = Helpers::calculate_help_string_length<N>(options)
staticconstexprprivate

◆ long_options

template<Helpers::option_like... Options>
constexpr std::array<struct option, N + 1> XGetOpt::OptionParser< Options >::long_options = build_long_options_(options)
staticconstexprprivate

◆ N

template<Helpers::option_like... Options>
constexpr size_t XGetOpt::OptionParser< Options >::N = sizeof...(Options)
staticconstexprprivate

◆ options

template<Helpers::option_like... Options>
constexpr OptionArray XGetOpt::OptionParser< Options >::options
staticconstexprprivate
Initial value:
Helpers::OptionView{
Options::shortopt,
Helpers::TextView{ Options::longopt.c_str(), Options::longopt.length() },
Helpers::TextView{ Options::description.c_str(), Options::description.length() },
Options::argRequirement,
Helpers::TextView{ Options::argumentPlaceholder.c_str(), Options::argumentPlaceholder.length() }
}...
}}
std::array< Helpers::OptionView, N > OptionArray
Definition xgetopt.h:535
A simple view over a text string.
Definition xgetopt.h:144
constexpr const char * c_str() const
Definition xgetopt.h:150

◆ short_options

template<Helpers::option_like... Options>
constexpr std::array<char, 3*N + 2> XGetOpt::OptionParser< Options >::short_options = build_short_options_(options)
staticconstexprprivate

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