Update OptionGroup::SetValue to take StringRef.

Then deal with all the fallout.

Differential Revision: https://reviews.llvm.org/D24847

llvm-svn: 282265
This commit is contained in:
Zachary Turner
2016-09-23 17:48:13 +00:00
parent 6c46efba78
commit 8cef4b0bb4
70 changed files with 320 additions and 252 deletions

View File

@@ -227,6 +227,8 @@ public:
void AddOrReplaceEnvironmentVariable(const char *, const char *) = delete;
bool ContainsEnvironmentVariable(const char *,
size_t * = nullptr) const = delete;
static int64_t StringToOptionEnum(const char *, OptionEnumValueElement *,
int32_t, Error &) = delete;
//------------------------------------------------------------------
/// Insert the argument value at index \a idx to \a arg_cstr.
@@ -407,7 +409,7 @@ public:
static char StringToChar(llvm::StringRef s, char fail_value,
bool *success_ptr);
static int64_t StringToOptionEnum(const char *s,
static int64_t StringToOptionEnum(llvm::StringRef s,
OptionEnumValueElement *enum_values,
int32_t fail_value, Error &error);

View File

@@ -31,8 +31,9 @@ public:
llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -38,8 +38,9 @@ public:
return llvm::ArrayRef<OptionDefinition>(&m_option_definition, 1);
}
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -37,8 +37,9 @@ public:
return llvm::ArrayRef<OptionDefinition>(&m_option_definition, 1);
}
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;
@@ -69,8 +70,9 @@ public:
return llvm::ArrayRef<OptionDefinition>(&m_option_definition, 1);
}
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -43,8 +43,9 @@ public:
llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -31,8 +31,9 @@ public:
llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -36,8 +36,9 @@ public:
llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -35,8 +35,9 @@ public:
return llvm::ArrayRef<OptionDefinition>(&m_option_definition, 1);
}
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -36,8 +36,9 @@ public:
return llvm::ArrayRef<OptionDefinition>(&m_option_definition, 1);
}
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -31,8 +31,9 @@ public:
llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -31,8 +31,9 @@ public:
llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -31,8 +31,9 @@ public:
llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
Error SetOptionValue(uint32_t option_idx, const char *option_arg,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -32,8 +32,9 @@ public:
llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
Error SetOptionValue(uint32_t option_idx, const char *option_arg,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -92,6 +92,9 @@ public:
virtual Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign);
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
virtual bool Clear() = 0;

View File

@@ -49,6 +49,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_current_value = m_default_value;

View File

@@ -39,6 +39,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_values.clear();

View File

@@ -40,6 +40,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_current_value = m_default_value;

View File

@@ -41,6 +41,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_current_value = m_default_value;

View File

@@ -41,6 +41,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_values.clear();
@@ -71,14 +74,6 @@ public:
Error SetSubValue(const ExecutionContext *exe_ctx, VarSetOperationType op,
const char *name, const char *value) override;
//---------------------------------------------------------------------
// String value getters and setters
//---------------------------------------------------------------------
const char *GetStringValueForKey(const ConstString &key);
bool SetStringValueForKey(const ConstString &key, const char *value,
bool can_replace = true);
bool SetValueForKey(const ConstString &key,
const lldb::OptionValueSP &value_sp,
bool can_replace = true);

View File

@@ -50,6 +50,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_current_value = m_default_value;

View File

@@ -42,6 +42,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_current_value = m_default_value;

View File

@@ -40,6 +40,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_current_value.Clear();

View File

@@ -41,6 +41,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_current_value = m_default_value;

View File

@@ -38,6 +38,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override;

View File

@@ -44,6 +44,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_current_value = m_default_value;

View File

@@ -38,6 +38,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_path_mappings.Clear(m_notify_changes);

View File

@@ -46,6 +46,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
void DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
uint32_t dump_mask) override;

View File

@@ -38,6 +38,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_regex.Clear();

View File

@@ -53,6 +53,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_current_value = m_default_value;

View File

@@ -87,6 +87,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_current_value = m_default_value;
@@ -105,7 +108,7 @@ public:
const Flags &GetOptions() const { return m_options; }
const char *operator=(const char *value) {
SetCurrentValue(value);
SetCurrentValue(llvm::StringRef::withNullAsEmpty(value));
return m_current_value.c_str();
}
@@ -115,7 +118,8 @@ public:
const char *GetDefaultValue() const { return m_default_value.c_str(); }
llvm::StringRef GetDefaultValueAsRef() const { return m_default_value; }
Error SetCurrentValue(const char *value);
Error SetCurrentValue(const char *) = delete;
Error SetCurrentValue(llvm::StringRef value);
Error AppendToCurrentValue(const char *value);

View File

@@ -38,7 +38,8 @@ public:
// string isn't a uint64_t value or any other error occurs, return an
// empty lldb::OptionValueSP and fill error in with the correct stuff.
//---------------------------------------------------------------------
static lldb::OptionValueSP Create(const char *value_cstr, Error &error);
static lldb::OptionValueSP Create(const char *, Error &) = delete;
static lldb::OptionValueSP Create(llvm::StringRef value_str, Error &error);
//---------------------------------------------------------------------
// Virtual subclass pure virtual overrides
//---------------------------------------------------------------------
@@ -51,6 +52,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_current_value = m_default_value;

View File

@@ -39,6 +39,9 @@ public:
Error
SetValueFromString(llvm::StringRef value,
VarSetOperationType op = eVarSetOperationAssign) override;
Error
SetValueFromString(const char *,
VarSetOperationType = eVarSetOperationAssign) = delete;
bool Clear() override {
m_uuid.Clear();

View File

@@ -341,8 +341,10 @@ public:
virtual llvm::ArrayRef<OptionDefinition> GetDefinitions() = 0;
virtual Error SetOptionValue(uint32_t option_idx, const char *option_value,
virtual Error SetOptionValue(uint32_t option_idx,
llvm::StringRef option_value,
ExecutionContext *execution_context) = 0;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
virtual void OptionParsingStarting(ExecutionContext *execution_context) = 0;

View File

@@ -142,7 +142,8 @@ public:
// These are accessors for general information about the Languages lldb knows
// about:
static lldb::LanguageType GetLanguageTypeFromString(const char *string);
static lldb::LanguageType
GetLanguageTypeFromString(const char *string) = delete;
static lldb::LanguageType GetLanguageTypeFromString(llvm::StringRef string);
static const char *GetNameForLanguageType(lldb::LanguageType language);

View File

@@ -1089,7 +1089,7 @@ public:
~OptionGroupPlatformRSync() override = default;
lldb_private::Error
SetOptionValue(uint32_t option_idx, const char *option_value,
SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
void OptionParsingStarting(ExecutionContext *execution_context) override;
@@ -1118,7 +1118,7 @@ public:
~OptionGroupPlatformSSH() override = default;
lldb_private::Error
SetOptionValue(uint32_t option_idx, const char *option_value,
SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
void OptionParsingStarting(ExecutionContext *execution_context) override;
@@ -1145,7 +1145,7 @@ public:
~OptionGroupPlatformCaching() override = default;
lldb_private::Error
SetOptionValue(uint32_t option_idx, const char *option_value,
SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -15,7 +15,8 @@ using namespace lldb_private;
lldb::LanguageType
SBLanguageRuntime::GetLanguageTypeFromString(const char *string) {
return Language::GetLanguageTypeFromString(string);
return Language::GetLanguageTypeFromString(
llvm::StringRef::withNullAsEmpty(string));
}
const char *

View File

@@ -217,7 +217,8 @@ public:
break;
case 'E': {
LanguageType language = Language::GetLanguageTypeFromString(option_arg);
LanguageType language =
Language::GetLanguageTypeFromString(option_strref);
switch (language) {
case eLanguageTypeC89:
@@ -304,7 +305,7 @@ public:
}
case 'L':
m_language = Language::GetLanguageTypeFromString(option_arg);
m_language = Language::GetLanguageTypeFromString(option_strref);
if (m_language == eLanguageTypeUnknown)
error.SetErrorStringWithFormat(
"Unknown language type: '%s' for breakpoint", option_arg);
@@ -1772,28 +1773,29 @@ public:
return llvm::makeArrayRef(g_breakpoint_name_options);
}
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override {
Error error;
const int short_option = g_breakpoint_name_options[option_idx].short_option;
llvm::StringRef option_strref(option_value ? option_value : "");
switch (short_option) {
case 'N':
if (BreakpointID::StringIsBreakpointName(option_strref, error) &&
if (BreakpointID::StringIsBreakpointName(option_value, error) &&
error.Success())
m_name.SetValueFromString(option_strref);
m_name.SetValueFromString(option_value);
break;
case 'B':
if (m_breakpoint.SetValueFromString(option_value).Fail())
error.SetErrorStringWithFormat(
"unrecognized value \"%s\" for breakpoint", option_value);
"unrecognized value \"%s\" for breakpoint",
option_value.str().c_str());
break;
case 'D':
if (m_use_dummy.SetValueFromString(option_value).Fail())
error.SetErrorStringWithFormat(
"unrecognized value \"%s\" for use-dummy", option_value);
"unrecognized value \"%s\" for use-dummy",
option_value.str().c_str());
break;
default:
@@ -1803,6 +1805,7 @@ public:
}
return error;
}
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override {
m_name.Clear();

View File

@@ -301,7 +301,8 @@ are no syntax errors may indicate that a function was declared but never called.
case 's':
m_script_language = (lldb::ScriptLanguage)Args::StringToOptionEnum(
option_arg, g_breakpoint_add_options[option_idx].enum_values,
llvm::StringRef::withNullAsEmpty(option_arg),
g_breakpoint_add_options[option_idx].enum_values,
eScriptLanguageNone, error);
if (m_script_language == eScriptLanguagePython ||

View File

@@ -70,22 +70,25 @@ protected:
ExecutionContext *execution_context) override {
Error error;
const int short_option = m_getopt_table[option_idx].val;
llvm::StringRef option_strref =
llvm::StringRef::withNullAsEmpty(option_arg);
switch (short_option) {
case 'c':
error = m_count.SetValueFromString(option_arg, eVarSetOperationAssign);
error =
m_count.SetValueFromString(option_strref, eVarSetOperationAssign);
break;
case 's':
if (option_arg && strcmp("end", option_arg) == 0) {
m_start_idx.SetCurrentValue(UINT64_MAX);
m_start_idx.SetOptionWasSet();
} else
error = m_start_idx.SetValueFromString(option_arg,
error = m_start_idx.SetValueFromString(option_strref,
eVarSetOperationAssign);
break;
case 'e':
error =
m_stop_idx.SetValueFromString(option_arg, eVarSetOperationAssign);
error = m_stop_idx.SetValueFromString(option_strref,
eVarSetOperationAssign);
break;
case 'C':
m_clear.SetCurrentValue(true);
@@ -260,18 +263,20 @@ protected:
ExecutionContext *execution_context) override {
Error error;
const int short_option = m_getopt_table[option_idx].val;
llvm::StringRef option_strref =
llvm::StringRef::withNullAsEmpty(option_arg);
switch (short_option) {
case 'e':
error = m_stop_on_error.SetValueFromString(option_arg);
error = m_stop_on_error.SetValueFromString(option_strref);
break;
case 'c':
error = m_stop_on_continue.SetValueFromString(option_arg);
error = m_stop_on_continue.SetValueFromString(option_strref);
break;
case 's':
error = m_silent_run.SetValueFromString(option_arg);
error = m_silent_run.SetValueFromString(option_strref);
break;
default:
@@ -371,20 +376,21 @@ protected:
return llvm::makeArrayRef(g_alias_options);
}
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override {
Error error;
const int short_option = GetDefinitions()[option_idx].short_option;
std::string option_str(option_value);
switch (short_option) {
case 'h':
m_help.SetCurrentValue(option_value);
m_help.SetCurrentValue(option_str);
m_help.SetOptionWasSet();
break;
case 'H':
m_long_help.SetCurrentValue(option_value);
m_long_help.SetCurrentValue(option_str);
m_long_help.SetOptionWasSet();
break;
@@ -396,6 +402,7 @@ protected:
return error;
}
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override {
m_help.Clear();
@@ -1645,7 +1652,8 @@ protected:
case 's':
m_synchronicity =
(ScriptedCommandSynchronicity)Args::StringToOptionEnum(
option_arg, GetDefinitions()[option_idx].enum_values, 0, error);
llvm::StringRef::withNullAsEmpty(option_arg),
GetDefinitions()[option_idx].enum_values, 0, error);
if (!error.Success())
error.SetErrorStringWithFormat(
"unrecognized value for synchronicity '%s'", option_arg);

View File

@@ -70,11 +70,10 @@ static OptionDefinition g_expression_options[] = {
};
Error CommandObjectExpression::CommandOptions::SetOptionValue(
uint32_t option_idx, const char *option_arg,
uint32_t option_idx, llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error;
auto option_strref = llvm::StringRef::withNullAsEmpty(option_arg);
const int short_option = GetDefinitions()[option_idx].short_option;
switch (short_option) {
@@ -82,66 +81,68 @@ Error CommandObjectExpression::CommandOptions::SetOptionValue(
language = Language::GetLanguageTypeFromString(option_arg);
if (language == eLanguageTypeUnknown)
error.SetErrorStringWithFormat(
"unknown language type: '%s' for expression", option_arg);
"unknown language type: '%s' for expression",
option_arg.str().c_str());
break;
case 'a': {
bool success;
bool result;
result = Args::StringToBoolean(option_strref, true, &success);
result = Args::StringToBoolean(option_arg, true, &success);
if (!success)
error.SetErrorStringWithFormat(
"invalid all-threads value setting: \"%s\"", option_arg);
"invalid all-threads value setting: \"%s\"",
option_arg.str().c_str());
else
try_all_threads = result;
} break;
case 'i': {
bool success;
bool tmp_value = Args::StringToBoolean(option_strref, true, &success);
bool tmp_value = Args::StringToBoolean(option_arg, true, &success);
if (success)
ignore_breakpoints = tmp_value;
else
error.SetErrorStringWithFormat(
"could not convert \"%s\" to a boolean value.", option_arg);
"could not convert \"%s\" to a boolean value.",
option_arg.str().c_str());
break;
}
case 'j': {
bool success;
bool tmp_value = Args::StringToBoolean(option_strref, true, &success);
bool tmp_value = Args::StringToBoolean(option_arg, true, &success);
if (success)
allow_jit = tmp_value;
else
error.SetErrorStringWithFormat(
"could not convert \"%s\" to a boolean value.", option_arg);
"could not convert \"%s\" to a boolean value.",
option_arg.str().c_str());
break;
}
case 't': {
bool success;
uint32_t result;
result = StringConvert::ToUInt32(option_arg, 0, 0, &success);
if (success)
timeout = result;
else
case 't':
if (option_arg.getAsInteger(0, timeout)) {
timeout = 0;
error.SetErrorStringWithFormat("invalid timeout setting \"%s\"",
option_arg);
} break;
option_arg.str().c_str());
}
break;
case 'u': {
bool success;
bool tmp_value = Args::StringToBoolean(option_strref, true, &success);
bool tmp_value = Args::StringToBoolean(option_arg, true, &success);
if (success)
unwind_on_error = tmp_value;
else
error.SetErrorStringWithFormat(
"could not convert \"%s\" to a boolean value.", option_arg);
"could not convert \"%s\" to a boolean value.",
option_arg.str().c_str());
break;
}
case 'v':
if (!option_arg) {
if (!option_arg.empty()) {
m_verbosity = eLanguageRuntimeDescriptionDisplayVerbosityFull;
break;
}
@@ -150,7 +151,8 @@ Error CommandObjectExpression::CommandOptions::SetOptionValue(
option_arg, GetDefinitions()[option_idx].enum_values, 0, error);
if (!error.Success())
error.SetErrorStringWithFormat(
"unrecognized value for description-verbosity '%s'", option_arg);
"unrecognized value for description-verbosity '%s'",
option_arg.str().c_str());
break;
case 'g':
@@ -165,12 +167,13 @@ Error CommandObjectExpression::CommandOptions::SetOptionValue(
case 'X': {
bool success;
bool tmp_value = Args::StringToBoolean(option_strref, true, &success);
bool tmp_value = Args::StringToBoolean(option_arg, true, &success);
if (success)
auto_apply_fixits = tmp_value ? eLazyBoolYes : eLazyBoolNo;
else
error.SetErrorStringWithFormat(
"could not convert \"%s\" to a boolean value.", option_arg);
"could not convert \"%s\" to a boolean value.",
option_arg.str().c_str());
break;
}

View File

@@ -34,8 +34,9 @@ public:
llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override;
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override;

View File

@@ -73,17 +73,18 @@ public:
return llvm::makeArrayRef(g_read_memory_options);
}
Error SetOptionValue(uint32_t option_idx, const char *option_arg,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override {
Error error;
const int short_option = g_read_memory_options[option_idx].short_option;
switch (short_option) {
case 'l':
error = m_num_per_line.SetValueFromString(option_arg);
error = m_num_per_line.SetValueFromString(option_value);
if (m_num_per_line.GetCurrentValue() == 0)
error.SetErrorStringWithFormat(
"invalid value for --num-per-line option '%s'", option_arg);
"invalid value for --num-per-line option '%s'",
option_value.str().c_str());
break;
case 'b':
@@ -91,7 +92,7 @@ public:
break;
case 't':
error = m_view_as_type.SetValueFromString(option_arg);
error = m_view_as_type.SetValueFromString(option_value);
break;
case 'r':
@@ -99,7 +100,7 @@ public:
break;
case 'E':
error = m_offset.SetValueFromString(option_arg);
error = m_offset.SetValueFromString(option_value);
break;
default:
@@ -109,6 +110,7 @@ public:
}
return error;
}
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override {
m_num_per_line.Clear();
@@ -908,7 +910,7 @@ public:
return llvm::makeArrayRef(g_memory_find_option_table);
}
Error SetOptionValue(uint32_t option_idx, const char *option_arg,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override {
Error error;
const int short_option =
@@ -916,20 +918,20 @@ public:
switch (short_option) {
case 'e':
m_expr.SetValueFromString(option_arg);
m_expr.SetValueFromString(option_value);
break;
case 's':
m_string.SetValueFromString(option_arg);
m_string.SetValueFromString(option_value);
break;
case 'c':
if (m_count.SetValueFromString(option_arg).Fail())
if (m_count.SetValueFromString(option_value).Fail())
error.SetErrorString("unrecognized value for count");
break;
case 'o':
if (m_offset.SetValueFromString(option_arg).Fail())
if (m_offset.SetValueFromString(option_value).Fail())
error.SetErrorString("unrecognized value for dump-offset");
break;
@@ -940,6 +942,7 @@ public:
}
return error;
}
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override {
m_expr.Clear();
@@ -1204,7 +1207,7 @@ public:
return llvm::makeArrayRef(g_memory_write_option_table);
}
Error SetOptionValue(uint32_t option_idx, const char *option_arg,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override {
Error error;
const int short_option =
@@ -1212,20 +1215,19 @@ public:
switch (short_option) {
case 'i':
m_infile.SetFile(option_arg, true);
m_infile.SetFile(option_value, true);
if (!m_infile.Exists()) {
m_infile.Clear();
error.SetErrorStringWithFormat("input file does not exist: '%s'",
option_arg);
option_value.str().c_str());
}
break;
case 'o': {
bool success;
m_infile_offset = StringConvert::ToUInt64(option_arg, 0, 0, &success);
if (!success) {
if (option_value.getAsInteger(0, m_infile_offset)) {
m_infile_offset = 0;
error.SetErrorStringWithFormat("invalid offset string '%s'",
option_arg);
option_value.str().c_str());
}
} break;
@@ -1236,6 +1238,7 @@ public:
}
return error;
}
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override {
m_infile.Clear();

View File

@@ -34,8 +34,10 @@
using namespace lldb;
using namespace lldb_private;
static mode_t ParsePermissionString(const char *permissions) {
if (strlen(permissions) != 9)
static mode_t ParsePermissionString(const char *) = delete;
static mode_t ParsePermissionString(llvm::StringRef permissions) {
if (permissions.size() != 9)
return (mode_t)(-1);
bool user_r, user_w, user_x, group_r, group_w, group_x, world_r, world_w,
world_x;
@@ -76,32 +78,31 @@ static OptionDefinition g_permissions_options[] = {
// clang-format on
};
class OptionPermissions : public lldb_private::OptionGroup {
class OptionPermissions : public OptionGroup {
public:
OptionPermissions() {}
~OptionPermissions() override = default;
lldb_private::Error
SetOptionValue(uint32_t option_idx, const char *option_arg,
SetOptionValue(uint32_t option_idx, llvm::StringRef option_arg,
ExecutionContext *execution_context) override {
Error error;
char short_option = (char)GetDefinitions()[option_idx].short_option;
switch (short_option) {
case 'v': {
bool ok;
uint32_t perms = StringConvert::ToUInt32(option_arg, 777, 8, &ok);
if (!ok)
if (option_arg.getAsInteger(8, m_permissions)) {
m_permissions = 0777;
error.SetErrorStringWithFormat("invalid value for permissions: %s",
option_arg);
else
m_permissions = perms;
option_arg.str().c_str());
}
} break;
case 's': {
mode_t perms = ParsePermissionString(option_arg);
if (perms == (mode_t)-1)
error.SetErrorStringWithFormat("invalid value for permissions: %s",
option_arg);
option_arg.str().c_str());
else
m_permissions = perms;
} break;

View File

@@ -260,7 +260,7 @@ protected:
alternate_name.Clear();
}
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override {
Error error;
const int short_option = GetDefinitions()[option_idx].short_option;
@@ -294,6 +294,7 @@ protected:
}
return error;
}
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
// Instance variables to hold the values for command options.
OptionValueArray set_indexes;

View File

@@ -1980,8 +1980,8 @@ public:
switch (short_option) {
case 's':
m_sort_order = (SortOrder)Args::StringToOptionEnum(
option_arg, GetDefinitions()[option_idx].enum_values,
eSortOrderNone, error);
llvm::StringRef::withNullAsEmpty(option_arg),
GetDefinitions()[option_idx].enum_values, eSortOrderNone, error);
break;
default:

View File

@@ -381,7 +381,7 @@ public:
OptionEnumValueElement *enum_values =
GetDefinitions()[option_idx].enum_values;
m_run_mode = (lldb::RunMode)Args::StringToOptionEnum(
option_arg, enum_values, eOnlyDuringStepping, error);
option_strref, enum_values, eOnlyDuringStepping, error);
} break;
case 'e': {
@@ -957,7 +957,8 @@ public:
OptionEnumValueElement *enum_values =
GetDefinitions()[option_idx].enum_values;
lldb::RunMode run_mode = (lldb::RunMode)Args::StringToOptionEnum(
option_arg, enum_values, eOnlyDuringStepping, error);
llvm::StringRef::withNullAsEmpty(option_arg), enum_values,
eOnlyDuringStepping, error);
if (error.Success()) {
if (run_mode == eAllThreads)

View File

@@ -562,7 +562,7 @@ private:
m_custom_type_name.clear();
}
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override {
Error error;
const int short_option =
@@ -571,11 +571,10 @@ private:
switch (short_option) {
case 'C':
m_cascade = Args::StringToBoolean(
llvm::StringRef::withNullAsEmpty(option_value), true, &success);
m_cascade = Args::StringToBoolean(option_value, true, &success);
if (!success)
error.SetErrorStringWithFormat("invalid value for cascade: %s",
option_value);
option_value.str().c_str());
break;
case 'p':
m_skip_pointers = true;
@@ -600,6 +599,7 @@ private:
return error;
}
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
// Instance variables to hold the values for command options.
@@ -784,7 +784,8 @@ protected:
m_category = std::string(option_arg);
break;
case 'l':
m_language = Language::GetLanguageTypeFromString(option_arg);
m_language = Language::GetLanguageTypeFromString(
llvm::StringRef::withNullAsEmpty(option_arg));
break;
default:
error.SetErrorStringWithFormat("unrecognized option '%c'",
@@ -1031,14 +1032,15 @@ class CommandObjectTypeFormatterList : public CommandObjectParsed {
ExecutionContext *execution_context) override {
Error error;
const int short_option = m_getopt_table[option_idx].val;
llvm::StringRef option_strref =
llvm::StringRef::withNullAsEmpty(option_arg);
switch (short_option) {
case 'w':
m_category_regex.SetCurrentValue(option_arg);
m_category_regex.SetCurrentValue(option_strref);
m_category_regex.SetOptionWasSet();
break;
case 'l':
error = m_category_language.SetValueFromString(option_arg);
error = m_category_language.SetValueFromString(option_strref);
if (error.Success())
m_category_language.SetOptionWasSet();
break;
@@ -1814,10 +1816,11 @@ class CommandObjectTypeCategoryDefine : public CommandObjectParsed {
switch (short_option) {
case 'e':
m_define_enabled.SetValueFromString("true");
m_define_enabled.SetValueFromString(llvm::StringRef("true"));
break;
case 'l':
error = m_cate_language.SetValueFromString(option_arg);
error = m_cate_language.SetValueFromString(
llvm::StringRef::withNullAsEmpty(option_arg));
break;
default:
error.SetErrorStringWithFormat("unrecognized option '%c'",
@@ -1920,7 +1923,8 @@ class CommandObjectTypeCategoryEnable : public CommandObjectParsed {
switch (short_option) {
case 'l':
if (option_arg) {
m_language = Language::GetLanguageTypeFromString(option_arg);
m_language = Language::GetLanguageTypeFromString(
llvm::StringRef::withNullAsEmpty(option_arg));
if (m_language == lldb::eLanguageTypeUnknown)
error.SetErrorStringWithFormat("unrecognized language '%s'",
option_arg);
@@ -2097,7 +2101,8 @@ class CommandObjectTypeCategoryDisable : public CommandObjectParsed {
switch (short_option) {
case 'l':
if (option_arg) {
m_language = Language::GetLanguageTypeFromString(option_arg);
m_language = Language::GetLanguageTypeFromString(
llvm::StringRef::withNullAsEmpty(option_arg));
if (m_language == lldb::eLanguageTypeUnknown)
error.SetErrorStringWithFormat("unrecognized language '%s'",
option_arg);
@@ -2802,7 +2807,7 @@ protected:
return llvm::makeArrayRef(g_type_lookup_options);
}
Error SetOptionValue(uint32_t option_idx, const char *option_value,
Error SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
ExecutionContext *execution_context) override {
Error error;
@@ -2825,6 +2830,7 @@ protected:
return error;
}
Error SetOptionValue(uint32_t, const char *, ExecutionContext *) = delete;
void OptionParsingStarting(ExecutionContext *execution_context) override {
m_show_help = false;

View File

@@ -331,8 +331,9 @@ are no syntax errors may indicate that a function was declared but never called.
case 's':
m_script_language = (lldb::ScriptLanguage)Args::StringToOptionEnum(
option_arg, GetDefinitions()[option_idx].enum_values,
eScriptLanguageNone, error);
llvm::StringRef::withNullAsEmpty(option_arg),
GetDefinitions()[option_idx].enum_values, eScriptLanguageNone,
error);
m_use_script_language = (m_script_language == eScriptLanguagePython ||
m_script_language == eScriptLanguageDefault);

View File

@@ -824,29 +824,32 @@ const char *Args::GetShellSafeArgument(const FileSpec &shell,
return safe_arg.c_str();
}
int64_t Args::StringToOptionEnum(const char *s,
int64_t Args::StringToOptionEnum(llvm::StringRef s,
OptionEnumValueElement *enum_values,
int32_t fail_value, Error &error) {
if (enum_values) {
if (s && s[0]) {
for (int i = 0; enum_values[i].string_value != nullptr; i++) {
if (strstr(enum_values[i].string_value, s) ==
enum_values[i].string_value) {
error.Clear();
return enum_values[i].value;
}
}
}
StreamString strm;
strm.PutCString("invalid enumeration value, valid values are: ");
for (int i = 0; enum_values[i].string_value != nullptr; i++) {
strm.Printf("%s\"%s\"", i > 0 ? ", " : "", enum_values[i].string_value);
}
error.SetErrorString(strm.GetData());
} else {
error.Clear();
if (!enum_values) {
error.SetErrorString("invalid enumeration argument");
return fail_value;
}
if (s.empty()) {
error.SetErrorString("empty enumeration string");
return fail_value;
}
for (int i = 0; enum_values[i].string_value != nullptr; i++) {
llvm::StringRef this_enum(enum_values[i].string_value);
if (this_enum.startswith(s))
return enum_values[i].value;
}
StreamString strm;
strm.PutCString("invalid enumeration value, valid values are: ");
for (int i = 0; enum_values[i].string_value != nullptr; i++) {
strm.Printf("%s\"%s\"", i > 0 ? ", " : "", enum_values[i].string_value);
}
error.SetErrorString(strm.GetData());
return fail_value;
}

View File

@@ -42,7 +42,7 @@ bool OptionGroupArchitecture::GetArchitecture(Platform *platform,
}
Error OptionGroupArchitecture::SetOptionValue(
uint32_t option_idx, const char *option_arg,
uint32_t option_idx, llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error;
const int short_option = g_option_table[option_idx].short_option;

View File

@@ -40,7 +40,7 @@ OptionGroupBoolean::OptionGroupBoolean(uint32_t usage_mask, bool required,
OptionGroupBoolean::~OptionGroupBoolean() {}
Error OptionGroupBoolean::SetOptionValue(uint32_t option_idx,
const char *option_arg,
llvm::StringRef option_value,
ExecutionContext *execution_context) {
Error error;
if (m_option_definition.option_has_arg == OptionParser::eNoArgument) {
@@ -49,7 +49,7 @@ Error OptionGroupBoolean::SetOptionValue(uint32_t option_idx,
m_value.SetCurrentValue(!m_value.GetDefaultValue());
m_value.SetOptionWasSet();
} else {
error = m_value.SetValueFromString(option_arg);
error = m_value.SetValueFromString(option_value);
}
return error;
}

View File

@@ -38,7 +38,7 @@ OptionGroupFile::OptionGroupFile(uint32_t usage_mask, bool required,
OptionGroupFile::~OptionGroupFile() {}
Error OptionGroupFile::SetOptionValue(uint32_t option_idx,
const char *option_arg,
llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error(m_file.SetValueFromString(option_arg));
return error;
@@ -69,9 +69,9 @@ OptionGroupFileList::OptionGroupFileList(
OptionGroupFileList::~OptionGroupFileList() {}
Error OptionGroupFileList::SetOptionValue(uint32_t option_idx,
const char *option_arg,
llvm::StringRef option_value,
ExecutionContext *execution_context) {
Error error(m_file_list.SetValueFromString(option_arg));
Error error(m_file_list.SetValueFromString(option_value));
return error;
}

View File

@@ -59,7 +59,7 @@ llvm::ArrayRef<OptionDefinition> OptionGroupFormat::GetDefinitions() {
}
Error OptionGroupFormat::SetOptionValue(uint32_t option_idx,
const char *option_arg,
llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error;
const int short_option = g_option_table[option_idx].short_option;
@@ -76,7 +76,7 @@ Error OptionGroupFormat::SetOptionValue(uint32_t option_idx,
error = m_count.SetValueFromString(option_arg);
if (m_count.GetCurrentValue() == 0)
error.SetErrorStringWithFormat("invalid --count option value '%s'",
option_arg);
option_arg.str().c_str());
}
break;
@@ -87,41 +87,33 @@ Error OptionGroupFormat::SetOptionValue(uint32_t option_idx,
error = m_byte_size.SetValueFromString(option_arg);
if (m_byte_size.GetCurrentValue() == 0)
error.SetErrorStringWithFormat("invalid --size option value '%s'",
option_arg);
option_arg.str().c_str());
}
break;
case 'G': {
char *end = nullptr;
const char *gdb_format_cstr = option_arg;
uint64_t count = 0;
if (::isdigit(gdb_format_cstr[0])) {
count = strtoull(gdb_format_cstr, &end, 0);
if (option_arg != end)
gdb_format_cstr =
end; // We have a valid count, advance the string position
else
count = 0;
}
llvm::StringRef gdb_format_str = option_arg;
gdb_format_str.consumeInteger(0, count);
Format format = eFormatDefault;
uint32_t byte_size = 0;
while (ParserGDBFormatLetter(execution_context, gdb_format_cstr[0], format,
while (!gdb_format_str.empty() &&
ParserGDBFormatLetter(execution_context, gdb_format_str[0], format,
byte_size)) {
++gdb_format_cstr;
gdb_format_str = gdb_format_str.drop_front();
}
// We the first character of the "gdb_format_cstr" is not the
// We the first character of the "gdb_format_str" is not the
// NULL terminator, we didn't consume the entire string and
// something is wrong. Also, if none of the format, size or count
// was specified correctly, then abort.
if (gdb_format_cstr[0] ||
if (!gdb_format_str.empty() ||
(format == eFormatInvalid && byte_size == 0 && count == 0)) {
// Nothing got set correctly
error.SetErrorStringWithFormat("invalid gdb format string '%s'",
option_arg);
option_arg.str().c_str());
return error;
}

View File

@@ -39,7 +39,7 @@ llvm::ArrayRef<OptionDefinition> OptionGroupOutputFile::GetDefinitions() {
}
Error OptionGroupOutputFile::SetOptionValue(
uint32_t option_idx, const char *option_arg,
uint32_t option_idx, llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error;
const int short_option = g_option_table[option_idx].short_option;

View File

@@ -93,14 +93,13 @@ llvm::ArrayRef<OptionDefinition> OptionGroupPlatform::GetDefinitions() {
}
Error OptionGroupPlatform::SetOptionValue(uint32_t option_idx,
const char *option_arg,
llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error;
if (!m_include_platform_option)
++option_idx;
const int short_option = g_option_table[option_idx].short_option;
llvm::StringRef option_strref(option_arg ? option_arg : "");
switch (short_option) {
case 'p':
@@ -108,17 +107,18 @@ Error OptionGroupPlatform::SetOptionValue(uint32_t option_idx,
break;
case 'v':
if (!Args::StringToVersion(option_strref, m_os_version_major,
if (!Args::StringToVersion(option_arg, m_os_version_major,
m_os_version_minor, m_os_version_update))
error.SetErrorStringWithFormat("invalid version string '%s'", option_arg);
error.SetErrorStringWithFormat("invalid version string '%s'",
option_arg.str().c_str());
break;
case 'b':
m_sdk_build.SetCString(option_arg);
m_sdk_build.SetString(option_arg);
break;
case 'S':
m_sdk_sysroot.SetCString(option_arg);
m_sdk_sysroot.SetString(option_arg);
break;
default:

View File

@@ -39,7 +39,7 @@ OptionGroupString::OptionGroupString(uint32_t usage_mask, bool required,
OptionGroupString::~OptionGroupString() {}
Error OptionGroupString::SetOptionValue(uint32_t option_idx,
const char *option_arg,
llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error(m_value.SetValueFromString(option_arg));
return error;

View File

@@ -39,7 +39,7 @@ OptionGroupUInt64::OptionGroupUInt64(uint32_t usage_mask, bool required,
OptionGroupUInt64::~OptionGroupUInt64() {}
Error OptionGroupUInt64::SetOptionValue(uint32_t option_idx,
const char *option_arg,
llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error(m_value.SetValueFromString(option_arg));
return error;

View File

@@ -32,7 +32,7 @@ llvm::ArrayRef<OptionDefinition> OptionGroupUUID::GetDefinitions() {
}
Error OptionGroupUUID::SetOptionValue(uint32_t option_idx,
const char *option_arg,
llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error;
const int short_option = g_option_table[option_idx].short_option;

View File

@@ -77,14 +77,12 @@ OptionGroupValueObjectDisplay::GetDefinitions() {
}
Error OptionGroupValueObjectDisplay::SetOptionValue(
uint32_t option_idx, const char *option_arg,
uint32_t option_idx, llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error;
const int short_option = g_option_table[option_idx].short_option;
bool success = false;
auto option_strref = llvm::StringRef::withNullAsEmpty(option_arg);
switch (short_option) {
case 'd': {
int32_t result;
@@ -113,43 +111,49 @@ Error OptionGroupValueObjectDisplay::SetOptionValue(
break;
case 'D':
max_depth = StringConvert::ToUInt32(option_arg, UINT32_MAX, 0, &success);
if (!success)
error.SetErrorStringWithFormat("invalid max depth '%s'", option_arg);
if (option_arg.getAsInteger(0, max_depth)) {
max_depth = UINT32_MAX;
error.SetErrorStringWithFormat("invalid max depth '%s'",
option_arg.str().c_str());
}
break;
case 'Z':
elem_count = StringConvert::ToUInt32(option_arg, UINT32_MAX, 0, &success);
if (!success)
error.SetErrorStringWithFormat("invalid element count '%s'", option_arg);
if (option_arg.getAsInteger(0, elem_count)) {
elem_count = UINT32_MAX;
error.SetErrorStringWithFormat("invalid element count '%s'",
option_arg.str().c_str());
}
break;
case 'P':
ptr_depth = StringConvert::ToUInt32(option_arg, 0, 0, &success);
if (!success)
error.SetErrorStringWithFormat("invalid pointer depth '%s'", option_arg);
if (option_arg.getAsInteger(0, ptr_depth)) {
ptr_depth = 0;
error.SetErrorStringWithFormat("invalid pointer depth '%s'",
option_arg.str().c_str());
}
break;
case 'Y':
if (option_arg) {
no_summary_depth = StringConvert::ToUInt32(option_arg, 0, 0, &success);
if (!success)
error.SetErrorStringWithFormat("invalid pointer depth '%s'",
option_arg);
} else
if (option_arg.getAsInteger(0, no_summary_depth)) {
no_summary_depth = 1;
error.SetErrorStringWithFormat("invalid pointer depth '%s'",
option_arg.str().c_str());
}
break;
case 'S':
use_synth = Args::StringToBoolean(option_strref, true, &success);
use_synth = Args::StringToBoolean(option_arg, true, &success);
if (!success)
error.SetErrorStringWithFormat("invalid synthetic-type '%s'", option_arg);
error.SetErrorStringWithFormat("invalid synthetic-type '%s'",
option_arg.str().c_str());
break;
case 'V':
run_validator = Args::StringToBoolean(option_strref, true, &success);
run_validator = Args::StringToBoolean(option_arg, true, &success);
if (!success)
error.SetErrorStringWithFormat("invalid validate '%s'", option_arg);
error.SetErrorStringWithFormat("invalid validate '%s'",
option_arg.str().c_str());
break;
default:

View File

@@ -75,7 +75,7 @@ OptionGroupVariable::OptionGroupVariable(bool show_frame_options)
OptionGroupVariable::~OptionGroupVariable() {}
Error OptionGroupVariable::SetOptionValue(uint32_t option_idx,
const char *option_arg,
llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error;
if (!include_frame_options)

View File

@@ -57,7 +57,7 @@ OptionGroupWatchpoint::OptionGroupWatchpoint() : OptionGroup() {}
OptionGroupWatchpoint::~OptionGroupWatchpoint() {}
Error OptionGroupWatchpoint::SetOptionValue(
uint32_t option_idx, const char *option_arg,
uint32_t option_idx, llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error;
const int short_option = g_option_table[option_idx].short_option;

View File

@@ -422,7 +422,7 @@ const char *OptionValue::GetStringValue(const char *fail_value) const {
bool OptionValue::SetStringValue(const char *new_value) {
OptionValueString *option_value = GetAsString();
if (option_value) {
option_value->SetCurrentValue(new_value);
option_value->SetCurrentValue(llvm::StringRef::withNullAsEmpty(new_value));
return true;
}
return false;
@@ -548,7 +548,8 @@ lldb::OptionValueSP OptionValue::CreateValueFromCStringForTypeMask(
}
if (value_sp)
error = value_sp->SetValueFromString(value_cstr, eVarSetOperationAssign);
error = value_sp->SetValueFromString(
llvm::StringRef::withNullAsEmpty(value_cstr), eVarSetOperationAssign);
else
error.SetErrorString("unsupported type mask");
return value_sp;

View File

@@ -57,7 +57,7 @@ Error OptionValueChar::SetValueFromString(llvm::StringRef value,
} break;
default:
error = OptionValue::SetValueFromString(value.str().c_str(), op);
error = OptionValue::SetValueFromString(value, op);
break;
}
return error;

View File

@@ -308,7 +308,8 @@ Error OptionValueDictionary::SetSubValue(const ExecutionContext *exe_ctx,
const bool will_modify = true;
lldb::OptionValueSP value_sp(GetSubValue(exe_ctx, name, will_modify, error));
if (value_sp)
error = value_sp->SetValueFromString(value, op);
error = value_sp->SetValueFromString(
llvm::StringRef::withNullAsEmpty(value), op);
else {
if (error.AsCString() == nullptr)
error.SetErrorStringWithFormat("invalid value path '%s'", name);
@@ -325,33 +326,6 @@ OptionValueDictionary::GetValueForKey(const ConstString &key) const {
return value_sp;
}
const char *
OptionValueDictionary::GetStringValueForKey(const ConstString &key) {
collection::const_iterator pos = m_values.find(key);
if (pos != m_values.end()) {
OptionValueString *string_value = pos->second->GetAsString();
if (string_value)
return string_value->GetCurrentValue();
}
return nullptr;
}
bool OptionValueDictionary::SetStringValueForKey(const ConstString &key,
const char *value,
bool can_replace) {
collection::const_iterator pos = m_values.find(key);
if (pos != m_values.end()) {
if (!can_replace)
return false;
if (pos->second->GetType() == OptionValue::eTypeString) {
pos->second->SetValueFromString(value);
return true;
}
}
m_values[key] = OptionValueSP(new OptionValueString(value));
return true;
}
bool OptionValueDictionary::SetValueForKey(const ConstString &key,
const lldb::OptionValueSP &value_sp,
bool can_replace) {

View File

@@ -114,7 +114,7 @@ Error OptionValueString::SetValueFromString(llvm::StringRef value,
if (m_options.Test(eOptionEncodeCharacterEscapeSequences)) {
Args::EncodeEscapeSequences(value_str.c_str(), m_current_value);
} else {
SetCurrentValue(value_str.c_str());
SetCurrentValue(value_str);
}
NotifyValueChanged();
break;
@@ -126,16 +126,13 @@ lldb::OptionValueSP OptionValueString::DeepCopy() const {
return OptionValueSP(new OptionValueString(*this));
}
Error OptionValueString::SetCurrentValue(const char *value) {
Error OptionValueString::SetCurrentValue(llvm::StringRef value) {
if (m_validator) {
Error error(m_validator(value, m_validator_baton));
Error error(m_validator(value.str().c_str(), m_validator_baton));
if (error.Fail())
return error;
}
if (value && value[0])
m_current_value.assign(value);
else
m_current_value.clear();
m_current_value.assign(value);
return Error();
}

View File

@@ -20,10 +20,10 @@
using namespace lldb;
using namespace lldb_private;
lldb::OptionValueSP OptionValueUInt64::Create(const char *value_cstr,
lldb::OptionValueSP OptionValueUInt64::Create(llvm::StringRef value_str,
Error &error) {
lldb::OptionValueSP value_sp(new OptionValueUInt64());
error = value_sp->SetValueFromString(value_cstr);
error = value_sp->SetValueFromString(value_str);
if (error.Fail())
value_sp.reset();
return value_sp;

View File

@@ -913,8 +913,8 @@ Error OptionGroupOptions::SetOptionValue(uint32_t option_idx,
Error error;
if (option_idx < m_option_infos.size()) {
error = m_option_infos[option_idx].option_group->SetOptionValue(
m_option_infos[option_idx].option_index, option_value,
execution_context);
m_option_infos[option_idx].option_index,
llvm::StringRef::withNullAsEmpty(option_value), execution_context);
} else {
error.SetErrorString("invalid option index"); // Shouldn't happen...

View File

@@ -82,7 +82,9 @@ Property::Property(const PropertyDefinition &definition)
definition.enum_values, definition.default_uint_value);
m_value_sp.reset(enum_value);
if (definition.default_cstr_value) {
if (enum_value->SetValueFromString(definition.default_cstr_value)
if (enum_value
->SetValueFromString(
llvm::StringRef(definition.default_cstr_value))
.Success()) {
enum_value->SetDefaultValue(enum_value->GetCurrentValue());
// Call Clear() since we don't want the value to appear as

View File

@@ -171,10 +171,6 @@ struct language_name_pair language_names[] = {
static uint32_t num_languages =
sizeof(language_names) / sizeof(struct language_name_pair);
LanguageType Language::GetLanguageTypeFromString(const char *s) {
return GetLanguageTypeFromString(llvm::StringRef(s ? s : ""));
}
LanguageType Language::GetLanguageTypeFromString(llvm::StringRef string) {
for (const auto &L : language_names) {
if (string.equals_lower(L.name))

View File

@@ -1401,7 +1401,7 @@ void OptionGroupPlatformRSync::OptionParsingStarting(
lldb_private::Error
OptionGroupPlatformRSync::SetOptionValue(uint32_t option_idx,
const char *option_arg,
llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error;
char short_option = (char)GetDefinitions()[option_idx].short_option;
@@ -1447,7 +1447,7 @@ void OptionGroupPlatformSSH::OptionParsingStarting(
lldb_private::Error
OptionGroupPlatformSSH::SetOptionValue(uint32_t option_idx,
const char *option_arg,
llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error;
char short_option = (char)GetDefinitions()[option_idx].short_option;
@@ -1478,7 +1478,7 @@ void OptionGroupPlatformCaching::OptionParsingStarting(
}
lldb_private::Error OptionGroupPlatformCaching::SetOptionValue(
uint32_t option_idx, const char *option_arg,
uint32_t option_idx, llvm::StringRef option_arg,
ExecutionContext *execution_context) {
Error error;
char short_option = (char)GetDefinitions()[option_idx].short_option;