]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/llvm/tools/lldb/include/lldb/Core/StringList.h
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / llvm / tools / lldb / include / lldb / Core / StringList.h
1 //===-- StringList.h --------------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #ifndef liblldb_StringList_h_
11 #define liblldb_StringList_h_
12
13 #include <stdint.h>
14
15 #include "lldb/Core/STLUtils.h"
16 #include "lldb/lldb-forward.h"
17
18 namespace lldb_private {
19
20 class StringList
21 {
22 public:
23
24     StringList ();
25
26     StringList (const char *str);
27
28     StringList (const char **strv, int strc);
29     
30     virtual
31     ~StringList ();
32
33     void
34     AppendString (const std::string &s);
35     
36     void
37     AppendString (std::string &&s);
38     
39     void
40     AppendString (const char *str);
41
42     void
43     AppendString (const char *str, size_t str_len);
44
45     void
46     AppendList (const char ** strv, int strc);
47
48     void
49     AppendList (StringList strings);
50
51     bool
52     ReadFileLines (FileSpec &input_file);
53     
54     size_t
55     GetSize () const;
56
57     void
58     SetSize (size_t n)
59     {
60         m_strings.resize(n);
61     }
62
63     size_t
64     GetMaxStringLength () const;
65     
66     std::string &
67     operator [](size_t idx)
68     {
69         // No bounds checking, verify "idx" is good prior to calling this function
70         return m_strings[idx];
71     }
72     
73     const std::string &
74     operator [](size_t idx) const
75     {
76         // No bounds checking, verify "idx" is good prior to calling this function
77         return m_strings[idx];
78     }
79
80     void
81     PopBack ()
82     {
83         m_strings.pop_back();
84     }
85     const char *
86     GetStringAtIndex (size_t idx) const;
87
88     void
89     Join (const char *separator, Stream &strm);
90
91     void
92     Clear ();
93
94     void
95     LongestCommonPrefix (std::string &common_prefix);
96
97     void
98     InsertStringAtIndex (size_t idx, const std::string &str);
99     
100     void
101     InsertStringAtIndex (size_t idx, std::string &&str);
102     
103     void
104     InsertStringAtIndex (size_t id, const char *str);
105
106     void
107     DeleteStringAtIndex (size_t id);
108
109     void
110     RemoveBlankLines ();
111
112     size_t
113     SplitIntoLines (const std::string &lines);
114
115     size_t
116     SplitIntoLines (const char *lines, size_t len);
117     
118     std::string
119     CopyList(const char* item_preamble = NULL,
120              const char* items_sep = "\n") const;
121     
122     StringList&
123     operator << (const char* str);
124
125     StringList&
126     operator << (StringList strings);
127     
128     // This string list contains a list of valid auto completion
129     // strings, and the "s" is passed in. "matches" is filled in
130     // with zero or more string values that start with "s", and
131     // the first string to exactly match one of the string
132     // values in this collection, will have "exact_matches_idx"
133     // filled in to match the index, or "exact_matches_idx" will
134     // have SIZE_MAX
135     size_t
136     AutoComplete (const char *s,
137                   StringList &matches,
138                   size_t &exact_matches_idx) const;
139
140 private:
141
142     STLStringArray m_strings;
143 };
144
145 } // namespace lldb_private
146
147 #endif // liblldb_StringList_h_