diff options
Diffstat (limited to 'include/lldb/Core/StringList.h')
-rw-r--r-- | include/lldb/Core/StringList.h | 255 |
1 files changed, 108 insertions, 147 deletions
diff --git a/include/lldb/Core/StringList.h b/include/lldb/Core/StringList.h index 53bdb6994a56..2cd974dea947 100644 --- a/include/lldb/Core/StringList.h +++ b/include/lldb/Core/StringList.h @@ -20,159 +20,120 @@ #include "llvm/ADT/StringRef.h" // Project includes -#include "lldb/lldb-forward.h" #include "lldb/Core/STLUtils.h" +#include "lldb/lldb-forward.h" namespace lldb_private { -class StringList -{ +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); - - bool - ReadFileLines (FileSpec &input_file); - - 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 (const char *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); - } + 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); + + bool ReadFileLines(FileSpec &input_file); + + 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; + STLStringArray m_strings; }; } // namespace lldb_private |