diff options
Diffstat (limited to 'source/Interpreter/OptionValue.cpp')
-rw-r--r-- | source/Interpreter/OptionValue.cpp | 1222 |
1 files changed, 555 insertions, 667 deletions
diff --git a/source/Interpreter/OptionValue.cpp b/source/Interpreter/OptionValue.cpp index 8f136a5b1c57..58de32cc6e1a 100644 --- a/source/Interpreter/OptionValue.cpp +++ b/source/Interpreter/OptionValue.cpp @@ -19,720 +19,608 @@ using namespace lldb; using namespace lldb_private; - //------------------------------------------------------------------------- // Get this value as a uint64_t value if it is encoded as a boolean, -// uint64_t or int64_t. Other types will cause "fail_value" to be +// uint64_t or int64_t. Other types will cause "fail_value" to be // returned //------------------------------------------------------------------------- -uint64_t -OptionValue::GetUInt64Value (uint64_t fail_value, bool *success_ptr) -{ - if (success_ptr) - *success_ptr = true; - switch (GetType()) - { - case OptionValue::eTypeBoolean: return static_cast<OptionValueBoolean *>(this)->GetCurrentValue(); - case OptionValue::eTypeSInt64: return static_cast<OptionValueSInt64 *>(this)->GetCurrentValue(); - case OptionValue::eTypeUInt64: return static_cast<OptionValueUInt64 *>(this)->GetCurrentValue(); - default: - break; - } - if (success_ptr) - *success_ptr = false; - return fail_value; -} - -Error -OptionValue::SetSubValue (const ExecutionContext *exe_ctx, - VarSetOperationType op, - const char *name, - const char *value) -{ - Error error; - error.SetErrorStringWithFormat("SetSubValue is not supported"); - return error; -} - - -OptionValueBoolean * -OptionValue::GetAsBoolean () -{ - if (GetType () == OptionValue::eTypeBoolean) - return static_cast<OptionValueBoolean *>(this); - return nullptr; -} - -const OptionValueBoolean * -OptionValue::GetAsBoolean () const -{ - if (GetType () == OptionValue::eTypeBoolean) - return static_cast<const OptionValueBoolean *>(this); - return nullptr; -} - -const OptionValueChar * -OptionValue::GetAsChar () const -{ - if (GetType () == OptionValue::eTypeChar) - return static_cast<const OptionValueChar *>(this); - return nullptr; -} - -OptionValueChar * -OptionValue::GetAsChar () -{ - if (GetType () == OptionValue::eTypeChar) - return static_cast<OptionValueChar *>(this); - return nullptr; -} - -OptionValueFileSpec * -OptionValue::GetAsFileSpec () -{ - if (GetType () == OptionValue::eTypeFileSpec) - return static_cast<OptionValueFileSpec *>(this); - return nullptr; - -} - -const OptionValueFileSpec * -OptionValue::GetAsFileSpec () const -{ - if (GetType () == OptionValue::eTypeFileSpec) - return static_cast<const OptionValueFileSpec *>(this); - return nullptr; - -} - -OptionValueFileSpecList * -OptionValue::GetAsFileSpecList () -{ - if (GetType () == OptionValue::eTypeFileSpecList) - return static_cast<OptionValueFileSpecList *>(this); - return nullptr; - -} - -const OptionValueFileSpecList * -OptionValue::GetAsFileSpecList () const -{ - if (GetType () == OptionValue::eTypeFileSpecList) - return static_cast<const OptionValueFileSpecList *>(this); - return nullptr; - -} - -OptionValueArch * -OptionValue::GetAsArch () -{ - if (GetType () == OptionValue::eTypeArch) - return static_cast<OptionValueArch *>(this); - return nullptr; +uint64_t OptionValue::GetUInt64Value(uint64_t fail_value, bool *success_ptr) { + if (success_ptr) + *success_ptr = true; + switch (GetType()) { + case OptionValue::eTypeBoolean: + return static_cast<OptionValueBoolean *>(this)->GetCurrentValue(); + case OptionValue::eTypeSInt64: + return static_cast<OptionValueSInt64 *>(this)->GetCurrentValue(); + case OptionValue::eTypeUInt64: + return static_cast<OptionValueUInt64 *>(this)->GetCurrentValue(); + default: + break; + } + if (success_ptr) + *success_ptr = false; + return fail_value; +} + +Error OptionValue::SetSubValue(const ExecutionContext *exe_ctx, + VarSetOperationType op, llvm::StringRef name, + llvm::StringRef value) { + Error error; + error.SetErrorStringWithFormat("SetSubValue is not supported"); + return error; +} + +OptionValueBoolean *OptionValue::GetAsBoolean() { + if (GetType() == OptionValue::eTypeBoolean) + return static_cast<OptionValueBoolean *>(this); + return nullptr; +} + +const OptionValueBoolean *OptionValue::GetAsBoolean() const { + if (GetType() == OptionValue::eTypeBoolean) + return static_cast<const OptionValueBoolean *>(this); + return nullptr; +} + +const OptionValueChar *OptionValue::GetAsChar() const { + if (GetType() == OptionValue::eTypeChar) + return static_cast<const OptionValueChar *>(this); + return nullptr; +} + +OptionValueChar *OptionValue::GetAsChar() { + if (GetType() == OptionValue::eTypeChar) + return static_cast<OptionValueChar *>(this); + return nullptr; +} + +OptionValueFileSpec *OptionValue::GetAsFileSpec() { + if (GetType() == OptionValue::eTypeFileSpec) + return static_cast<OptionValueFileSpec *>(this); + return nullptr; } +const OptionValueFileSpec *OptionValue::GetAsFileSpec() const { + if (GetType() == OptionValue::eTypeFileSpec) + return static_cast<const OptionValueFileSpec *>(this); + return nullptr; +} -const OptionValueArch * -OptionValue::GetAsArch () const -{ - if (GetType () == OptionValue::eTypeArch) - return static_cast<const OptionValueArch *>(this); - return nullptr; +OptionValueFileSpecList *OptionValue::GetAsFileSpecList() { + if (GetType() == OptionValue::eTypeFileSpecList) + return static_cast<OptionValueFileSpecList *>(this); + return nullptr; } -OptionValueArray * -OptionValue::GetAsArray () -{ - if (GetType () == OptionValue::eTypeArray) - return static_cast<OptionValueArray *>(this); - return nullptr; +const OptionValueFileSpecList *OptionValue::GetAsFileSpecList() const { + if (GetType() == OptionValue::eTypeFileSpecList) + return static_cast<const OptionValueFileSpecList *>(this); + return nullptr; } +OptionValueArch *OptionValue::GetAsArch() { + if (GetType() == OptionValue::eTypeArch) + return static_cast<OptionValueArch *>(this); + return nullptr; +} -const OptionValueArray * -OptionValue::GetAsArray () const -{ - if (GetType () == OptionValue::eTypeArray) - return static_cast<const OptionValueArray *>(this); - return nullptr; +const OptionValueArch *OptionValue::GetAsArch() const { + if (GetType() == OptionValue::eTypeArch) + return static_cast<const OptionValueArch *>(this); + return nullptr; } -OptionValueArgs * -OptionValue::GetAsArgs () -{ - if (GetType () == OptionValue::eTypeArgs) - return static_cast<OptionValueArgs *>(this); - return nullptr; +OptionValueArray *OptionValue::GetAsArray() { + if (GetType() == OptionValue::eTypeArray) + return static_cast<OptionValueArray *>(this); + return nullptr; } +const OptionValueArray *OptionValue::GetAsArray() const { + if (GetType() == OptionValue::eTypeArray) + return static_cast<const OptionValueArray *>(this); + return nullptr; +} -const OptionValueArgs * -OptionValue::GetAsArgs () const -{ - if (GetType () == OptionValue::eTypeArgs) - return static_cast<const OptionValueArgs *>(this); - return nullptr; +OptionValueArgs *OptionValue::GetAsArgs() { + if (GetType() == OptionValue::eTypeArgs) + return static_cast<OptionValueArgs *>(this); + return nullptr; } -OptionValueDictionary * -OptionValue::GetAsDictionary () -{ - if (GetType () == OptionValue::eTypeDictionary) - return static_cast<OptionValueDictionary *>(this); - return nullptr; +const OptionValueArgs *OptionValue::GetAsArgs() const { + if (GetType() == OptionValue::eTypeArgs) + return static_cast<const OptionValueArgs *>(this); + return nullptr; } -const OptionValueDictionary * -OptionValue::GetAsDictionary () const -{ - if (GetType () == OptionValue::eTypeDictionary) - return static_cast<const OptionValueDictionary *>(this); - return nullptr; +OptionValueDictionary *OptionValue::GetAsDictionary() { + if (GetType() == OptionValue::eTypeDictionary) + return static_cast<OptionValueDictionary *>(this); + return nullptr; } -OptionValueEnumeration * -OptionValue::GetAsEnumeration () -{ - if (GetType () == OptionValue::eTypeEnum) - return static_cast<OptionValueEnumeration *>(this); - return nullptr; +const OptionValueDictionary *OptionValue::GetAsDictionary() const { + if (GetType() == OptionValue::eTypeDictionary) + return static_cast<const OptionValueDictionary *>(this); + return nullptr; } -const OptionValueEnumeration * -OptionValue::GetAsEnumeration () const -{ - if (GetType () == OptionValue::eTypeEnum) - return static_cast<const OptionValueEnumeration *>(this); - return nullptr; +OptionValueEnumeration *OptionValue::GetAsEnumeration() { + if (GetType() == OptionValue::eTypeEnum) + return static_cast<OptionValueEnumeration *>(this); + return nullptr; } -OptionValueFormat * -OptionValue::GetAsFormat () -{ - if (GetType () == OptionValue::eTypeFormat) - return static_cast<OptionValueFormat *>(this); - return nullptr; +const OptionValueEnumeration *OptionValue::GetAsEnumeration() const { + if (GetType() == OptionValue::eTypeEnum) + return static_cast<const OptionValueEnumeration *>(this); + return nullptr; } -const OptionValueFormat * -OptionValue::GetAsFormat () const -{ - if (GetType () == OptionValue::eTypeFormat) - return static_cast<const OptionValueFormat *>(this); - return nullptr; +OptionValueFormat *OptionValue::GetAsFormat() { + if (GetType() == OptionValue::eTypeFormat) + return static_cast<OptionValueFormat *>(this); + return nullptr; } -OptionValueLanguage * -OptionValue::GetAsLanguage () -{ - if (GetType () == OptionValue::eTypeLanguage) - return static_cast<OptionValueLanguage *>(this); - return NULL; +const OptionValueFormat *OptionValue::GetAsFormat() const { + if (GetType() == OptionValue::eTypeFormat) + return static_cast<const OptionValueFormat *>(this); + return nullptr; } -const OptionValueLanguage * -OptionValue::GetAsLanguage () const -{ - if (GetType () == OptionValue::eTypeLanguage) - return static_cast<const OptionValueLanguage *>(this); - return NULL; +OptionValueLanguage *OptionValue::GetAsLanguage() { + if (GetType() == OptionValue::eTypeLanguage) + return static_cast<OptionValueLanguage *>(this); + return NULL; } -OptionValueFormatEntity * -OptionValue::GetAsFormatEntity () -{ - if (GetType () == OptionValue::eTypeFormatEntity) - return static_cast<OptionValueFormatEntity *>(this); - return nullptr; +const OptionValueLanguage *OptionValue::GetAsLanguage() const { + if (GetType() == OptionValue::eTypeLanguage) + return static_cast<const OptionValueLanguage *>(this); + return NULL; } -const OptionValueFormatEntity * -OptionValue::GetAsFormatEntity () const -{ - if (GetType () == OptionValue::eTypeFormatEntity) - return static_cast<const OptionValueFormatEntity *>(this); - return nullptr; +OptionValueFormatEntity *OptionValue::GetAsFormatEntity() { + if (GetType() == OptionValue::eTypeFormatEntity) + return static_cast<OptionValueFormatEntity *>(this); + return nullptr; } -OptionValuePathMappings * -OptionValue::GetAsPathMappings () -{ - if (GetType () == OptionValue::eTypePathMap) - return static_cast<OptionValuePathMappings *>(this); - return nullptr; +const OptionValueFormatEntity *OptionValue::GetAsFormatEntity() const { + if (GetType() == OptionValue::eTypeFormatEntity) + return static_cast<const OptionValueFormatEntity *>(this); + return nullptr; } -const OptionValuePathMappings * -OptionValue::GetAsPathMappings () const -{ - if (GetType () == OptionValue::eTypePathMap) - return static_cast<const OptionValuePathMappings *>(this); - return nullptr; +OptionValuePathMappings *OptionValue::GetAsPathMappings() { + if (GetType() == OptionValue::eTypePathMap) + return static_cast<OptionValuePathMappings *>(this); + return nullptr; } -OptionValueProperties * -OptionValue::GetAsProperties () -{ - if (GetType () == OptionValue::eTypeProperties) - return static_cast<OptionValueProperties *>(this); - return nullptr; +const OptionValuePathMappings *OptionValue::GetAsPathMappings() const { + if (GetType() == OptionValue::eTypePathMap) + return static_cast<const OptionValuePathMappings *>(this); + return nullptr; } -const OptionValueProperties * -OptionValue::GetAsProperties () const -{ - if (GetType () == OptionValue::eTypeProperties) - return static_cast<const OptionValueProperties *>(this); - return nullptr; -} - -OptionValueRegex * -OptionValue::GetAsRegex () -{ - if (GetType () == OptionValue::eTypeRegex) - return static_cast<OptionValueRegex *>(this); - return nullptr; -} - -const OptionValueRegex * -OptionValue::GetAsRegex () const -{ - if (GetType () == OptionValue::eTypeRegex) - return static_cast<const OptionValueRegex *>(this); - return nullptr; -} - -OptionValueSInt64 * -OptionValue::GetAsSInt64 () -{ - if (GetType () == OptionValue::eTypeSInt64) - return static_cast<OptionValueSInt64 *>(this); - return nullptr; -} - -const OptionValueSInt64 * -OptionValue::GetAsSInt64 () const -{ - if (GetType () == OptionValue::eTypeSInt64) - return static_cast<const OptionValueSInt64 *>(this); - return nullptr; -} - -OptionValueString * -OptionValue::GetAsString () -{ - if (GetType () == OptionValue::eTypeString) - return static_cast<OptionValueString *>(this); - return nullptr; -} - -const OptionValueString * -OptionValue::GetAsString () const -{ - if (GetType () == OptionValue::eTypeString) - return static_cast<const OptionValueString *>(this); - return nullptr; -} - -OptionValueUInt64 * -OptionValue::GetAsUInt64 () -{ - if (GetType () == OptionValue::eTypeUInt64) - return static_cast<OptionValueUInt64 *>(this); - return nullptr; -} - -const OptionValueUInt64 * -OptionValue::GetAsUInt64 () const -{ - if (GetType () == OptionValue::eTypeUInt64) - return static_cast<const OptionValueUInt64 *>(this); - return nullptr; -} - -OptionValueUUID * -OptionValue::GetAsUUID () -{ - if (GetType () == OptionValue::eTypeUUID) - return static_cast<OptionValueUUID *>(this); - return nullptr; - -} - -const OptionValueUUID * -OptionValue::GetAsUUID () const -{ - if (GetType () == OptionValue::eTypeUUID) - return static_cast<const OptionValueUUID *>(this); - return nullptr; - -} - -bool -OptionValue::GetBooleanValue (bool fail_value) const -{ - const OptionValueBoolean *option_value = GetAsBoolean (); - if (option_value) - return option_value->GetCurrentValue(); - return fail_value; -} - -bool -OptionValue::SetBooleanValue (bool new_value) -{ - OptionValueBoolean *option_value = GetAsBoolean (); - if (option_value) - { - option_value->SetCurrentValue(new_value); - return true; - } - return false; -} - -char -OptionValue::GetCharValue(char fail_value) const -{ - const OptionValueChar *option_value = GetAsChar(); - if (option_value) - return option_value->GetCurrentValue(); - return fail_value; -} - -char -OptionValue::SetCharValue(char new_value) -{ - OptionValueChar *option_value = GetAsChar(); - if (option_value) - { - option_value->SetCurrentValue(new_value); - return true; - } - return false; -} - -int64_t -OptionValue::GetEnumerationValue (int64_t fail_value) const -{ - const OptionValueEnumeration *option_value = GetAsEnumeration(); - if (option_value) - return option_value->GetCurrentValue(); - return fail_value; -} - -bool -OptionValue::SetEnumerationValue (int64_t value) -{ - OptionValueEnumeration *option_value = GetAsEnumeration(); - if (option_value) - { - option_value->SetCurrentValue(value); - return true; - } - return false; -} - -FileSpec -OptionValue::GetFileSpecValue () const -{ - const OptionValueFileSpec *option_value = GetAsFileSpec (); - if (option_value) - return option_value->GetCurrentValue(); - return FileSpec(); -} - - -bool -OptionValue::SetFileSpecValue (const FileSpec &file_spec) -{ - OptionValueFileSpec *option_value = GetAsFileSpec (); - if (option_value) - { - option_value->SetCurrentValue(file_spec, false); - return true; - } - return false; -} - -FileSpecList -OptionValue::GetFileSpecListValue () const -{ - const OptionValueFileSpecList *option_value = GetAsFileSpecList (); - if (option_value) - return option_value->GetCurrentValue(); - return FileSpecList(); -} - - -lldb::Format -OptionValue::GetFormatValue (lldb::Format fail_value) const -{ - const OptionValueFormat *option_value = GetAsFormat (); - if (option_value) - return option_value->GetCurrentValue(); - return fail_value; -} - -bool -OptionValue::SetFormatValue (lldb::Format new_value) -{ - OptionValueFormat *option_value = GetAsFormat (); - if (option_value) - { - option_value->SetCurrentValue(new_value); - return true; - } - return false; +OptionValueProperties *OptionValue::GetAsProperties() { + if (GetType() == OptionValue::eTypeProperties) + return static_cast<OptionValueProperties *>(this); + return nullptr; +} + +const OptionValueProperties *OptionValue::GetAsProperties() const { + if (GetType() == OptionValue::eTypeProperties) + return static_cast<const OptionValueProperties *>(this); + return nullptr; +} + +OptionValueRegex *OptionValue::GetAsRegex() { + if (GetType() == OptionValue::eTypeRegex) + return static_cast<OptionValueRegex *>(this); + return nullptr; +} + +const OptionValueRegex *OptionValue::GetAsRegex() const { + if (GetType() == OptionValue::eTypeRegex) + return static_cast<const OptionValueRegex *>(this); + return nullptr; +} + +OptionValueSInt64 *OptionValue::GetAsSInt64() { + if (GetType() == OptionValue::eTypeSInt64) + return static_cast<OptionValueSInt64 *>(this); + return nullptr; +} + +const OptionValueSInt64 *OptionValue::GetAsSInt64() const { + if (GetType() == OptionValue::eTypeSInt64) + return static_cast<const OptionValueSInt64 *>(this); + return nullptr; +} + +OptionValueString *OptionValue::GetAsString() { + if (GetType() == OptionValue::eTypeString) + return static_cast<OptionValueString *>(this); + return nullptr; +} + +const OptionValueString *OptionValue::GetAsString() const { + if (GetType() == OptionValue::eTypeString) + return static_cast<const OptionValueString *>(this); + return nullptr; +} + +OptionValueUInt64 *OptionValue::GetAsUInt64() { + if (GetType() == OptionValue::eTypeUInt64) + return static_cast<OptionValueUInt64 *>(this); + return nullptr; +} + +const OptionValueUInt64 *OptionValue::GetAsUInt64() const { + if (GetType() == OptionValue::eTypeUInt64) + return static_cast<const OptionValueUInt64 *>(this); + return nullptr; +} + +OptionValueUUID *OptionValue::GetAsUUID() { + if (GetType() == OptionValue::eTypeUUID) + return static_cast<OptionValueUUID *>(this); + return nullptr; +} + +const OptionValueUUID *OptionValue::GetAsUUID() const { + if (GetType() == OptionValue::eTypeUUID) + return static_cast<const OptionValueUUID *>(this); + return nullptr; +} + +bool OptionValue::GetBooleanValue(bool fail_value) const { + const OptionValueBoolean *option_value = GetAsBoolean(); + if (option_value) + return option_value->GetCurrentValue(); + return fail_value; +} + +bool OptionValue::SetBooleanValue(bool new_value) { + OptionValueBoolean *option_value = GetAsBoolean(); + if (option_value) { + option_value->SetCurrentValue(new_value); + return true; + } + return false; +} + +char OptionValue::GetCharValue(char fail_value) const { + const OptionValueChar *option_value = GetAsChar(); + if (option_value) + return option_value->GetCurrentValue(); + return fail_value; +} + +char OptionValue::SetCharValue(char new_value) { + OptionValueChar *option_value = GetAsChar(); + if (option_value) { + option_value->SetCurrentValue(new_value); + return true; + } + return false; +} + +int64_t OptionValue::GetEnumerationValue(int64_t fail_value) const { + const OptionValueEnumeration *option_value = GetAsEnumeration(); + if (option_value) + return option_value->GetCurrentValue(); + return fail_value; +} + +bool OptionValue::SetEnumerationValue(int64_t value) { + OptionValueEnumeration *option_value = GetAsEnumeration(); + if (option_value) { + option_value->SetCurrentValue(value); + return true; + } + return false; +} + +FileSpec OptionValue::GetFileSpecValue() const { + const OptionValueFileSpec *option_value = GetAsFileSpec(); + if (option_value) + return option_value->GetCurrentValue(); + return FileSpec(); +} + +bool OptionValue::SetFileSpecValue(const FileSpec &file_spec) { + OptionValueFileSpec *option_value = GetAsFileSpec(); + if (option_value) { + option_value->SetCurrentValue(file_spec, false); + return true; + } + return false; +} + +FileSpecList OptionValue::GetFileSpecListValue() const { + const OptionValueFileSpecList *option_value = GetAsFileSpecList(); + if (option_value) + return option_value->GetCurrentValue(); + return FileSpecList(); +} + +lldb::Format OptionValue::GetFormatValue(lldb::Format fail_value) const { + const OptionValueFormat *option_value = GetAsFormat(); + if (option_value) + return option_value->GetCurrentValue(); + return fail_value; +} + +bool OptionValue::SetFormatValue(lldb::Format new_value) { + OptionValueFormat *option_value = GetAsFormat(); + if (option_value) { + option_value->SetCurrentValue(new_value); + return true; + } + return false; } lldb::LanguageType -OptionValue::GetLanguageValue (lldb::LanguageType fail_value) const -{ - const OptionValueLanguage *option_value = GetAsLanguage (); - if (option_value) - return option_value->GetCurrentValue(); - return fail_value; -} - -bool -OptionValue::SetLanguageValue (lldb::LanguageType new_language) -{ - OptionValueLanguage *option_value = GetAsLanguage (); - if (option_value) - { - option_value->SetCurrentValue(new_language); - return true; - } - return false; -} - -const FormatEntity::Entry * -OptionValue::GetFormatEntity () const -{ - const OptionValueFormatEntity *option_value = GetAsFormatEntity(); - if (option_value) - return &option_value->GetCurrentValue(); - return nullptr; -} - -const RegularExpression * -OptionValue::GetRegexValue () const -{ - const OptionValueRegex *option_value = GetAsRegex (); - if (option_value) - return option_value->GetCurrentValue(); - return nullptr; -} - - -int64_t -OptionValue::GetSInt64Value (int64_t fail_value) const -{ - const OptionValueSInt64 *option_value = GetAsSInt64 (); - if (option_value) - return option_value->GetCurrentValue(); - return fail_value; -} - -bool -OptionValue::SetSInt64Value (int64_t new_value) -{ - OptionValueSInt64 *option_value = GetAsSInt64 (); - if (option_value) - { - option_value->SetCurrentValue(new_value); - return true; - } - return false; -} - -const char * -OptionValue::GetStringValue (const char *fail_value) const -{ - const OptionValueString *option_value = GetAsString (); - if (option_value) - return option_value->GetCurrentValue(); - return fail_value; -} - -bool -OptionValue::SetStringValue (const char *new_value) -{ - OptionValueString *option_value = GetAsString (); - if (option_value) - { - option_value->SetCurrentValue(new_value); - return true; - } - return false; -} - -uint64_t -OptionValue::GetUInt64Value (uint64_t fail_value) const -{ - const OptionValueUInt64 *option_value = GetAsUInt64 (); - if (option_value) - return option_value->GetCurrentValue(); - return fail_value; -} - -bool -OptionValue::SetUInt64Value (uint64_t new_value) -{ - OptionValueUInt64 *option_value = GetAsUInt64 (); - if (option_value) - { - option_value->SetCurrentValue(new_value); - return true; - } - return false; -} - -UUID -OptionValue::GetUUIDValue () const -{ - const OptionValueUUID *option_value = GetAsUUID(); - if (option_value) - return option_value->GetCurrentValue(); - return UUID(); -} - -bool -OptionValue::SetUUIDValue (const UUID &uuid) -{ - OptionValueUUID *option_value = GetAsUUID(); - if (option_value) - { - option_value->SetCurrentValue(uuid); - return true; - } - return false; -} - -const char * -OptionValue::GetBuiltinTypeAsCString (Type t) -{ - switch (t) - { - case eTypeInvalid: return "invalid"; - case eTypeArch: return "arch"; - case eTypeArgs: return "arguments"; - case eTypeArray: return "array"; - case eTypeBoolean: return "boolean"; - case eTypeChar: - return "char"; - case eTypeDictionary: return "dictionary"; - case eTypeEnum: return "enum"; - case eTypeFileSpec: return "file"; - case eTypeFileSpecList: return "file-list"; - case eTypeFormat: return "format"; - case eTypeFormatEntity: return "format-string"; - case eTypeLanguage: return "language"; - case eTypePathMap: return "path-map"; - case eTypeProperties: return "properties"; - case eTypeRegex: return "regex"; - case eTypeSInt64: return "int"; - case eTypeString: return "string"; - case eTypeUInt64: return "unsigned"; - case eTypeUUID: return "uuid"; - } - return nullptr; -} - - -lldb::OptionValueSP -OptionValue::CreateValueFromCStringForTypeMask (const char *value_cstr, uint32_t type_mask, Error &error) -{ - // If only 1 bit is set in the type mask for a dictionary or array - // then we know how to decode a value from a cstring - lldb::OptionValueSP value_sp; - switch (type_mask) - { - case 1u << eTypeArch: value_sp.reset(new OptionValueArch()); break; - case 1u << eTypeBoolean: value_sp.reset(new OptionValueBoolean(false)); break; - case 1u << eTypeChar: value_sp.reset(new OptionValueChar('\0')); break; - case 1u << eTypeFileSpec: value_sp.reset(new OptionValueFileSpec()); break; - case 1u << eTypeFormat: value_sp.reset(new OptionValueFormat(eFormatInvalid)); break; - case 1u << eTypeFormatEntity: value_sp.reset(new OptionValueFormatEntity(NULL)); break; - case 1u << eTypeLanguage: value_sp.reset(new OptionValueLanguage(eLanguageTypeUnknown)); break; - case 1u << eTypeSInt64: value_sp.reset(new OptionValueSInt64()); break; - case 1u << eTypeString: value_sp.reset(new OptionValueString()); break; - case 1u << eTypeUInt64: value_sp.reset(new OptionValueUInt64()); break; - case 1u << eTypeUUID: value_sp.reset(new OptionValueUUID()); break; - } - - if (value_sp) - error = value_sp->SetValueFromString (value_cstr, eVarSetOperationAssign); +OptionValue::GetLanguageValue(lldb::LanguageType fail_value) const { + const OptionValueLanguage *option_value = GetAsLanguage(); + if (option_value) + return option_value->GetCurrentValue(); + return fail_value; +} + +bool OptionValue::SetLanguageValue(lldb::LanguageType new_language) { + OptionValueLanguage *option_value = GetAsLanguage(); + if (option_value) { + option_value->SetCurrentValue(new_language); + return true; + } + return false; +} + +const FormatEntity::Entry *OptionValue::GetFormatEntity() const { + const OptionValueFormatEntity *option_value = GetAsFormatEntity(); + if (option_value) + return &option_value->GetCurrentValue(); + return nullptr; +} + +const RegularExpression *OptionValue::GetRegexValue() const { + const OptionValueRegex *option_value = GetAsRegex(); + if (option_value) + return option_value->GetCurrentValue(); + return nullptr; +} + +int64_t OptionValue::GetSInt64Value(int64_t fail_value) const { + const OptionValueSInt64 *option_value = GetAsSInt64(); + if (option_value) + return option_value->GetCurrentValue(); + return fail_value; +} + +bool OptionValue::SetSInt64Value(int64_t new_value) { + OptionValueSInt64 *option_value = GetAsSInt64(); + if (option_value) { + option_value->SetCurrentValue(new_value); + return true; + } + return false; +} + +llvm::StringRef OptionValue::GetStringValue(llvm::StringRef fail_value) const { + const OptionValueString *option_value = GetAsString(); + if (option_value) + return option_value->GetCurrentValueAsRef(); + return fail_value; +} + +bool OptionValue::SetStringValue(llvm::StringRef new_value) { + OptionValueString *option_value = GetAsString(); + if (option_value) { + option_value->SetCurrentValue(new_value); + return true; + } + return false; +} + +uint64_t OptionValue::GetUInt64Value(uint64_t fail_value) const { + const OptionValueUInt64 *option_value = GetAsUInt64(); + if (option_value) + return option_value->GetCurrentValue(); + return fail_value; +} + +bool OptionValue::SetUInt64Value(uint64_t new_value) { + OptionValueUInt64 *option_value = GetAsUInt64(); + if (option_value) { + option_value->SetCurrentValue(new_value); + return true; + } + return false; +} + +UUID OptionValue::GetUUIDValue() const { + const OptionValueUUID *option_value = GetAsUUID(); + if (option_value) + return option_value->GetCurrentValue(); + return UUID(); +} + +bool OptionValue::SetUUIDValue(const UUID &uuid) { + OptionValueUUID *option_value = GetAsUUID(); + if (option_value) { + option_value->SetCurrentValue(uuid); + return true; + } + return false; +} + +const char *OptionValue::GetBuiltinTypeAsCString(Type t) { + switch (t) { + case eTypeInvalid: + return "invalid"; + case eTypeArch: + return "arch"; + case eTypeArgs: + return "arguments"; + case eTypeArray: + return "array"; + case eTypeBoolean: + return "boolean"; + case eTypeChar: + return "char"; + case eTypeDictionary: + return "dictionary"; + case eTypeEnum: + return "enum"; + case eTypeFileSpec: + return "file"; + case eTypeFileSpecList: + return "file-list"; + case eTypeFormat: + return "format"; + case eTypeFormatEntity: + return "format-string"; + case eTypeLanguage: + return "language"; + case eTypePathMap: + return "path-map"; + case eTypeProperties: + return "properties"; + case eTypeRegex: + return "regex"; + case eTypeSInt64: + return "int"; + case eTypeString: + return "string"; + case eTypeUInt64: + return "unsigned"; + case eTypeUUID: + return "uuid"; + } + return nullptr; +} + +lldb::OptionValueSP OptionValue::CreateValueFromCStringForTypeMask( + const char *value_cstr, uint32_t type_mask, Error &error) { + // If only 1 bit is set in the type mask for a dictionary or array + // then we know how to decode a value from a cstring + lldb::OptionValueSP value_sp; + switch (type_mask) { + case 1u << eTypeArch: + value_sp.reset(new OptionValueArch()); + break; + case 1u << eTypeBoolean: + value_sp.reset(new OptionValueBoolean(false)); + break; + case 1u << eTypeChar: + value_sp.reset(new OptionValueChar('\0')); + break; + case 1u << eTypeFileSpec: + value_sp.reset(new OptionValueFileSpec()); + break; + case 1u << eTypeFormat: + value_sp.reset(new OptionValueFormat(eFormatInvalid)); + break; + case 1u << eTypeFormatEntity: + value_sp.reset(new OptionValueFormatEntity(NULL)); + break; + case 1u << eTypeLanguage: + value_sp.reset(new OptionValueLanguage(eLanguageTypeUnknown)); + break; + case 1u << eTypeSInt64: + value_sp.reset(new OptionValueSInt64()); + break; + case 1u << eTypeString: + value_sp.reset(new OptionValueString()); + break; + case 1u << eTypeUInt64: + value_sp.reset(new OptionValueUInt64()); + break; + case 1u << eTypeUUID: + value_sp.reset(new OptionValueUUID()); + break; + } + + if (value_sp) + error = value_sp->SetValueFromString( + llvm::StringRef::withNullAsEmpty(value_cstr), eVarSetOperationAssign); + else + error.SetErrorString("unsupported type mask"); + return value_sp; +} + +bool OptionValue::DumpQualifiedName(Stream &strm) const { + bool dumped_something = false; + lldb::OptionValueSP m_parent_sp(m_parent_wp.lock()); + if (m_parent_sp) { + if (m_parent_sp->DumpQualifiedName(strm)) + dumped_something = true; + } + ConstString name(GetName()); + if (name) { + if (dumped_something) + strm.PutChar('.'); else - error.SetErrorString("unsupported type mask"); - return value_sp; -} - -bool -OptionValue::DumpQualifiedName (Stream &strm) const -{ - bool dumped_something = false; - lldb::OptionValueSP m_parent_sp(m_parent_wp.lock()); - if (m_parent_sp) - { - if (m_parent_sp->DumpQualifiedName(strm)) - dumped_something = true; - } - ConstString name (GetName()); - if (name) - { - if (dumped_something) - strm.PutChar('.'); - else - dumped_something = true; - strm << name; - } - return dumped_something; -} - -size_t -OptionValue::AutoComplete (CommandInterpreter &interpreter, - const char *s, - int match_start_point, - int max_return_elements, - bool &word_complete, - StringList &matches) -{ - word_complete = false; - matches.Clear(); - return matches.GetSize(); -} - -Error -OptionValue::SetValueFromString (llvm::StringRef value, VarSetOperationType op) -{ - Error error; - switch (op) - { - case eVarSetOperationReplace: - error.SetErrorStringWithFormat ("%s objects do not support the 'replace' operation", GetTypeAsCString()); - break; - case eVarSetOperationInsertBefore: - error.SetErrorStringWithFormat ("%s objects do not support the 'insert-before' operation", GetTypeAsCString()); - break; - case eVarSetOperationInsertAfter: - error.SetErrorStringWithFormat ("%s objects do not support the 'insert-after' operation", GetTypeAsCString()); - break; - case eVarSetOperationRemove: - error.SetErrorStringWithFormat ("%s objects do not support the 'remove' operation", GetTypeAsCString()); - break; - case eVarSetOperationAppend: - error.SetErrorStringWithFormat ("%s objects do not support the 'append' operation", GetTypeAsCString()); - break; - case eVarSetOperationClear: - error.SetErrorStringWithFormat ("%s objects do not support the 'clear' operation", GetTypeAsCString()); - break; - case eVarSetOperationAssign: - error.SetErrorStringWithFormat ("%s objects do not support the 'assign' operation", GetTypeAsCString()); - break; - case eVarSetOperationInvalid: - error.SetErrorStringWithFormat ("invalid operation performed on a %s object", GetTypeAsCString()); - break; - } - return error; + dumped_something = true; + strm << name; + } + return dumped_something; +} + +size_t OptionValue::AutoComplete(CommandInterpreter &interpreter, + llvm::StringRef s, int match_start_point, + int max_return_elements, bool &word_complete, + StringList &matches) { + word_complete = false; + matches.Clear(); + return matches.GetSize(); +} + +Error OptionValue::SetValueFromString(llvm::StringRef value, + VarSetOperationType op) { + Error error; + switch (op) { + case eVarSetOperationReplace: + error.SetErrorStringWithFormat( + "%s objects do not support the 'replace' operation", + GetTypeAsCString()); + break; + case eVarSetOperationInsertBefore: + error.SetErrorStringWithFormat( + "%s objects do not support the 'insert-before' operation", + GetTypeAsCString()); + break; + case eVarSetOperationInsertAfter: + error.SetErrorStringWithFormat( + "%s objects do not support the 'insert-after' operation", + GetTypeAsCString()); + break; + case eVarSetOperationRemove: + error.SetErrorStringWithFormat( + "%s objects do not support the 'remove' operation", GetTypeAsCString()); + break; + case eVarSetOperationAppend: + error.SetErrorStringWithFormat( + "%s objects do not support the 'append' operation", GetTypeAsCString()); + break; + case eVarSetOperationClear: + error.SetErrorStringWithFormat( + "%s objects do not support the 'clear' operation", GetTypeAsCString()); + break; + case eVarSetOperationAssign: + error.SetErrorStringWithFormat( + "%s objects do not support the 'assign' operation", GetTypeAsCString()); + break; + case eVarSetOperationInvalid: + error.SetErrorStringWithFormat("invalid operation performed on a %s object", + GetTypeAsCString()); + break; + } + return error; } - |