diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 21:59:52 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 21:59:52 +0000 | 
| commit | 435933dd67752b0d68c320107a5e69435a6f20ec (patch) | |
| tree | d6d182de35e23e0da238fad40b066bab6a712352 /contrib/llvm/tools/lldb/source/Interpreter/OptionValueBoolean.cpp | |
| parent | 1189dbaa8c30085bd4f9cc7759a459160bcf2375 (diff) | |
| parent | 14f1b3e8826ce43b978db93a62d1166055db5394 (diff) | |
Notes
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 dae1f4b7a76d..85799fe3cd4c 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(); +}  | 
