From 8cef4b0bb4bae8598efa7cd1274e54f534b0f4a4 Mon Sep 17 00:00:00 2001 From: Zachary Turner Date: Fri, 23 Sep 2016 17:48:13 +0000 Subject: [PATCH] Update OptionGroup::SetValue to take StringRef. Then deal with all the fallout. Differential Revision: https://reviews.llvm.org/D24847 llvm-svn: 282265 --- lldb/include/lldb/Interpreter/Args.h | 4 +- .../lldb/Interpreter/OptionGroupArchitecture.h | 3 +- lldb/include/lldb/Interpreter/OptionGroupBoolean.h | 3 +- lldb/include/lldb/Interpreter/OptionGroupFile.h | 6 ++- lldb/include/lldb/Interpreter/OptionGroupFormat.h | 3 +- .../lldb/Interpreter/OptionGroupOutputFile.h | 3 +- .../include/lldb/Interpreter/OptionGroupPlatform.h | 3 +- lldb/include/lldb/Interpreter/OptionGroupString.h | 3 +- lldb/include/lldb/Interpreter/OptionGroupUInt64.h | 3 +- lldb/include/lldb/Interpreter/OptionGroupUUID.h | 3 +- .../Interpreter/OptionGroupValueObjectDisplay.h | 3 +- .../include/lldb/Interpreter/OptionGroupVariable.h | 3 +- .../lldb/Interpreter/OptionGroupWatchpoint.h | 3 +- lldb/include/lldb/Interpreter/OptionValue.h | 3 ++ lldb/include/lldb/Interpreter/OptionValueArch.h | 3 ++ lldb/include/lldb/Interpreter/OptionValueArray.h | 3 ++ lldb/include/lldb/Interpreter/OptionValueBoolean.h | 3 ++ lldb/include/lldb/Interpreter/OptionValueChar.h | 3 ++ .../lldb/Interpreter/OptionValueDictionary.h | 11 ++--- .../lldb/Interpreter/OptionValueEnumeration.h | 3 ++ .../include/lldb/Interpreter/OptionValueFileSpec.h | 3 ++ .../lldb/Interpreter/OptionValueFileSpecList.h | 3 ++ lldb/include/lldb/Interpreter/OptionValueFormat.h | 3 ++ .../lldb/Interpreter/OptionValueFormatEntity.h | 3 ++ .../include/lldb/Interpreter/OptionValueLanguage.h | 3 ++ .../lldb/Interpreter/OptionValuePathMappings.h | 3 ++ .../lldb/Interpreter/OptionValueProperties.h | 3 ++ lldb/include/lldb/Interpreter/OptionValueRegex.h | 3 ++ lldb/include/lldb/Interpreter/OptionValueSInt64.h | 3 ++ lldb/include/lldb/Interpreter/OptionValueString.h | 8 +++- lldb/include/lldb/Interpreter/OptionValueUInt64.h | 6 ++- lldb/include/lldb/Interpreter/OptionValueUUID.h | 3 ++ lldb/include/lldb/Interpreter/Options.h | 4 +- lldb/include/lldb/Target/Language.h | 3 +- lldb/include/lldb/Target/Platform.h | 6 +-- lldb/source/API/SBLanguageRuntime.cpp | 3 +- lldb/source/Commands/CommandObjectBreakpoint.cpp | 19 ++++---- .../Commands/CommandObjectBreakpointCommand.cpp | 3 +- lldb/source/Commands/CommandObjectCommands.cpp | 30 ++++++++----- lldb/source/Commands/CommandObjectExpression.cpp | 51 ++++++++++++---------- lldb/source/Commands/CommandObjectExpression.h | 3 +- lldb/source/Commands/CommandObjectMemory.cpp | 37 ++++++++-------- lldb/source/Commands/CommandObjectPlatform.cpp | 23 +++++----- lldb/source/Commands/CommandObjectRegister.cpp | 3 +- lldb/source/Commands/CommandObjectTarget.cpp | 4 +- lldb/source/Commands/CommandObjectThread.cpp | 5 ++- lldb/source/Commands/CommandObjectType.cpp | 32 ++++++++------ .../Commands/CommandObjectWatchpointCommand.cpp | 5 ++- lldb/source/Interpreter/Args.cpp | 41 +++++++++-------- .../source/Interpreter/OptionGroupArchitecture.cpp | 2 +- lldb/source/Interpreter/OptionGroupBoolean.cpp | 4 +- lldb/source/Interpreter/OptionGroupFile.cpp | 6 +-- lldb/source/Interpreter/OptionGroupFormat.cpp | 30 +++++-------- lldb/source/Interpreter/OptionGroupOutputFile.cpp | 2 +- lldb/source/Interpreter/OptionGroupPlatform.cpp | 12 ++--- lldb/source/Interpreter/OptionGroupString.cpp | 2 +- lldb/source/Interpreter/OptionGroupUInt64.cpp | 2 +- lldb/source/Interpreter/OptionGroupUUID.cpp | 2 +- .../Interpreter/OptionGroupValueObjectDisplay.cpp | 48 ++++++++++---------- lldb/source/Interpreter/OptionGroupVariable.cpp | 2 +- lldb/source/Interpreter/OptionGroupWatchpoint.cpp | 2 +- lldb/source/Interpreter/OptionValue.cpp | 5 ++- lldb/source/Interpreter/OptionValueChar.cpp | 2 +- lldb/source/Interpreter/OptionValueDictionary.cpp | 30 +------------ lldb/source/Interpreter/OptionValueString.cpp | 11 ++--- lldb/source/Interpreter/OptionValueUInt64.cpp | 4 +- lldb/source/Interpreter/Options.cpp | 4 +- lldb/source/Interpreter/Property.cpp | 4 +- lldb/source/Target/Language.cpp | 4 -- lldb/source/Target/Platform.cpp | 6 +-- 70 files changed, 320 insertions(+), 252 deletions(-) diff --git a/lldb/include/lldb/Interpreter/Args.h b/lldb/include/lldb/Interpreter/Args.h index 8eac3c6..035d8d8 100644 --- a/lldb/include/lldb/Interpreter/Args.h +++ b/lldb/include/lldb/Interpreter/Args.h @@ -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); diff --git a/lldb/include/lldb/Interpreter/OptionGroupArchitecture.h b/lldb/include/lldb/Interpreter/OptionGroupArchitecture.h index 8e28b9a..1354324 100644 --- a/lldb/include/lldb/Interpreter/OptionGroupArchitecture.h +++ b/lldb/include/lldb/Interpreter/OptionGroupArchitecture.h @@ -31,8 +31,9 @@ public: llvm::ArrayRef 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; diff --git a/lldb/include/lldb/Interpreter/OptionGroupBoolean.h b/lldb/include/lldb/Interpreter/OptionGroupBoolean.h index 24648a9..931a6d7 100644 --- a/lldb/include/lldb/Interpreter/OptionGroupBoolean.h +++ b/lldb/include/lldb/Interpreter/OptionGroupBoolean.h @@ -38,8 +38,9 @@ public: return llvm::ArrayRef(&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; diff --git a/lldb/include/lldb/Interpreter/OptionGroupFile.h b/lldb/include/lldb/Interpreter/OptionGroupFile.h index ed112b1..93e3ed7 100644 --- a/lldb/include/lldb/Interpreter/OptionGroupFile.h +++ b/lldb/include/lldb/Interpreter/OptionGroupFile.h @@ -37,8 +37,9 @@ public: return llvm::ArrayRef(&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(&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; diff --git a/lldb/include/lldb/Interpreter/OptionGroupFormat.h b/lldb/include/lldb/Interpreter/OptionGroupFormat.h index a387ca5..f3a4203 100644 --- a/lldb/include/lldb/Interpreter/OptionGroupFormat.h +++ b/lldb/include/lldb/Interpreter/OptionGroupFormat.h @@ -43,8 +43,9 @@ public: llvm::ArrayRef 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; diff --git a/lldb/include/lldb/Interpreter/OptionGroupOutputFile.h b/lldb/include/lldb/Interpreter/OptionGroupOutputFile.h index 51384d0..cb891f0 100644 --- a/lldb/include/lldb/Interpreter/OptionGroupOutputFile.h +++ b/lldb/include/lldb/Interpreter/OptionGroupOutputFile.h @@ -31,8 +31,9 @@ public: llvm::ArrayRef 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; diff --git a/lldb/include/lldb/Interpreter/OptionGroupPlatform.h b/lldb/include/lldb/Interpreter/OptionGroupPlatform.h index 467b778..c51ff5c 100644 --- a/lldb/include/lldb/Interpreter/OptionGroupPlatform.h +++ b/lldb/include/lldb/Interpreter/OptionGroupPlatform.h @@ -36,8 +36,9 @@ public: llvm::ArrayRef 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; diff --git a/lldb/include/lldb/Interpreter/OptionGroupString.h b/lldb/include/lldb/Interpreter/OptionGroupString.h index 7cc1b15..21bfc08 100644 --- a/lldb/include/lldb/Interpreter/OptionGroupString.h +++ b/lldb/include/lldb/Interpreter/OptionGroupString.h @@ -35,8 +35,9 @@ public: return llvm::ArrayRef(&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; diff --git a/lldb/include/lldb/Interpreter/OptionGroupUInt64.h b/lldb/include/lldb/Interpreter/OptionGroupUInt64.h index 2683310..3f04eac 100644 --- a/lldb/include/lldb/Interpreter/OptionGroupUInt64.h +++ b/lldb/include/lldb/Interpreter/OptionGroupUInt64.h @@ -36,8 +36,9 @@ public: return llvm::ArrayRef(&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; diff --git a/lldb/include/lldb/Interpreter/OptionGroupUUID.h b/lldb/include/lldb/Interpreter/OptionGroupUUID.h index a2f319e..9a7c6cf 100644 --- a/lldb/include/lldb/Interpreter/OptionGroupUUID.h +++ b/lldb/include/lldb/Interpreter/OptionGroupUUID.h @@ -31,8 +31,9 @@ public: llvm::ArrayRef 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; diff --git a/lldb/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h b/lldb/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h index fa9a993..694464b 100644 --- a/lldb/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h +++ b/lldb/include/lldb/Interpreter/OptionGroupValueObjectDisplay.h @@ -31,8 +31,9 @@ public: llvm::ArrayRef 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; diff --git a/lldb/include/lldb/Interpreter/OptionGroupVariable.h b/lldb/include/lldb/Interpreter/OptionGroupVariable.h index 23f2a04..0735de4 100644 --- a/lldb/include/lldb/Interpreter/OptionGroupVariable.h +++ b/lldb/include/lldb/Interpreter/OptionGroupVariable.h @@ -31,8 +31,9 @@ public: llvm::ArrayRef 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; diff --git a/lldb/include/lldb/Interpreter/OptionGroupWatchpoint.h b/lldb/include/lldb/Interpreter/OptionGroupWatchpoint.h index 803fefd..c67c8f0 100644 --- a/lldb/include/lldb/Interpreter/OptionGroupWatchpoint.h +++ b/lldb/include/lldb/Interpreter/OptionGroupWatchpoint.h @@ -32,8 +32,9 @@ public: llvm::ArrayRef 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; diff --git a/lldb/include/lldb/Interpreter/OptionValue.h b/lldb/include/lldb/Interpreter/OptionValue.h index 3ebaf32..345b65e5 100644 --- a/lldb/include/lldb/Interpreter/OptionValue.h +++ b/lldb/include/lldb/Interpreter/OptionValue.h @@ -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; diff --git a/lldb/include/lldb/Interpreter/OptionValueArch.h b/lldb/include/lldb/Interpreter/OptionValueArch.h index f1f8942..8a165d4 100644 --- a/lldb/include/lldb/Interpreter/OptionValueArch.h +++ b/lldb/include/lldb/Interpreter/OptionValueArch.h @@ -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; diff --git a/lldb/include/lldb/Interpreter/OptionValueArray.h b/lldb/include/lldb/Interpreter/OptionValueArray.h index 39b4b62..5deb983 100644 --- a/lldb/include/lldb/Interpreter/OptionValueArray.h +++ b/lldb/include/lldb/Interpreter/OptionValueArray.h @@ -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(); diff --git a/lldb/include/lldb/Interpreter/OptionValueBoolean.h b/lldb/include/lldb/Interpreter/OptionValueBoolean.h index db631e6..0635907 100644 --- a/lldb/include/lldb/Interpreter/OptionValueBoolean.h +++ b/lldb/include/lldb/Interpreter/OptionValueBoolean.h @@ -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; diff --git a/lldb/include/lldb/Interpreter/OptionValueChar.h b/lldb/include/lldb/Interpreter/OptionValueChar.h index 68379e1..d186447 100644 --- a/lldb/include/lldb/Interpreter/OptionValueChar.h +++ b/lldb/include/lldb/Interpreter/OptionValueChar.h @@ -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; diff --git a/lldb/include/lldb/Interpreter/OptionValueDictionary.h b/lldb/include/lldb/Interpreter/OptionValueDictionary.h index 0a67373..a720d74 100644 --- a/lldb/include/lldb/Interpreter/OptionValueDictionary.h +++ b/lldb/include/lldb/Interpreter/OptionValueDictionary.h @@ -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); diff --git a/lldb/include/lldb/Interpreter/OptionValueEnumeration.h b/lldb/include/lldb/Interpreter/OptionValueEnumeration.h index cd67fdf..736b68e 100644 --- a/lldb/include/lldb/Interpreter/OptionValueEnumeration.h +++ b/lldb/include/lldb/Interpreter/OptionValueEnumeration.h @@ -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; diff --git a/lldb/include/lldb/Interpreter/OptionValueFileSpec.h b/lldb/include/lldb/Interpreter/OptionValueFileSpec.h index 4f60559..e7fc53b 100644 --- a/lldb/include/lldb/Interpreter/OptionValueFileSpec.h +++ b/lldb/include/lldb/Interpreter/OptionValueFileSpec.h @@ -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; diff --git a/lldb/include/lldb/Interpreter/OptionValueFileSpecList.h b/lldb/include/lldb/Interpreter/OptionValueFileSpecList.h index 7157dfa..1e42362 100644 --- a/lldb/include/lldb/Interpreter/OptionValueFileSpecList.h +++ b/lldb/include/lldb/Interpreter/OptionValueFileSpecList.h @@ -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(); diff --git a/lldb/include/lldb/Interpreter/OptionValueFormat.h b/lldb/include/lldb/Interpreter/OptionValueFormat.h index 1f56ef8..5351aec 100644 --- a/lldb/include/lldb/Interpreter/OptionValueFormat.h +++ b/lldb/include/lldb/Interpreter/OptionValueFormat.h @@ -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; diff --git a/lldb/include/lldb/Interpreter/OptionValueFormatEntity.h b/lldb/include/lldb/Interpreter/OptionValueFormatEntity.h index f120645..595bde0 100644 --- a/lldb/include/lldb/Interpreter/OptionValueFormatEntity.h +++ b/lldb/include/lldb/Interpreter/OptionValueFormatEntity.h @@ -38,6 +38,9 @@ public: Error SetValueFromString(llvm::StringRef value, VarSetOperationType op = eVarSetOperationAssign) override; + Error + SetValueFromString(const char *, + VarSetOperationType = eVarSetOperationAssign) = delete; bool Clear() override; diff --git a/lldb/include/lldb/Interpreter/OptionValueLanguage.h b/lldb/include/lldb/Interpreter/OptionValueLanguage.h index 90ffdad..a388a6a 100644 --- a/lldb/include/lldb/Interpreter/OptionValueLanguage.h +++ b/lldb/include/lldb/Interpreter/OptionValueLanguage.h @@ -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; diff --git a/lldb/include/lldb/Interpreter/OptionValuePathMappings.h b/lldb/include/lldb/Interpreter/OptionValuePathMappings.h index 18eba4c..d5336aa 100644 --- a/lldb/include/lldb/Interpreter/OptionValuePathMappings.h +++ b/lldb/include/lldb/Interpreter/OptionValuePathMappings.h @@ -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); diff --git a/lldb/include/lldb/Interpreter/OptionValueProperties.h b/lldb/include/lldb/Interpreter/OptionValueProperties.h index e7339d2..e472b24 100644 --- a/lldb/include/lldb/Interpreter/OptionValueProperties.h +++ b/lldb/include/lldb/Interpreter/OptionValueProperties.h @@ -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; diff --git a/lldb/include/lldb/Interpreter/OptionValueRegex.h b/lldb/include/lldb/Interpreter/OptionValueRegex.h index e30b1b2..7125daf 100644 --- a/lldb/include/lldb/Interpreter/OptionValueRegex.h +++ b/lldb/include/lldb/Interpreter/OptionValueRegex.h @@ -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(); diff --git a/lldb/include/lldb/Interpreter/OptionValueSInt64.h b/lldb/include/lldb/Interpreter/OptionValueSInt64.h index 9cf6ab8..1e1647866 100644 --- a/lldb/include/lldb/Interpreter/OptionValueSInt64.h +++ b/lldb/include/lldb/Interpreter/OptionValueSInt64.h @@ -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; diff --git a/lldb/include/lldb/Interpreter/OptionValueString.h b/lldb/include/lldb/Interpreter/OptionValueString.h index f3caada..5b42003 100644 --- a/lldb/include/lldb/Interpreter/OptionValueString.h +++ b/lldb/include/lldb/Interpreter/OptionValueString.h @@ -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); diff --git a/lldb/include/lldb/Interpreter/OptionValueUInt64.h b/lldb/include/lldb/Interpreter/OptionValueUInt64.h index fb631a2..cbf932b 100644 --- a/lldb/include/lldb/Interpreter/OptionValueUInt64.h +++ b/lldb/include/lldb/Interpreter/OptionValueUInt64.h @@ -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; diff --git a/lldb/include/lldb/Interpreter/OptionValueUUID.h b/lldb/include/lldb/Interpreter/OptionValueUUID.h index 4460e33..b518568 100644 --- a/lldb/include/lldb/Interpreter/OptionValueUUID.h +++ b/lldb/include/lldb/Interpreter/OptionValueUUID.h @@ -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(); diff --git a/lldb/include/lldb/Interpreter/Options.h b/lldb/include/lldb/Interpreter/Options.h index 7e19708..2fecd7c 100644 --- a/lldb/include/lldb/Interpreter/Options.h +++ b/lldb/include/lldb/Interpreter/Options.h @@ -341,8 +341,10 @@ public: virtual llvm::ArrayRef 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; diff --git a/lldb/include/lldb/Target/Language.h b/lldb/include/lldb/Target/Language.h index 7c8a6f0..588d46e 100644 --- a/lldb/include/lldb/Target/Language.h +++ b/lldb/include/lldb/Target/Language.h @@ -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); diff --git a/lldb/include/lldb/Target/Platform.h b/lldb/include/lldb/Target/Platform.h index cb12a9d9..2948f7b 100644 --- a/lldb/include/lldb/Target/Platform.h +++ b/lldb/include/lldb/Target/Platform.h @@ -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; diff --git a/lldb/source/API/SBLanguageRuntime.cpp b/lldb/source/API/SBLanguageRuntime.cpp index c6a96dc..d3b7514 100644 --- a/lldb/source/API/SBLanguageRuntime.cpp +++ b/lldb/source/API/SBLanguageRuntime.cpp @@ -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 * diff --git a/lldb/source/Commands/CommandObjectBreakpoint.cpp b/lldb/source/Commands/CommandObjectBreakpoint.cpp index cb6d1d8..4202068 100644 --- a/lldb/source/Commands/CommandObjectBreakpoint.cpp +++ b/lldb/source/Commands/CommandObjectBreakpoint.cpp @@ -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(); diff --git a/lldb/source/Commands/CommandObjectBreakpointCommand.cpp b/lldb/source/Commands/CommandObjectBreakpointCommand.cpp index e0a146f..f27fb7c 100644 --- a/lldb/source/Commands/CommandObjectBreakpointCommand.cpp +++ b/lldb/source/Commands/CommandObjectBreakpointCommand.cpp @@ -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 || diff --git a/lldb/source/Commands/CommandObjectCommands.cpp b/lldb/source/Commands/CommandObjectCommands.cpp index ed36733..6f465b5 100644 --- a/lldb/source/Commands/CommandObjectCommands.cpp +++ b/lldb/source/Commands/CommandObjectCommands.cpp @@ -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); diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp index 4a041df..11a4721 100644 --- a/lldb/source/Commands/CommandObjectExpression.cpp +++ b/lldb/source/Commands/CommandObjectExpression.cpp @@ -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; } diff --git a/lldb/source/Commands/CommandObjectExpression.h b/lldb/source/Commands/CommandObjectExpression.h index 01593ae..7aacc92 100644 --- a/lldb/source/Commands/CommandObjectExpression.h +++ b/lldb/source/Commands/CommandObjectExpression.h @@ -34,8 +34,9 @@ public: llvm::ArrayRef 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; diff --git a/lldb/source/Commands/CommandObjectMemory.cpp b/lldb/source/Commands/CommandObjectMemory.cpp index c35f7b4..6914b2a 100644 --- a/lldb/source/Commands/CommandObjectMemory.cpp +++ b/lldb/source/Commands/CommandObjectMemory.cpp @@ -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(); diff --git a/lldb/source/Commands/CommandObjectPlatform.cpp b/lldb/source/Commands/CommandObjectPlatform.cpp index bc52af8..702fee9 100644 --- a/lldb/source/Commands/CommandObjectPlatform.cpp +++ b/lldb/source/Commands/CommandObjectPlatform.cpp @@ -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; diff --git a/lldb/source/Commands/CommandObjectRegister.cpp b/lldb/source/Commands/CommandObjectRegister.cpp index fe74d26..89b1188 100644 --- a/lldb/source/Commands/CommandObjectRegister.cpp +++ b/lldb/source/Commands/CommandObjectRegister.cpp @@ -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; diff --git a/lldb/source/Commands/CommandObjectTarget.cpp b/lldb/source/Commands/CommandObjectTarget.cpp index d794c91..635bb0a 100644 --- a/lldb/source/Commands/CommandObjectTarget.cpp +++ b/lldb/source/Commands/CommandObjectTarget.cpp @@ -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: diff --git a/lldb/source/Commands/CommandObjectThread.cpp b/lldb/source/Commands/CommandObjectThread.cpp index 136f003..3e75e64 100644 --- a/lldb/source/Commands/CommandObjectThread.cpp +++ b/lldb/source/Commands/CommandObjectThread.cpp @@ -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) diff --git a/lldb/source/Commands/CommandObjectType.cpp b/lldb/source/Commands/CommandObjectType.cpp index 4f470f0..c2747fd 100644 --- a/lldb/source/Commands/CommandObjectType.cpp +++ b/lldb/source/Commands/CommandObjectType.cpp @@ -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; diff --git a/lldb/source/Commands/CommandObjectWatchpointCommand.cpp b/lldb/source/Commands/CommandObjectWatchpointCommand.cpp index 9377d2a..dadf2a3 100644 --- a/lldb/source/Commands/CommandObjectWatchpointCommand.cpp +++ b/lldb/source/Commands/CommandObjectWatchpointCommand.cpp @@ -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); diff --git a/lldb/source/Interpreter/Args.cpp b/lldb/source/Interpreter/Args.cpp index 6408dab..52fb957 100644 --- a/lldb/source/Interpreter/Args.cpp +++ b/lldb/source/Interpreter/Args.cpp @@ -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; } diff --git a/lldb/source/Interpreter/OptionGroupArchitecture.cpp b/lldb/source/Interpreter/OptionGroupArchitecture.cpp index 2ebd762..51245a8 100644 --- a/lldb/source/Interpreter/OptionGroupArchitecture.cpp +++ b/lldb/source/Interpreter/OptionGroupArchitecture.cpp @@ -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; diff --git a/lldb/source/Interpreter/OptionGroupBoolean.cpp b/lldb/source/Interpreter/OptionGroupBoolean.cpp index 4bc55ee..10b9746 100644 --- a/lldb/source/Interpreter/OptionGroupBoolean.cpp +++ b/lldb/source/Interpreter/OptionGroupBoolean.cpp @@ -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; } diff --git a/lldb/source/Interpreter/OptionGroupFile.cpp b/lldb/source/Interpreter/OptionGroupFile.cpp index 0dc485b..0c0b068 100644 --- a/lldb/source/Interpreter/OptionGroupFile.cpp +++ b/lldb/source/Interpreter/OptionGroupFile.cpp @@ -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; } diff --git a/lldb/source/Interpreter/OptionGroupFormat.cpp b/lldb/source/Interpreter/OptionGroupFormat.cpp index 0e5cd2bf..c97d16a 100644 --- a/lldb/source/Interpreter/OptionGroupFormat.cpp +++ b/lldb/source/Interpreter/OptionGroupFormat.cpp @@ -59,7 +59,7 @@ llvm::ArrayRef 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; } diff --git a/lldb/source/Interpreter/OptionGroupOutputFile.cpp b/lldb/source/Interpreter/OptionGroupOutputFile.cpp index 048036b..b9538fb 100644 --- a/lldb/source/Interpreter/OptionGroupOutputFile.cpp +++ b/lldb/source/Interpreter/OptionGroupOutputFile.cpp @@ -39,7 +39,7 @@ llvm::ArrayRef 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; diff --git a/lldb/source/Interpreter/OptionGroupPlatform.cpp b/lldb/source/Interpreter/OptionGroupPlatform.cpp index 7958d34..6231162 100644 --- a/lldb/source/Interpreter/OptionGroupPlatform.cpp +++ b/lldb/source/Interpreter/OptionGroupPlatform.cpp @@ -93,14 +93,13 @@ llvm::ArrayRef 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: diff --git a/lldb/source/Interpreter/OptionGroupString.cpp b/lldb/source/Interpreter/OptionGroupString.cpp index 12d7f49..48a9ff1 100644 --- a/lldb/source/Interpreter/OptionGroupString.cpp +++ b/lldb/source/Interpreter/OptionGroupString.cpp @@ -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; diff --git a/lldb/source/Interpreter/OptionGroupUInt64.cpp b/lldb/source/Interpreter/OptionGroupUInt64.cpp index 4a3d660..a8501fa 100644 --- a/lldb/source/Interpreter/OptionGroupUInt64.cpp +++ b/lldb/source/Interpreter/OptionGroupUInt64.cpp @@ -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; diff --git a/lldb/source/Interpreter/OptionGroupUUID.cpp b/lldb/source/Interpreter/OptionGroupUUID.cpp index ddcbdff..cd6c02a7 100644 --- a/lldb/source/Interpreter/OptionGroupUUID.cpp +++ b/lldb/source/Interpreter/OptionGroupUUID.cpp @@ -32,7 +32,7 @@ llvm::ArrayRef 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; diff --git a/lldb/source/Interpreter/OptionGroupValueObjectDisplay.cpp b/lldb/source/Interpreter/OptionGroupValueObjectDisplay.cpp index 52d0565..96190e5 100644 --- a/lldb/source/Interpreter/OptionGroupValueObjectDisplay.cpp +++ b/lldb/source/Interpreter/OptionGroupValueObjectDisplay.cpp @@ -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: diff --git a/lldb/source/Interpreter/OptionGroupVariable.cpp b/lldb/source/Interpreter/OptionGroupVariable.cpp index e60daac..c257506 100644 --- a/lldb/source/Interpreter/OptionGroupVariable.cpp +++ b/lldb/source/Interpreter/OptionGroupVariable.cpp @@ -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) diff --git a/lldb/source/Interpreter/OptionGroupWatchpoint.cpp b/lldb/source/Interpreter/OptionGroupWatchpoint.cpp index f69dae6..cda934b 100644 --- a/lldb/source/Interpreter/OptionGroupWatchpoint.cpp +++ b/lldb/source/Interpreter/OptionGroupWatchpoint.cpp @@ -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; diff --git a/lldb/source/Interpreter/OptionValue.cpp b/lldb/source/Interpreter/OptionValue.cpp index 0c1f21f..1d472e3 100644 --- a/lldb/source/Interpreter/OptionValue.cpp +++ b/lldb/source/Interpreter/OptionValue.cpp @@ -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; diff --git a/lldb/source/Interpreter/OptionValueChar.cpp b/lldb/source/Interpreter/OptionValueChar.cpp index bfc39ae..6423185 100644 --- a/lldb/source/Interpreter/OptionValueChar.cpp +++ b/lldb/source/Interpreter/OptionValueChar.cpp @@ -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; diff --git a/lldb/source/Interpreter/OptionValueDictionary.cpp b/lldb/source/Interpreter/OptionValueDictionary.cpp index da68a68..c844d22 100644 --- a/lldb/source/Interpreter/OptionValueDictionary.cpp +++ b/lldb/source/Interpreter/OptionValueDictionary.cpp @@ -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) { diff --git a/lldb/source/Interpreter/OptionValueString.cpp b/lldb/source/Interpreter/OptionValueString.cpp index d6e05da..e61ead0 100644 --- a/lldb/source/Interpreter/OptionValueString.cpp +++ b/lldb/source/Interpreter/OptionValueString.cpp @@ -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(); } diff --git a/lldb/source/Interpreter/OptionValueUInt64.cpp b/lldb/source/Interpreter/OptionValueUInt64.cpp index 8296431..8986080 100644 --- a/lldb/source/Interpreter/OptionValueUInt64.cpp +++ b/lldb/source/Interpreter/OptionValueUInt64.cpp @@ -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; diff --git a/lldb/source/Interpreter/Options.cpp b/lldb/source/Interpreter/Options.cpp index 8b28c6d..f8eadcc 100644 --- a/lldb/source/Interpreter/Options.cpp +++ b/lldb/source/Interpreter/Options.cpp @@ -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... diff --git a/lldb/source/Interpreter/Property.cpp b/lldb/source/Interpreter/Property.cpp index a15b985..ecc411d 100644 --- a/lldb/source/Interpreter/Property.cpp +++ b/lldb/source/Interpreter/Property.cpp @@ -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 diff --git a/lldb/source/Target/Language.cpp b/lldb/source/Target/Language.cpp index 2f11d27..904c187 100644 --- a/lldb/source/Target/Language.cpp +++ b/lldb/source/Target/Language.cpp @@ -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)) diff --git a/lldb/source/Target/Platform.cpp b/lldb/source/Target/Platform.cpp index 575492b..c9e0706 100644 --- a/lldb/source/Target/Platform.cpp +++ b/lldb/source/Target/Platform.cpp @@ -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; -- 2.7.4