StringList.h revision 73844aa19a7360b662e2be710fc3c969d6c86606
18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt//===-- StringList.h --------------------------------------------*- C++ -*-===//
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt//
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt//                     The LLVM Compiler Infrastructure
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt//
5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt// This file is distributed under the University of Illinois Open Source
6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt// License. See LICENSE.TXT for details.
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt//
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt//===----------------------------------------------------------------------===//
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef liblldb_StringList_h_
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define liblldb_StringList_h_
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include <stdint.h>
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "lldb/Core/STLUtils.h"
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "lldb/lldb-forward.h"
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtnamespace lldb_private {
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass StringList
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtpublic:
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    StringList ();
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    StringList (const char *str);
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    StringList (const char **strv, int strc);
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    virtual
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    ~StringList ();
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    void
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    AppendString (const std::string &s);
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    void
378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    AppendString (const char *str);
388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    void
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    AppendString (const char *str, size_t str_len);
418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    void
438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    AppendList (const char ** strv, int strc);
448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    void
468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    AppendList (StringList strings);
478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    bool
498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    ReadFileLines (FileSpec &input_file);
508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    uint32_t
528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt    GetSize () const;
538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
54    const char *
55    GetStringAtIndex (size_t idx) const;
56
57    void
58    Join (const char *separator, Stream &strm);
59
60    void
61    Clear ();
62
63    void
64    LongestCommonPrefix (std::string &common_prefix);
65
66    void
67    InsertStringAtIndex (size_t id, const char *str);
68
69    void
70    DeleteStringAtIndex (size_t id);
71
72    void
73    RemoveBlankLines ();
74
75    size_t
76    SplitIntoLines (const char *lines, size_t len);
77
78    std::string
79    CopyList(const char* item_preamble = NULL,
80             const char* items_sep = "\n");
81
82    StringList&
83    operator << (const char* str);
84
85    StringList&
86    operator << (StringList strings);
87
88    // This string list contains a list of valid auto completion
89    // strings, and the "s" is passed in. "matches" is filled in
90    // with zero or more string values that start with "s", and
91    // the first string to exactly match one of the string
92    // values in this collection, will have "exact_matches_idx"
93    // filled in to match the index, or "exact_matches_idx" will
94    // have SIZE_MAX
95    size_t
96    AutoComplete (const char *s,
97                  StringList &matches,
98                  size_t &exact_matches_idx) const;
99
100private:
101
102    STLStringArray m_strings;
103};
104
105} // namespace lldb_private
106
107#endif // liblldb_StringList_h_
108