94 uint32_t option_idx, llvm::StringRef option_arg,
99 switch (short_option) {
101 if (std::optional<uint64_t> bytes =
106 "invalid bytes expression for '%s'", option_arg.str().c_str());
110 if (std::optional<uint64_t> bytes =
115 "invalid bytes expression for '%s'", option_arg.str().c_str());
132 if (option_arg.empty() || option_arg.getAsInteger(0, psb_period) ||
135 "invalid integer value for option '%s'", option_arg.str().c_str());
141 llvm_unreachable(
"Unimplemented option");
174 if (size_expression.empty()) {
177 const uint64_t kBytesMultiplier = 1;
178 const uint64_t kKibiBytesMultiplier = 1024;
179 const uint64_t kMebiBytesMultiplier = 1024 * 1024;
181 DenseMap<StringRef, uint64_t> multipliers = {
182 {
"mib", kMebiBytesMultiplier}, {
"mb", kMebiBytesMultiplier},
183 {
"m", kMebiBytesMultiplier}, {
"kib", kKibiBytesMultiplier},
184 {
"kb", kKibiBytesMultiplier}, {
"k", kKibiBytesMultiplier},
185 {
"b", kBytesMultiplier}, {
"", kBytesMultiplier}};
187 const auto non_digit_index = size_expression.find_first_not_of(
"0123456789");
188 if (non_digit_index == 0) {
192 const llvm::StringRef number_part =
193 non_digit_index == llvm::StringRef::npos
195 : size_expression.substr(0, non_digit_index);
196 uint64_t parsed_number;
197 if (number_part.getAsInteger(10, parsed_number)) {
201 if (non_digit_index != llvm::StringRef::npos) {
202 const auto multiplier = size_expression.substr(non_digit_index).lower();
204 auto it = multipliers.find(multiplier);
205 if (it == multipliers.end())
208 return parsed_number * it->second;
210 return parsed_number;
"lldb/Target/ExecutionContext.h" A class that contains an execution context.