diff options
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Interpreter/OptionValueBoolean.cpp')
-rw-r--r-- | contrib/llvm/tools/lldb/source/Interpreter/OptionValueBoolean.cpp | 167 |
1 files changed, 64 insertions, 103 deletions
diff --git a/contrib/llvm/tools/lldb/source/Interpreter/OptionValueBoolean.cpp b/contrib/llvm/tools/lldb/source/Interpreter/OptionValueBoolean.cpp index dae1f4b..85799fe 100644 --- a/contrib/llvm/tools/lldb/source/Interpreter/OptionValueBoolean.cpp +++ b/contrib/llvm/tools/lldb/source/Interpreter/OptionValueBoolean.cpp @@ -1,4 +1,4 @@ -//===-- OptionValueBoolean.cpp ------------------------------------*- C++ -*-===// +//===-- OptionValueBoolean.cpp ----------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // @@ -15,123 +15,84 @@ // Project includes #include "lldb/Core/Stream.h" #include "lldb/Core/StringList.h" +#include "lldb/Host/PosixApi.h" #include "lldb/Interpreter/Args.h" #include "llvm/ADT/STLExtras.h" using namespace lldb; using namespace lldb_private; -void -OptionValueBoolean::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) -{ +void OptionValueBoolean::DumpValue(const ExecutionContext *exe_ctx, + Stream &strm, uint32_t dump_mask) { + if (dump_mask & eDumpOptionType) + strm.Printf("(%s)", GetTypeAsCString()); + // if (dump_mask & eDumpOptionName) + // DumpQualifiedName (strm); + if (dump_mask & eDumpOptionValue) { if (dump_mask & eDumpOptionType) - strm.Printf ("(%s)", GetTypeAsCString ()); -// if (dump_mask & eDumpOptionName) -// DumpQualifiedName (strm); - if (dump_mask & eDumpOptionValue) - { - if (dump_mask & eDumpOptionType) - strm.PutCString (" = "); - strm.PutCString (m_current_value ? "true" : "false"); - } + strm.PutCString(" = "); + strm.PutCString(m_current_value ? "true" : "false"); + } } -Error -OptionValueBoolean::SetValueFromString (llvm::StringRef value_str, - VarSetOperationType op) -{ - Error error; - switch (op) - { - case eVarSetOperationClear: - Clear(); - NotifyValueChanged(); - break; - - case eVarSetOperationReplace: - case eVarSetOperationAssign: - { - bool success = false; - bool value = Args::StringToBoolean(value_str.str().c_str(), false, &success); - if (success) - { - m_value_was_set = true; - m_current_value = value; - NotifyValueChanged(); - } - else - { - if (value_str.size() == 0) - error.SetErrorString ("invalid boolean string value <empty>"); - else - error.SetErrorStringWithFormat ("invalid boolean string value: '%s'", - value_str.str().c_str()); - } - } - break; +Error OptionValueBoolean::SetValueFromString(llvm::StringRef value_str, + VarSetOperationType op) { + Error error; + switch (op) { + case eVarSetOperationClear: + Clear(); + NotifyValueChanged(); + break; - case eVarSetOperationInsertBefore: - case eVarSetOperationInsertAfter: - case eVarSetOperationRemove: - case eVarSetOperationAppend: - case eVarSetOperationInvalid: - error = OptionValue::SetValueFromString (value_str, op); - break; + case eVarSetOperationReplace: + case eVarSetOperationAssign: { + bool success = false; + bool value = Args::StringToBoolean(value_str, false, &success); + if (success) { + m_value_was_set = true; + m_current_value = value; + NotifyValueChanged(); + } else { + if (value_str.size() == 0) + error.SetErrorString("invalid boolean string value <empty>"); + else + error.SetErrorStringWithFormat("invalid boolean string value: '%s'", + value_str.str().c_str()); } - return error; -} + } break; -lldb::OptionValueSP -OptionValueBoolean::DeepCopy () const -{ - return OptionValueSP(new OptionValueBoolean(*this)); + case eVarSetOperationInsertBefore: + case eVarSetOperationInsertAfter: + case eVarSetOperationRemove: + case eVarSetOperationAppend: + case eVarSetOperationInvalid: + error = OptionValue::SetValueFromString(value_str, op); + break; + } + return error; } -size_t -OptionValueBoolean::AutoComplete (CommandInterpreter &interpreter, - const char *s, - int match_start_point, - int max_return_elements, - bool &word_complete, - StringList &matches) -{ - word_complete = false; - matches.Clear(); - struct StringEntry { - const char *string; - const size_t length; - }; - static const StringEntry g_autocomplete_entries[] = - { - { "true" , 4 }, - { "false", 5 }, - { "on" , 2 }, - { "off" , 3 }, - { "yes" , 3 }, - { "no" , 2 }, - { "1" , 1 }, - { "0" , 1 }, - }; - const size_t k_num_autocomplete_entries = llvm::array_lengthof(g_autocomplete_entries); - - if (s && s[0]) - { - const size_t s_len = strlen(s); - for (size_t i=0; i<k_num_autocomplete_entries; ++i) - { - if (s_len <= g_autocomplete_entries[i].length) - if (::strncasecmp(s, g_autocomplete_entries[i].string, s_len) == 0) - matches.AppendString(g_autocomplete_entries[i].string); - } - } - else - { - // only suggest "true" or "false" by default - for (size_t i=0; i<2; ++i) - matches.AppendString(g_autocomplete_entries[i].string); - } - return matches.GetSize(); +lldb::OptionValueSP OptionValueBoolean::DeepCopy() const { + return OptionValueSP(new OptionValueBoolean(*this)); } +size_t OptionValueBoolean::AutoComplete( + CommandInterpreter &interpreter, llvm::StringRef s, int match_start_point, + int max_return_elements, bool &word_complete, StringList &matches) { + word_complete = false; + matches.Clear(); + static const llvm::StringRef g_autocomplete_entries[] = { + "true", "false", "on", "off", "yes", "no", "1", "0"}; + + auto entries = llvm::makeArrayRef(g_autocomplete_entries); + // only suggest "true" or "false" by default + if (s.empty()) + entries = entries.take_front(2); + for (auto entry : entries) { + if (entry.startswith_lower(s)) + matches.AppendString(entry); + } + return matches.GetSize(); +} |