18 const std::vector<std::string> &names);
24 config.value_abstract_type =
40 config.context_tracking.last_write_context =
true;
41 config.context_tracking.data_dependency_context =
58 config.context_tracking.last_write_context =
true;
63 config.maximum_array_index = std::numeric_limits<size_t>::max();
74 config.maximum_array_index = std::numeric_limits<size_t>::max();
81 config.context_tracking.last_write_context =
true;
86 config.maximum_array_index = std::numeric_limits<size_t>::max();
114 {
"up-to-n-elements", 10},
115 {
"every-element", std::numeric_limits<size_t>::max()}};
120 template <
class mappingt>
122 const std::string &option_name,
123 const std::string &bad_argument,
124 const mappingt &mapping)
126 auto option =
"--vsd-" + option_name;
127 auto choices = std::string(
"");
128 for(
auto &kv : mapping)
130 choices += (!choices.empty() ?
"|" :
"");
135 "Unknown argument '" + bad_argument +
"'", option, option +
" " + choices};
140 const std::string &option_name,
144 const auto argument = options.
get_option(option_name);
149 auto selected = mapping.find(argument);
150 if(selected == mapping.end())
154 return selected->second;
159 if(options.
get_option(
"arrays") ==
"up-to-n-elements")
162 if(max_elements != 0)
163 return max_elements - 1;
170 const std::string &option_name,
173 const size_t def = std::numeric_limits<size_t>::max();
174 const auto argument = options.
get_option(option_name);
179 auto selected = mapping.find(argument);
180 if(selected == mapping.end())
184 return selected->second;
189 const std::vector<std::string> &names)
192 for(
auto &name : names)
198 auto choices = std::string(
"");
199 for(
auto &name : names)
201 choices += (!choices.empty() ?
"|" :
"");
202 auto option =
"--vsd-" + name;
207 "Can only use of " + choices};