1254721Semaste//===-- StringList.h --------------------------------------------*- C++ -*-===// 2254721Semaste// 3254721Semaste// The LLVM Compiler Infrastructure 4254721Semaste// 5254721Semaste// This file is distributed under the University of Illinois Open Source 6254721Semaste// License. See LICENSE.TXT for details. 7254721Semaste// 8254721Semaste//===----------------------------------------------------------------------===// 9254721Semaste 10254721Semaste#ifndef liblldb_StringList_h_ 11254721Semaste#define liblldb_StringList_h_ 12254721Semaste 13254721Semaste#include <stdint.h> 14254721Semaste 15254721Semaste#include "lldb/Core/STLUtils.h" 16254721Semaste#include "lldb/lldb-forward.h" 17254721Semaste 18254721Semastenamespace lldb_private { 19254721Semaste 20254721Semasteclass StringList 21254721Semaste{ 22254721Semastepublic: 23254721Semaste 24254721Semaste StringList (); 25254721Semaste 26254721Semaste StringList (const char *str); 27254721Semaste 28254721Semaste StringList (const char **strv, int strc); 29254721Semaste 30254721Semaste virtual 31254721Semaste ~StringList (); 32254721Semaste 33254721Semaste void 34254721Semaste AppendString (const std::string &s); 35254721Semaste 36254721Semaste void 37269024Semaste AppendString (std::string &&s); 38269024Semaste 39269024Semaste void 40254721Semaste AppendString (const char *str); 41254721Semaste 42254721Semaste void 43254721Semaste AppendString (const char *str, size_t str_len); 44254721Semaste 45254721Semaste void 46254721Semaste AppendList (const char ** strv, int strc); 47254721Semaste 48254721Semaste void 49254721Semaste AppendList (StringList strings); 50254721Semaste 51254721Semaste bool 52254721Semaste ReadFileLines (FileSpec &input_file); 53254721Semaste 54254721Semaste size_t 55254721Semaste GetSize () const; 56254721Semaste 57269024Semaste void 58269024Semaste SetSize (size_t n) 59269024Semaste { 60269024Semaste m_strings.resize(n); 61269024Semaste } 62269024Semaste 63269024Semaste size_t 64269024Semaste GetMaxStringLength () const; 65269024Semaste 66269024Semaste std::string & 67269024Semaste operator [](size_t idx) 68269024Semaste { 69269024Semaste // No bounds checking, verify "idx" is good prior to calling this function 70269024Semaste return m_strings[idx]; 71269024Semaste } 72269024Semaste 73269024Semaste const std::string & 74269024Semaste operator [](size_t idx) const 75269024Semaste { 76269024Semaste // No bounds checking, verify "idx" is good prior to calling this function 77269024Semaste return m_strings[idx]; 78269024Semaste } 79269024Semaste 80269024Semaste void 81269024Semaste PopBack () 82269024Semaste { 83269024Semaste m_strings.pop_back(); 84269024Semaste } 85254721Semaste const char * 86254721Semaste GetStringAtIndex (size_t idx) const; 87254721Semaste 88254721Semaste void 89254721Semaste Join (const char *separator, Stream &strm); 90254721Semaste 91254721Semaste void 92254721Semaste Clear (); 93254721Semaste 94254721Semaste void 95254721Semaste LongestCommonPrefix (std::string &common_prefix); 96254721Semaste 97254721Semaste void 98269024Semaste InsertStringAtIndex (size_t idx, const std::string &str); 99269024Semaste 100269024Semaste void 101269024Semaste InsertStringAtIndex (size_t idx, std::string &&str); 102269024Semaste 103269024Semaste void 104254721Semaste InsertStringAtIndex (size_t id, const char *str); 105254721Semaste 106254721Semaste void 107254721Semaste DeleteStringAtIndex (size_t id); 108254721Semaste 109254721Semaste void 110254721Semaste RemoveBlankLines (); 111254721Semaste 112254721Semaste size_t 113269024Semaste SplitIntoLines (const std::string &lines); 114269024Semaste 115269024Semaste size_t 116254721Semaste SplitIntoLines (const char *lines, size_t len); 117254721Semaste 118254721Semaste std::string 119254721Semaste CopyList(const char* item_preamble = NULL, 120269024Semaste const char* items_sep = "\n") const; 121254721Semaste 122254721Semaste StringList& 123254721Semaste operator << (const char* str); 124254721Semaste 125254721Semaste StringList& 126254721Semaste operator << (StringList strings); 127254721Semaste 128254721Semaste // This string list contains a list of valid auto completion 129254721Semaste // strings, and the "s" is passed in. "matches" is filled in 130254721Semaste // with zero or more string values that start with "s", and 131254721Semaste // the first string to exactly match one of the string 132254721Semaste // values in this collection, will have "exact_matches_idx" 133254721Semaste // filled in to match the index, or "exact_matches_idx" will 134254721Semaste // have SIZE_MAX 135254721Semaste size_t 136254721Semaste AutoComplete (const char *s, 137254721Semaste StringList &matches, 138254721Semaste size_t &exact_matches_idx) const; 139254721Semaste 140254721Semasteprivate: 141254721Semaste 142254721Semaste STLStringArray m_strings; 143254721Semaste}; 144254721Semaste 145254721Semaste} // namespace lldb_private 146254721Semaste 147254721Semaste#endif // liblldb_StringList_h_ 148