Author: zturner Date: Tue Mar 21 13:25:04 2017 New Revision: 298412 URL: http://llvm.org/viewvc/llvm-project?rev=298412&view=rev Log: Move StringList from Core -> Utility.
Added: lldb/trunk/include/lldb/Utility/StringList.h lldb/trunk/source/Utility/StringList.cpp Removed: lldb/trunk/include/lldb/Core/StringList.h lldb/trunk/source/Core/StringList.cpp Modified: lldb/trunk/include/lldb/Breakpoint/Breakpoint.h lldb/trunk/include/lldb/Breakpoint/BreakpointOptions.h lldb/trunk/include/lldb/Breakpoint/WatchpointOptions.h lldb/trunk/include/lldb/Core/IOHandler.h lldb/trunk/include/lldb/Core/UserSettingsController.h lldb/trunk/include/lldb/Host/Host.h lldb/trunk/include/lldb/Interpreter/CommandInterpreter.h lldb/trunk/include/lldb/Interpreter/CommandObject.h lldb/trunk/source/API/SBStringList.cpp lldb/trunk/source/Breakpoint/BreakpointOptions.cpp lldb/trunk/source/Breakpoint/WatchpointOptions.cpp lldb/trunk/source/Commands/CommandObjectCommands.cpp lldb/trunk/source/Commands/CommandObjectType.cpp lldb/trunk/source/Core/ArchSpec.cpp lldb/trunk/source/Core/CMakeLists.txt lldb/trunk/source/Host/common/Editline.cpp lldb/trunk/source/Host/common/FileSpec.cpp lldb/trunk/source/Interpreter/OptionValue.cpp lldb/trunk/source/Interpreter/OptionValueBoolean.cpp lldb/trunk/source/Interpreter/OptionValueChar.cpp lldb/trunk/source/Interpreter/OptionValueEnumeration.cpp lldb/trunk/source/Interpreter/OptionValueFormatEntity.cpp lldb/trunk/source/Interpreter/OptionValueProperties.cpp lldb/trunk/source/Interpreter/OptionValueUUID.cpp lldb/trunk/source/Interpreter/ScriptInterpreter.cpp lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp lldb/trunk/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h lldb/trunk/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp lldb/trunk/source/Utility/CMakeLists.txt lldb/trunk/unittests/Editline/EditlineTest.cpp lldb/trunk/unittests/Interpreter/TestCompletion.cpp Modified: lldb/trunk/include/lldb/Breakpoint/Breakpoint.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Breakpoint/Breakpoint.h?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/include/lldb/Breakpoint/Breakpoint.h (original) +++ lldb/trunk/include/lldb/Breakpoint/Breakpoint.h Tue Mar 21 13:25:04 2017 @@ -26,8 +26,8 @@ #include "lldb/Breakpoint/Stoppoint.h" #include "lldb/Core/Event.h" #include "lldb/Core/SearchFilter.h" -#include "lldb/Core/StringList.h" #include "lldb/Core/StructuredData.h" +#include "lldb/Utility/StringList.h" namespace lldb_private { Modified: lldb/trunk/include/lldb/Breakpoint/BreakpointOptions.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Breakpoint/BreakpointOptions.h?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/include/lldb/Breakpoint/BreakpointOptions.h (original) +++ lldb/trunk/include/lldb/Breakpoint/BreakpointOptions.h Tue Mar 21 13:25:04 2017 @@ -17,9 +17,9 @@ // Other libraries and framework includes // Project includes -#include "lldb/Core/StringList.h" #include "lldb/Core/StructuredData.h" #include "lldb/Utility/Baton.h" +#include "lldb/Utility/StringList.h" #include "lldb/lldb-private.h" namespace lldb_private { Modified: lldb/trunk/include/lldb/Breakpoint/WatchpointOptions.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Breakpoint/WatchpointOptions.h?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/include/lldb/Breakpoint/WatchpointOptions.h (original) +++ lldb/trunk/include/lldb/Breakpoint/WatchpointOptions.h Tue Mar 21 13:25:04 2017 @@ -17,8 +17,8 @@ // Other libraries and framework includes // Project includes -#include "lldb/Core/StringList.h" #include "lldb/Utility/Baton.h" +#include "lldb/Utility/StringList.h" #include "lldb/lldb-private.h" namespace lldb_private { Modified: lldb/trunk/include/lldb/Core/IOHandler.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/IOHandler.h?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/include/lldb/Core/IOHandler.h (original) +++ lldb/trunk/include/lldb/Core/IOHandler.h Tue Mar 21 13:25:04 2017 @@ -23,12 +23,12 @@ // Project includes #include "lldb/Utility/Flags.h" -#include "lldb/Core/StringList.h" #include "lldb/Core/ValueObjectList.h" #include "lldb/Host/Predicate.h" #include "lldb/Utility/ConstString.h" #include "lldb/Utility/Error.h" #include "lldb/Utility/Stream.h" +#include "lldb/Utility/StringList.h" #include "lldb/lldb-enumerations.h" #include "lldb/lldb-public.h" Removed: lldb/trunk/include/lldb/Core/StringList.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/StringList.h?rev=298411&view=auto ============================================================================== --- lldb/trunk/include/lldb/Core/StringList.h (original) +++ lldb/trunk/include/lldb/Core/StringList.h (removed) @@ -1,139 +0,0 @@ -//===-- StringList.h --------------------------------------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#ifndef liblldb_StringList_h_ -#define liblldb_StringList_h_ - -// C Includes -#include <stdint.h> - -// C++ Includes -#include <string> - -// Other libraries and framework includes -#include "llvm/ADT/StringRef.h" - -// Project includes -#include "lldb/Core/STLUtils.h" -#include "lldb/lldb-forward.h" - -namespace lldb_private { - -class StringList { -public: - StringList(); - - StringList(const char *str); - - StringList(const char **strv, int strc); - - virtual ~StringList(); - - void AppendString(const std::string &s); - - void AppendString(std::string &&s); - - void AppendString(const char *str); - - void AppendString(const char *str, size_t str_len); - - void AppendString(llvm::StringRef str); - - void AppendList(const char **strv, int strc); - - void AppendList(StringList strings); - - size_t GetSize() const; - - void SetSize(size_t n) { m_strings.resize(n); } - - size_t GetMaxStringLength() const; - - std::string &operator[](size_t idx) { - // No bounds checking, verify "idx" is good prior to calling this function - return m_strings[idx]; - } - - const std::string &operator[](size_t idx) const { - // No bounds checking, verify "idx" is good prior to calling this function - return m_strings[idx]; - } - - void PopBack() { m_strings.pop_back(); } - const char *GetStringAtIndex(size_t idx) const; - - void Join(const char *separator, Stream &strm); - - void Clear(); - - void LongestCommonPrefix(std::string &common_prefix); - - void InsertStringAtIndex(size_t idx, const std::string &str); - - void InsertStringAtIndex(size_t idx, std::string &&str); - - void InsertStringAtIndex(size_t id, const char *str); - - void DeleteStringAtIndex(size_t id); - - void RemoveBlankLines(); - - size_t SplitIntoLines(const std::string &lines); - - size_t SplitIntoLines(const char *lines, size_t len); - - std::string CopyList(const char *item_preamble = nullptr, - const char *items_sep = "\n") const; - - StringList &operator<<(const char *str); - - StringList &operator<<(const std::string &s); - - StringList &operator<<(StringList strings); - - // Copy assignment for a vector of strings - StringList &operator=(const std::vector<std::string> &rhs); - - // This string list contains a list of valid auto completion - // strings, and the "s" is passed in. "matches" is filled in - // with zero or more string values that start with "s", and - // the first string to exactly match one of the string - // values in this collection, will have "exact_matches_idx" - // filled in to match the index, or "exact_matches_idx" will - // have SIZE_MAX - size_t AutoComplete(llvm::StringRef s, StringList &matches, - size_t &exact_matches_idx) const; - - // Dump the StringList to the given lldb_private::Log, `log`, one item per - // line. - // If given, `name` will be used to identify the start and end of the list in - // the output. - virtual void LogDump(Log *log, const char *name = nullptr); - - // Static helper to convert an iterable of strings to a StringList, and then - // dump it with the semantics of the `LogDump` method. - template <typename T> - static void LogDump(Log *log, T s_iterable, const char *name = nullptr) { - if (!log) - return; - // Make a copy of the iterable as a StringList - StringList l{}; - for (const auto &s : s_iterable) - l << s; - - l.LogDump(log, name); - } - -private: - STLStringArray m_strings; -}; - -} // namespace lldb_private - -#endif // liblldb_StringList_h_ Modified: lldb/trunk/include/lldb/Core/UserSettingsController.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/UserSettingsController.h?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/include/lldb/Core/UserSettingsController.h (original) +++ lldb/trunk/include/lldb/Core/UserSettingsController.h Tue Mar 21 13:25:04 2017 @@ -19,11 +19,11 @@ // Other libraries and framework includes // Project includes -#include "lldb/Core/StringList.h" #include "lldb/Interpreter/OptionValue.h" #include "lldb/Utility/ConstString.h" #include "lldb/Utility/Stream.h" #include "lldb/Utility/StreamString.h" +#include "lldb/Utility/StringList.h" #include "lldb/lldb-private.h" namespace lldb_private { Modified: lldb/trunk/include/lldb/Host/Host.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Host/Host.h?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/include/lldb/Host/Host.h (original) +++ lldb/trunk/include/lldb/Host/Host.h Tue Mar 21 13:25:04 2017 @@ -16,10 +16,10 @@ #include <map> #include <string> -#include "lldb/Core/StringList.h" #include "lldb/Host/File.h" #include "lldb/Host/FileSpec.h" #include "lldb/Host/HostThread.h" +#include "lldb/Utility/StringList.h" #include "lldb/lldb-private-forward.h" #include "lldb/lldb-private.h" Modified: lldb/trunk/include/lldb/Interpreter/CommandInterpreter.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Interpreter/CommandInterpreter.h?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/include/lldb/Interpreter/CommandInterpreter.h (original) +++ lldb/trunk/include/lldb/Interpreter/CommandInterpreter.h Tue Mar 21 13:25:04 2017 @@ -19,13 +19,13 @@ #include "lldb/Core/Debugger.h" #include "lldb/Core/Event.h" #include "lldb/Core/IOHandler.h" -#include "lldb/Core/StringList.h" #include "lldb/Interpreter/Args.h" #include "lldb/Interpreter/CommandAlias.h" #include "lldb/Interpreter/CommandHistory.h" #include "lldb/Interpreter/CommandObject.h" #include "lldb/Interpreter/ScriptInterpreter.h" #include "lldb/Utility/Log.h" +#include "lldb/Utility/StringList.h" #include "lldb/lldb-forward.h" #include "lldb/lldb-private.h" Modified: lldb/trunk/include/lldb/Interpreter/CommandObject.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Interpreter/CommandObject.h?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/include/lldb/Interpreter/CommandObject.h (original) +++ lldb/trunk/include/lldb/Interpreter/CommandObject.h Tue Mar 21 13:25:04 2017 @@ -20,10 +20,10 @@ // Project includes #include "lldb/Utility/Flags.h" -#include "lldb/Core/StringList.h" #include "lldb/Interpreter/Args.h" #include "lldb/Interpreter/CommandCompletions.h" #include "lldb/Target/ExecutionContext.h" +#include "lldb/Utility/StringList.h" #include "lldb/lldb-private.h" namespace lldb_private { Added: lldb/trunk/include/lldb/Utility/StringList.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/StringList.h?rev=298412&view=auto ============================================================================== --- lldb/trunk/include/lldb/Utility/StringList.h (added) +++ lldb/trunk/include/lldb/Utility/StringList.h Tue Mar 21 13:25:04 2017 @@ -0,0 +1,138 @@ +//===-- StringList.h --------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef liblldb_StringList_h_ +#define liblldb_StringList_h_ + +// C Includes +#include <stdint.h> + +// C++ Includes +#include <string> + +// Other libraries and framework includes +#include "llvm/ADT/StringRef.h" + +// Project includes +#include "lldb/lldb-forward.h" + +namespace lldb_private { + +class StringList { +public: + StringList(); + + StringList(const char *str); + + StringList(const char **strv, int strc); + + virtual ~StringList(); + + void AppendString(const std::string &s); + + void AppendString(std::string &&s); + + void AppendString(const char *str); + + void AppendString(const char *str, size_t str_len); + + void AppendString(llvm::StringRef str); + + void AppendList(const char **strv, int strc); + + void AppendList(StringList strings); + + size_t GetSize() const; + + void SetSize(size_t n) { m_strings.resize(n); } + + size_t GetMaxStringLength() const; + + std::string &operator[](size_t idx) { + // No bounds checking, verify "idx" is good prior to calling this function + return m_strings[idx]; + } + + const std::string &operator[](size_t idx) const { + // No bounds checking, verify "idx" is good prior to calling this function + return m_strings[idx]; + } + + void PopBack() { m_strings.pop_back(); } + const char *GetStringAtIndex(size_t idx) const; + + void Join(const char *separator, Stream &strm); + + void Clear(); + + void LongestCommonPrefix(std::string &common_prefix); + + void InsertStringAtIndex(size_t idx, const std::string &str); + + void InsertStringAtIndex(size_t idx, std::string &&str); + + void InsertStringAtIndex(size_t id, const char *str); + + void DeleteStringAtIndex(size_t id); + + void RemoveBlankLines(); + + size_t SplitIntoLines(const std::string &lines); + + size_t SplitIntoLines(const char *lines, size_t len); + + std::string CopyList(const char *item_preamble = nullptr, + const char *items_sep = "\n") const; + + StringList &operator<<(const char *str); + + StringList &operator<<(const std::string &s); + + StringList &operator<<(StringList strings); + + // Copy assignment for a vector of strings + StringList &operator=(const std::vector<std::string> &rhs); + + // This string list contains a list of valid auto completion + // strings, and the "s" is passed in. "matches" is filled in + // with zero or more string values that start with "s", and + // the first string to exactly match one of the string + // values in this collection, will have "exact_matches_idx" + // filled in to match the index, or "exact_matches_idx" will + // have SIZE_MAX + size_t AutoComplete(llvm::StringRef s, StringList &matches, + size_t &exact_matches_idx) const; + + // Dump the StringList to the given lldb_private::Log, `log`, one item per + // line. + // If given, `name` will be used to identify the start and end of the list in + // the output. + virtual void LogDump(Log *log, const char *name = nullptr); + + // Static helper to convert an iterable of strings to a StringList, and then + // dump it with the semantics of the `LogDump` method. + template <typename T> + static void LogDump(Log *log, T s_iterable, const char *name = nullptr) { + if (!log) + return; + // Make a copy of the iterable as a StringList + StringList l{}; + for (const auto &s : s_iterable) + l << s; + + l.LogDump(log, name); + } + +private: + std::vector<std::string> m_strings; +}; + +} // namespace lldb_private + +#endif // liblldb_StringList_h_ Modified: lldb/trunk/source/API/SBStringList.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBStringList.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/API/SBStringList.cpp (original) +++ lldb/trunk/source/API/SBStringList.cpp Tue Mar 21 13:25:04 2017 @@ -9,7 +9,7 @@ #include "lldb/API/SBStringList.h" -#include "lldb/Core/StringList.h" +#include "lldb/Utility/StringList.h" using namespace lldb; using namespace lldb_private; Modified: lldb/trunk/source/Breakpoint/BreakpointOptions.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Breakpoint/BreakpointOptions.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Breakpoint/BreakpointOptions.cpp (original) +++ lldb/trunk/source/Breakpoint/BreakpointOptions.cpp Tue Mar 21 13:25:04 2017 @@ -14,7 +14,6 @@ #include "lldb/Breakpoint/BreakpointOptions.h" #include "lldb/Breakpoint/StoppointCallbackContext.h" -#include "lldb/Core/StringList.h" #include "lldb/Core/Value.h" #include "lldb/Interpreter/CommandInterpreter.h" #include "lldb/Interpreter/CommandReturnObject.h" @@ -22,6 +21,7 @@ #include "lldb/Target/Target.h" #include "lldb/Target/ThreadSpec.h" #include "lldb/Utility/Stream.h" +#include "lldb/Utility/StringList.h" #include "llvm/ADT/STLExtras.h" Modified: lldb/trunk/source/Breakpoint/WatchpointOptions.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Breakpoint/WatchpointOptions.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Breakpoint/WatchpointOptions.cpp (original) +++ lldb/trunk/source/Breakpoint/WatchpointOptions.cpp Tue Mar 21 13:25:04 2017 @@ -14,12 +14,12 @@ #include "lldb/Breakpoint/WatchpointOptions.h" #include "lldb/Breakpoint/StoppointCallbackContext.h" -#include "lldb/Core/StringList.h" #include "lldb/Core/Value.h" #include "lldb/Target/Process.h" #include "lldb/Target/Target.h" #include "lldb/Target/ThreadSpec.h" #include "lldb/Utility/Stream.h" +#include "lldb/Utility/StringList.h" using namespace lldb; using namespace lldb_private; Modified: lldb/trunk/source/Commands/CommandObjectCommands.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectCommands.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Commands/CommandObjectCommands.cpp (original) +++ lldb/trunk/source/Commands/CommandObjectCommands.cpp Tue Mar 21 13:25:04 2017 @@ -17,7 +17,6 @@ #include "CommandObjectHelp.h" #include "lldb/Core/Debugger.h" #include "lldb/Core/IOHandler.h" -#include "lldb/Core/StringList.h" #include "lldb/Interpreter/Args.h" #include "lldb/Interpreter/CommandHistory.h" #include "lldb/Interpreter/CommandInterpreter.h" @@ -28,6 +27,7 @@ #include "lldb/Interpreter/OptionValueUInt64.h" #include "lldb/Interpreter/Options.h" #include "lldb/Interpreter/ScriptInterpreter.h" +#include "lldb/Utility/StringList.h" using namespace lldb; using namespace lldb_private; Modified: lldb/trunk/source/Commands/CommandObjectType.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectType.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Commands/CommandObjectType.cpp (original) +++ lldb/trunk/source/Commands/CommandObjectType.cpp Tue Mar 21 13:25:04 2017 @@ -19,7 +19,6 @@ #include "lldb/Core/Debugger.h" #include "lldb/Core/IOHandler.h" #include "lldb/Core/State.h" -#include "lldb/Core/StringList.h" #include "lldb/DataFormatters/DataVisualization.h" #include "lldb/Interpreter/CommandInterpreter.h" #include "lldb/Interpreter/CommandObject.h" @@ -38,6 +37,7 @@ #include "lldb/Target/ThreadList.h" #include "lldb/Utility/ConstString.h" #include "lldb/Utility/RegularExpression.h" +#include "lldb/Utility/StringList.h" // Other libraries and framework includes #include "llvm/ADT/STLExtras.h" Modified: lldb/trunk/source/Core/ArchSpec.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ArchSpec.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Core/ArchSpec.cpp (original) +++ lldb/trunk/source/Core/ArchSpec.cpp Tue Mar 21 13:25:04 2017 @@ -24,7 +24,6 @@ // Project includes #include "Plugins/Process/Utility/ARMDefines.h" #include "Plugins/Process/Utility/InstructionUtils.h" -#include "lldb/Core/StringList.h" #include "lldb/Host/HostInfo.h" #include "lldb/Target/Platform.h" #include "lldb/Target/Process.h" @@ -34,6 +33,7 @@ #include "lldb/Utility/NameMatches.h" #include "lldb/Utility/RegularExpression.h" #include "lldb/Utility/SafeMachO.h" +#include "lldb/Utility/StringList.h" using namespace lldb; using namespace lldb_private; Modified: lldb/trunk/source/Core/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/CMakeLists.txt?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Core/CMakeLists.txt (original) +++ lldb/trunk/source/Core/CMakeLists.txt Tue Mar 21 13:25:04 2017 @@ -33,7 +33,6 @@ add_lldb_library(lldbCore State.cpp StreamAsynchronousIO.cpp StreamFile.cpp - StringList.cpp StructuredData.cpp Timer.cpp UserSettingsController.cpp Removed: lldb/trunk/source/Core/StringList.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/StringList.cpp?rev=298411&view=auto ============================================================================== --- lldb/trunk/source/Core/StringList.cpp (original) +++ lldb/trunk/source/Core/StringList.cpp (removed) @@ -1,267 +0,0 @@ -//===-- StringList.cpp ------------------------------------------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include "lldb/Core/StringList.h" - -#include "lldb/Host/FileSpec.h" -#include "lldb/Utility/Log.h" -#include "lldb/Utility/StreamString.h" - -#include <string> - -using namespace lldb_private; - -StringList::StringList() : m_strings() {} - -StringList::StringList(const char *str) : m_strings() { - if (str) - m_strings.push_back(str); -} - -StringList::StringList(const char **strv, int strc) : m_strings() { - for (int i = 0; i < strc; ++i) { - if (strv[i]) - m_strings.push_back(strv[i]); - } -} - -StringList::~StringList() {} - -void StringList::AppendString(const char *str) { - if (str) - m_strings.push_back(str); -} - -void StringList::AppendString(const std::string &s) { m_strings.push_back(s); } - -void StringList::AppendString(std::string &&s) { m_strings.push_back(s); } - -void StringList::AppendString(const char *str, size_t str_len) { - if (str) - m_strings.push_back(std::string(str, str_len)); -} - -void StringList::AppendString(llvm::StringRef str) { - m_strings.push_back(str.str()); -} - -void StringList::AppendList(const char **strv, int strc) { - for (int i = 0; i < strc; ++i) { - if (strv[i]) - m_strings.push_back(strv[i]); - } -} - -void StringList::AppendList(StringList strings) { - size_t len = strings.GetSize(); - - for (size_t i = 0; i < len; ++i) - m_strings.push_back(strings.GetStringAtIndex(i)); -} - -size_t StringList::GetSize() const { return m_strings.size(); } - -size_t StringList::GetMaxStringLength() const { - size_t max_length = 0; - for (const auto &s : m_strings) { - const size_t len = s.size(); - if (max_length < len) - max_length = len; - } - return max_length; -} - -const char *StringList::GetStringAtIndex(size_t idx) const { - if (idx < m_strings.size()) - return m_strings[idx].c_str(); - return NULL; -} - -void StringList::Join(const char *separator, Stream &strm) { - size_t size = GetSize(); - - if (size == 0) - return; - - for (uint32_t i = 0; i < size; ++i) { - if (i > 0) - strm.PutCString(separator); - strm.PutCString(GetStringAtIndex(i)); - } -} - -void StringList::Clear() { m_strings.clear(); } - -void StringList::LongestCommonPrefix(std::string &common_prefix) { - common_prefix.clear(); - if (m_strings.empty()) - return; - - auto args = llvm::makeArrayRef(m_strings); - llvm::StringRef prefix = args.front(); - for (auto arg : args.drop_front()) { - size_t count = 0; - for (count = 0; count < std::min(prefix.size(), arg.size()); ++count) { - if (prefix[count] != arg[count]) - break; - } - prefix = prefix.take_front(count); - } - common_prefix = prefix; -} - -void StringList::InsertStringAtIndex(size_t idx, const char *str) { - if (str) { - if (idx < m_strings.size()) - m_strings.insert(m_strings.begin() + idx, str); - else - m_strings.push_back(str); - } -} - -void StringList::InsertStringAtIndex(size_t idx, const std::string &str) { - if (idx < m_strings.size()) - m_strings.insert(m_strings.begin() + idx, str); - else - m_strings.push_back(str); -} - -void StringList::InsertStringAtIndex(size_t idx, std::string &&str) { - if (idx < m_strings.size()) - m_strings.insert(m_strings.begin() + idx, str); - else - m_strings.push_back(str); -} - -void StringList::DeleteStringAtIndex(size_t idx) { - if (idx < m_strings.size()) - m_strings.erase(m_strings.begin() + idx); -} - -size_t StringList::SplitIntoLines(const std::string &lines) { - return SplitIntoLines(lines.c_str(), lines.size()); -} - -size_t StringList::SplitIntoLines(const char *lines, size_t len) { - const size_t orig_size = m_strings.size(); - - if (len == 0) - return 0; - - const char *k_newline_chars = "\r\n"; - const char *p = lines; - const char *end = lines + len; - while (p < end) { - size_t count = strcspn(p, k_newline_chars); - if (count == 0) { - if (p[count] == '\r' || p[count] == '\n') - m_strings.push_back(std::string()); - else - break; - } else { - if (p + count > end) - count = end - p; - m_strings.push_back(std::string(p, count)); - } - if (p[count] == '\r' && p[count + 1] == '\n') - count++; // Skip an extra newline char for the DOS newline - count++; // Skip the newline character - p += count; - } - return m_strings.size() - orig_size; -} - -void StringList::RemoveBlankLines() { - if (GetSize() == 0) - return; - - size_t idx = 0; - while (idx < m_strings.size()) { - if (m_strings[idx].empty()) - DeleteStringAtIndex(idx); - else - idx++; - } -} - -std::string StringList::CopyList(const char *item_preamble, - const char *items_sep) const { - StreamString strm; - for (size_t i = 0; i < GetSize(); i++) { - if (i && items_sep && items_sep[0]) - strm << items_sep; - if (item_preamble) - strm << item_preamble; - strm << GetStringAtIndex(i); - } - return strm.GetString(); -} - -StringList &StringList::operator<<(const char *str) { - AppendString(str); - return *this; -} - -StringList &StringList::operator<<(const std::string &str) { - AppendString(str); - return *this; -} - -StringList &StringList::operator<<(StringList strings) { - AppendList(strings); - return *this; -} - -StringList &StringList::operator=(const std::vector<std::string> &rhs) { - Clear(); - for (const auto &s : rhs) - m_strings.push_back(s); - - return *this; -} - -size_t StringList::AutoComplete(llvm::StringRef s, StringList &matches, - size_t &exact_idx) const { - matches.Clear(); - exact_idx = SIZE_MAX; - if (s.empty()) { - // No string, so it matches everything - matches = *this; - return matches.GetSize(); - } - - const size_t s_len = s.size(); - const size_t num_strings = m_strings.size(); - - for (size_t i = 0; i < num_strings; ++i) { - if (m_strings[i].find(s) == 0) { - if (exact_idx == SIZE_MAX && m_strings[i].size() == s_len) - exact_idx = matches.GetSize(); - matches.AppendString(m_strings[i]); - } - } - return matches.GetSize(); -} - -void StringList::LogDump(Log *log, const char *name) { - if (!log) - return; - - StreamString strm; - if (name) - strm.Printf("Begin %s:\n", name); - for (const auto &s : m_strings) { - strm.Indent(); - strm.Printf("%s\n", s.c_str()); - } - if (name) - strm.Printf("End %s.\n", name); - - LLDB_LOGV(log, "{0}", strm.GetData()); -} Modified: lldb/trunk/source/Host/common/Editline.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/Editline.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Host/common/Editline.cpp (original) +++ lldb/trunk/source/Host/common/Editline.cpp Tue Mar 21 13:25:04 2017 @@ -11,7 +11,6 @@ #include <iostream> #include <limits.h> -#include "lldb/Core/StringList.h" #include "lldb/Host/ConnectionFileDescriptor.h" #include "lldb/Host/Editline.h" #include "lldb/Host/FileSpec.h" @@ -20,6 +19,7 @@ #include "lldb/Utility/LLDBAssert.h" #include "lldb/Utility/SelectHelper.h" #include "lldb/Utility/StreamString.h" +#include "lldb/Utility/StringList.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Threading.h" Modified: lldb/trunk/source/Host/common/FileSpec.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/common/FileSpec.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Host/common/FileSpec.cpp (original) +++ lldb/trunk/source/Host/common/FileSpec.cpp Tue Mar 21 13:25:04 2017 @@ -16,12 +16,12 @@ #include <pwd.h> #endif -#include "lldb/Core/StringList.h" #include "lldb/Host/FileSpec.h" #include "lldb/Utility/CleanUp.h" #include "lldb/Utility/RegularExpression.h" #include "lldb/Utility/Stream.h" #include "lldb/Utility/StreamString.h" +#include "lldb/Utility/StringList.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringRef.h" Modified: lldb/trunk/source/Interpreter/OptionValue.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValue.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Interpreter/OptionValue.cpp (original) +++ lldb/trunk/source/Interpreter/OptionValue.cpp Tue Mar 21 13:25:04 2017 @@ -13,8 +13,8 @@ // C++ Includes // Other libraries and framework includes // Project includes -#include "lldb/Core/StringList.h" #include "lldb/Interpreter/OptionValues.h" +#include "lldb/Utility/StringList.h" using namespace lldb; using namespace lldb_private; Modified: lldb/trunk/source/Interpreter/OptionValueBoolean.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueBoolean.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Interpreter/OptionValueBoolean.cpp (original) +++ lldb/trunk/source/Interpreter/OptionValueBoolean.cpp Tue Mar 21 13:25:04 2017 @@ -13,10 +13,10 @@ // C++ Includes // Other libraries and framework includes // Project includes -#include "lldb/Core/StringList.h" #include "lldb/Host/PosixApi.h" #include "lldb/Interpreter/Args.h" #include "lldb/Utility/Stream.h" +#include "lldb/Utility/StringList.h" #include "llvm/ADT/STLExtras.h" using namespace lldb; Modified: lldb/trunk/source/Interpreter/OptionValueChar.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueChar.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Interpreter/OptionValueChar.cpp (original) +++ lldb/trunk/source/Interpreter/OptionValueChar.cpp Tue Mar 21 13:25:04 2017 @@ -13,9 +13,9 @@ // C++ Includes // Other libraries and framework includes // Project includes -#include "lldb/Core/StringList.h" #include "lldb/Interpreter/Args.h" #include "lldb/Utility/Stream.h" +#include "lldb/Utility/StringList.h" #include "llvm/ADT/STLExtras.h" using namespace lldb; Modified: lldb/trunk/source/Interpreter/OptionValueEnumeration.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueEnumeration.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Interpreter/OptionValueEnumeration.cpp (original) +++ lldb/trunk/source/Interpreter/OptionValueEnumeration.cpp Tue Mar 21 13:25:04 2017 @@ -13,7 +13,7 @@ // C++ Includes // Other libraries and framework includes // Project includes -#include "lldb/Core/StringList.h" +#include "lldb/Utility/StringList.h" using namespace lldb; using namespace lldb_private; Modified: lldb/trunk/source/Interpreter/OptionValueFormatEntity.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueFormatEntity.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Interpreter/OptionValueFormatEntity.cpp (original) +++ lldb/trunk/source/Interpreter/OptionValueFormatEntity.cpp Tue Mar 21 13:25:04 2017 @@ -14,9 +14,9 @@ // Other libraries and framework includes // Project includes #include "lldb/Core/Module.h" -#include "lldb/Core/StringList.h" #include "lldb/Interpreter/CommandInterpreter.h" #include "lldb/Utility/Stream.h" +#include "lldb/Utility/StringList.h" using namespace lldb; using namespace lldb_private; Modified: lldb/trunk/source/Interpreter/OptionValueProperties.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueProperties.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Interpreter/OptionValueProperties.cpp (original) +++ lldb/trunk/source/Interpreter/OptionValueProperties.cpp Tue Mar 21 13:25:04 2017 @@ -15,12 +15,12 @@ // Project includes #include "lldb/Utility/Flags.h" -#include "lldb/Core/StringList.h" #include "lldb/Core/UserSettingsController.h" #include "lldb/Interpreter/Args.h" #include "lldb/Interpreter/OptionValues.h" #include "lldb/Interpreter/Property.h" #include "lldb/Utility/Stream.h" +#include "lldb/Utility/StringList.h" using namespace lldb; using namespace lldb_private; Modified: lldb/trunk/source/Interpreter/OptionValueUUID.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueUUID.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Interpreter/OptionValueUUID.cpp (original) +++ lldb/trunk/source/Interpreter/OptionValueUUID.cpp Tue Mar 21 13:25:04 2017 @@ -14,9 +14,9 @@ // Other libraries and framework includes // Project includes #include "lldb/Core/Module.h" -#include "lldb/Core/StringList.h" #include "lldb/Interpreter/CommandInterpreter.h" #include "lldb/Utility/Stream.h" +#include "lldb/Utility/StringList.h" using namespace lldb; using namespace lldb_private; Modified: lldb/trunk/source/Interpreter/ScriptInterpreter.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/ScriptInterpreter.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Interpreter/ScriptInterpreter.cpp (original) +++ lldb/trunk/source/Interpreter/ScriptInterpreter.cpp Tue Mar 21 13:25:04 2017 @@ -13,11 +13,11 @@ #include <stdlib.h> #include <string> -#include "lldb/Core/StringList.h" #include "lldb/Host/PseudoTerminal.h" #include "lldb/Interpreter/CommandReturnObject.h" #include "lldb/Utility/Error.h" #include "lldb/Utility/Stream.h" +#include "lldb/Utility/StringList.h" using namespace lldb; using namespace lldb_private; Modified: lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp (original) +++ lldb/trunk/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp Tue Mar 21 13:25:04 2017 @@ -71,7 +71,6 @@ #include "lldb/Core/Disassembler.h" #include "lldb/Core/Module.h" #include "lldb/Core/StreamFile.h" -#include "lldb/Core/StringList.h" #include "lldb/Expression/IRDynamicChecks.h" #include "lldb/Expression/IRExecutionUnit.h" #include "lldb/Expression/IRInterpreter.h" @@ -90,6 +89,7 @@ #include "lldb/Utility/Log.h" #include "lldb/Utility/Stream.h" #include "lldb/Utility/StreamString.h" +#include "lldb/Utility/StringList.h" using namespace clang; using namespace llvm; Modified: lldb/trunk/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h (original) +++ lldb/trunk/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h Tue Mar 21 13:25:04 2017 @@ -19,7 +19,6 @@ // Other libraries and framework includes #include "lldb/Core/ArchSpec.h" #include "lldb/Core/Broadcaster.h" -#include "lldb/Core/StringList.h" #include "lldb/Core/ThreadSafeValue.h" #include "lldb/Host/HostThread.h" #include "lldb/Target/Process.h" @@ -27,6 +26,7 @@ #include "lldb/Utility/ConstString.h" #include "lldb/Utility/Error.h" #include "lldb/Utility/StreamString.h" +#include "lldb/Utility/StringList.h" #include "CommunicationKDP.h" Modified: lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h (original) +++ lldb/trunk/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h Tue Mar 21 13:25:04 2017 @@ -24,7 +24,6 @@ #include "lldb/Core/Broadcaster.h" #include "lldb/Core/LoadedModuleInfoList.h" #include "lldb/Core/ModuleSpec.h" -#include "lldb/Core/StringList.h" #include "lldb/Core/StructuredData.h" #include "lldb/Core/ThreadSafeValue.h" #include "lldb/Host/HostThread.h" @@ -34,6 +33,7 @@ #include "lldb/Utility/Error.h" #include "lldb/Utility/StreamString.h" #include "lldb/Utility/StringExtractor.h" +#include "lldb/Utility/StringList.h" #include "lldb/lldb-private-forward.h" #include "GDBRemoteCommunicationClient.h" Modified: lldb/trunk/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp (original) +++ lldb/trunk/source/Plugins/ScriptInterpreter/None/ScriptInterpreterNone.cpp Tue Mar 21 13:25:04 2017 @@ -11,9 +11,9 @@ #include "lldb/Core/Debugger.h" #include "lldb/Core/PluginManager.h" #include "lldb/Core/StreamFile.h" -#include "lldb/Core/StringList.h" #include "lldb/Interpreter/CommandInterpreter.h" #include "lldb/Utility/Stream.h" +#include "lldb/Utility/StringList.h" #include "llvm/Support/Threading.h" Modified: lldb/trunk/source/Utility/CMakeLists.txt URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/CMakeLists.txt?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/source/Utility/CMakeLists.txt (original) +++ lldb/trunk/source/Utility/CMakeLists.txt Tue Mar 21 13:25:04 2017 @@ -24,6 +24,7 @@ add_lldb_library(lldbUtility StringExtractor.cpp StringExtractorGDBRemote.cpp StringLexer.cpp + StringList.cpp TaskPool.cpp TildeExpressionResolver.cpp UserID.cpp Added: lldb/trunk/source/Utility/StringList.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Utility/StringList.cpp?rev=298412&view=auto ============================================================================== --- lldb/trunk/source/Utility/StringList.cpp (added) +++ lldb/trunk/source/Utility/StringList.cpp Tue Mar 21 13:25:04 2017 @@ -0,0 +1,264 @@ +//===-- StringList.cpp ------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "lldb/Utility/StringList.h" + +#include "lldb/Utility/Log.h" +#include "lldb/Utility/StreamString.h" + +#include <string> + +using namespace lldb_private; + +StringList::StringList() : m_strings() {} + +StringList::StringList(const char *str) : m_strings() { + if (str) + m_strings.push_back(str); +} + +StringList::StringList(const char **strv, int strc) : m_strings() { + for (int i = 0; i < strc; ++i) { + if (strv[i]) + m_strings.push_back(strv[i]); + } +} + +StringList::~StringList() {} + +void StringList::AppendString(const char *str) { + if (str) + m_strings.push_back(str); +} + +void StringList::AppendString(const std::string &s) { m_strings.push_back(s); } + +void StringList::AppendString(std::string &&s) { m_strings.push_back(s); } + +void StringList::AppendString(const char *str, size_t str_len) { + if (str) + m_strings.push_back(std::string(str, str_len)); +} + +void StringList::AppendString(llvm::StringRef str) { + m_strings.push_back(str.str()); +} + +void StringList::AppendList(const char **strv, int strc) { + for (int i = 0; i < strc; ++i) { + if (strv[i]) + m_strings.push_back(strv[i]); + } +} + +void StringList::AppendList(StringList strings) { + size_t len = strings.GetSize(); + + for (size_t i = 0; i < len; ++i) + m_strings.push_back(strings.GetStringAtIndex(i)); +} + +size_t StringList::GetSize() const { return m_strings.size(); } + +size_t StringList::GetMaxStringLength() const { + size_t max_length = 0; + for (const auto &s : m_strings) { + const size_t len = s.size(); + if (max_length < len) + max_length = len; + } + return max_length; +} + +const char *StringList::GetStringAtIndex(size_t idx) const { + if (idx < m_strings.size()) + return m_strings[idx].c_str(); + return NULL; +} + +void StringList::Join(const char *separator, Stream &strm) { + size_t size = GetSize(); + + if (size == 0) + return; + + for (uint32_t i = 0; i < size; ++i) { + if (i > 0) + strm.PutCString(separator); + strm.PutCString(GetStringAtIndex(i)); + } +} + +void StringList::Clear() { m_strings.clear(); } + +void StringList::LongestCommonPrefix(std::string &common_prefix) { + common_prefix.clear(); + if (m_strings.empty()) + return; + + auto args = llvm::makeArrayRef(m_strings); + llvm::StringRef prefix = args.front(); + for (auto arg : args.drop_front()) { + size_t count = 0; + for (count = 0; count < std::min(prefix.size(), arg.size()); ++count) { + if (prefix[count] != arg[count]) + break; + } + prefix = prefix.take_front(count); + } + common_prefix = prefix; +} + +void StringList::InsertStringAtIndex(size_t idx, const char *str) { + if (str) { + if (idx < m_strings.size()) + m_strings.insert(m_strings.begin() + idx, str); + else + m_strings.push_back(str); + } +} + +void StringList::InsertStringAtIndex(size_t idx, const std::string &str) { + if (idx < m_strings.size()) + m_strings.insert(m_strings.begin() + idx, str); + else + m_strings.push_back(str); +} + +void StringList::InsertStringAtIndex(size_t idx, std::string &&str) { + if (idx < m_strings.size()) + m_strings.insert(m_strings.begin() + idx, str); + else + m_strings.push_back(str); +} + +void StringList::DeleteStringAtIndex(size_t idx) { + if (idx < m_strings.size()) + m_strings.erase(m_strings.begin() + idx); +} + +size_t StringList::SplitIntoLines(const std::string &lines) { + return SplitIntoLines(lines.c_str(), lines.size()); +} + +size_t StringList::SplitIntoLines(const char *lines, size_t len) { + const size_t orig_size = m_strings.size(); + + if (len == 0) + return 0; + + const char *k_newline_chars = "\r\n"; + const char *p = lines; + const char *end = lines + len; + while (p < end) { + size_t count = strcspn(p, k_newline_chars); + if (count == 0) { + if (p[count] == '\r' || p[count] == '\n') + m_strings.push_back(std::string()); + else + break; + } else { + if (p + count > end) + count = end - p; + m_strings.push_back(std::string(p, count)); + } + if (p[count] == '\r' && p[count + 1] == '\n') + count++; // Skip an extra newline char for the DOS newline + count++; // Skip the newline character + p += count; + } + return m_strings.size() - orig_size; +} + +void StringList::RemoveBlankLines() { + if (GetSize() == 0) + return; + + size_t idx = 0; + while (idx < m_strings.size()) { + if (m_strings[idx].empty()) + DeleteStringAtIndex(idx); + else + idx++; + } +} + +std::string StringList::CopyList(const char *item_preamble, + const char *items_sep) const { + StreamString strm; + for (size_t i = 0; i < GetSize(); i++) { + if (i && items_sep && items_sep[0]) + strm << items_sep; + if (item_preamble) + strm << item_preamble; + strm << GetStringAtIndex(i); + } + return strm.GetString(); +} + +StringList &StringList::operator<<(const char *str) { + AppendString(str); + return *this; +} + +StringList &StringList::operator<<(const std::string &str) { + AppendString(str); + return *this; +} + +StringList &StringList::operator<<(StringList strings) { + AppendList(strings); + return *this; +} + +StringList &StringList::operator=(const std::vector<std::string> &rhs) { + m_strings.assign(rhs.begin(), rhs.end()); + + return *this; +} + +size_t StringList::AutoComplete(llvm::StringRef s, StringList &matches, + size_t &exact_idx) const { + matches.Clear(); + exact_idx = SIZE_MAX; + if (s.empty()) { + // No string, so it matches everything + matches = *this; + return matches.GetSize(); + } + + const size_t s_len = s.size(); + const size_t num_strings = m_strings.size(); + + for (size_t i = 0; i < num_strings; ++i) { + if (m_strings[i].find(s) == 0) { + if (exact_idx == SIZE_MAX && m_strings[i].size() == s_len) + exact_idx = matches.GetSize(); + matches.AppendString(m_strings[i]); + } + } + return matches.GetSize(); +} + +void StringList::LogDump(Log *log, const char *name) { + if (!log) + return; + + StreamString strm; + if (name) + strm.Printf("Begin %s:\n", name); + for (const auto &s : m_strings) { + strm.Indent(); + strm.Printf("%s\n", s.c_str()); + } + if (name) + strm.Printf("End %s.\n", name); + + LLDB_LOGV(log, "{0}", strm.GetData()); +} Modified: lldb/trunk/unittests/Editline/EditlineTest.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Editline/EditlineTest.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/unittests/Editline/EditlineTest.cpp (original) +++ lldb/trunk/unittests/Editline/EditlineTest.cpp Tue Mar 21 13:25:04 2017 @@ -19,11 +19,11 @@ #include "gtest/gtest.h" -#include "lldb/Core/StringList.h" #include "lldb/Host/Editline.h" #include "lldb/Host/Pipe.h" #include "lldb/Host/PseudoTerminal.h" #include "lldb/Utility/Error.h" +#include "lldb/Utility/StringList.h" namespace { const size_t TIMEOUT_MILLIS = 5000; Modified: lldb/trunk/unittests/Interpreter/TestCompletion.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Interpreter/TestCompletion.cpp?rev=298412&r1=298411&r2=298412&view=diff ============================================================================== --- lldb/trunk/unittests/Interpreter/TestCompletion.cpp (original) +++ lldb/trunk/unittests/Interpreter/TestCompletion.cpp Tue Mar 21 13:25:04 2017 @@ -9,8 +9,8 @@ #include "gtest/gtest.h" -#include "lldb/Core/StringList.h" #include "lldb/Interpreter/CommandCompletions.h" +#include "lldb/Utility/StringList.h" #include "lldb/Utility/TildeExpressionResolver.h" #include "llvm/ADT/SmallString.h" _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits