26#ifndef MYSQL_HARNESS_CONFIG_OPTION_INCLUDED 
   27#define MYSQL_HARNESS_CONFIG_OPTION_INCLUDED 
   41#include "harness_export.h" 
   71                T min_value = std::numeric_limits<T>::min(),
 
   77  using integral_type = std::conditional_t<std::is_same_v<T, bool>, uint8_t, 
T>;
 
   79  integral_type int_result;
 
   82  if (ptr == end && ec == std::errc{}) {
 
   87    if (int_result <= 
static_cast<integral_type
>(max_value) &&
 
   88        int_result >= 
static_cast<integral_type
>(min_value)) {
 
   93  throw std::invalid_argument(option_desc + 
" needs value between " +
 
   96                              std::string(
value) + 
"'");
 
  106                 T min_value = std::numeric_limits<T>::min(),
 
  108  return option_as_int<T>(
value, option_desc, min_value, max_value);
 
  116  constexpr IntOption(
T min_value = std::numeric_limits<T>::min(),
 
  126                              const std::string &option_desc) {
 
  127    if (!
value.has_value()) 
return {};
 
  138template <
typename Option>
 
  144                        const std::string &option_desc) {
 
  148    for (
const auto &element : array) {
 
  149      result.push_back(Option()(element, option_desc));
 
  160                         const std::string & ) {
 
  170    if (
value == 
"true" || 
value == 
"1") 
return true;
 
  171    if (
value == 
"false" || 
value == 
"0") 
return false;
 
  173    throw std::invalid_argument(
 
  174        option_desc + 
" needs a value of either 0, 1, false or true, was '" +
 
  190                        const std::string &option_desc) {
 
  202template <
typename Dur>
 
  209  using __base::__base;
 
  212                           const std::string &option_desc) {
 
  215    return std::chrono::duration_cast<duration_type>(
 
  216        std::chrono::duration<double>(
result));
 
Definition: config_option.h:139
 
value_type operator()(const std::string &value, const std::string &option_desc)
Definition: config_option.h:143
 
std::vector< typename Option::value_type > value_type
Definition: config_option.h:141
 
Definition: config_option.h:165
 
bool value_type
Definition: config_option.h:167
 
bool operator()(const std::string &value, const std::string &option_desc)
Definition: config_option.h:169
 
Definition: config_option.h:203
 
Dur duration_type
Definition: config_option.h:206
 
duration_type operator()(const std::string &value, const std::string &option_desc)
Definition: config_option.h:211
 
Definition: config_option.h:180
 
FloatingPointOption(value_type min_value=0, value_type max_value=std::numeric_limits< value_type >::max())
Definition: config_option.h:184
 
value_type max_value_
Definition: config_option.h:197
 
value_type operator()(const std::string &value, const std::string &option_desc)
Definition: config_option.h:189
 
V value_type
Definition: config_option.h:182
 
value_type min_value_
Definition: config_option.h:196
 
Definition: config_option.h:112
 
std::optional< T > operator()(const std::optional< std::string > &value, const std::string &option_desc)
Definition: config_option.h:125
 
T min_value_
Definition: config_option.h:134
 
T value_type
Definition: config_option.h:114
 
T max_value_
Definition: config_option.h:135
 
constexpr IntOption(T min_value=std::numeric_limits< T >::min(), T max_value=std::numeric_limits< T >::max())
Definition: config_option.h:116
 
T operator()(const std::string &value, const std::string &option_desc)
Definition: config_option.h:120
 
Definition: config_option.h:156
 
std::string operator()(const std::string &value, const std::string &)
Definition: config_option.h:159
 
std::string value_type
Definition: config_option.h:158
 
static void start(mysql_harness::PluginFuncEnv *env)
Definition: http_auth_backend_plugin.cc:180
 
#define T
Definition: jit_executor_value.cc:373
 
static std::string to_string(const LEX_STRING &str)
Definition: lex_string.h:50
 
stdx::expected< T, std::error_code > from_chars(const std::string &value, int base=10)
convert a numeric string to a number.
Definition: destination.cc:61
 
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
 
ValueType max(X &&first)
Definition: gtid.h:103
 
T option_as_uint(const std::string_view &value, const std::string &option_desc, T min_value=std::numeric_limits< T >::min(), T max_value=std::numeric_limits< T >::max())
Get a unsigned integer.
Definition: config_option.h:105
 
HARNESS_EXPORT std::vector< std::string > split_string(const std::string_view &data, const char delimiter, bool allow_empty=true)
Splits a string using a delimiter.
Definition: string_utils.cc:37
 
double HARNESS_EXPORT option_as_double(const std::string &value, const std::string &option_desc, double min_value=0, double max_value=std::numeric_limits< double >::max())
Definition: config_option.cc:34
 
T option_as_int(const std::string_view &value, const std::string &option_desc, T min_value=std::numeric_limits< T >::min(), T max_value=std::numeric_limits< T >::max())
Gets an integer using the given option value.
Definition: config_option.h:70
 
FloatingPointOption< double > DoubleOption
Definition: config_option.h:200
 
struct result result
Definition: result.h:34