VariableList.h revision 254721
1254721Semaste//===-- VariableList.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_VariableList_h_
11254721Semaste#define liblldb_VariableList_h_
12254721Semaste
13254721Semaste#include "lldb/lldb-private.h"
14254721Semaste#include "lldb/Symbol/SymbolContext.h"
15254721Semaste#include "lldb/Symbol/Variable.h"
16254721Semaste
17254721Semastenamespace lldb_private {
18254721Semaste
19254721Semasteclass VariableList
20254721Semaste{
21254721Semastepublic:
22254721Semaste    //------------------------------------------------------------------
23254721Semaste    // Constructors and Destructors
24254721Semaste    //------------------------------------------------------------------
25254721Semaste//  VariableList(const SymbolContext &symbol_context);
26254721Semaste    VariableList();
27254721Semaste    virtual ~VariableList();
28254721Semaste
29254721Semaste    void
30254721Semaste    AddVariable (const lldb::VariableSP &var_sp);
31254721Semaste
32254721Semaste    bool
33254721Semaste    AddVariableIfUnique (const lldb::VariableSP &var_sp);
34254721Semaste
35254721Semaste    void
36254721Semaste    AddVariables (VariableList *variable_list);
37254721Semaste
38254721Semaste    void
39254721Semaste    Clear();
40254721Semaste
41254721Semaste    void
42254721Semaste    Dump(Stream *s, bool show_context) const;
43254721Semaste
44254721Semaste    lldb::VariableSP
45254721Semaste    GetVariableAtIndex(size_t idx) const;
46254721Semaste
47254721Semaste    lldb::VariableSP
48254721Semaste    RemoveVariableAtIndex (size_t idx);
49254721Semaste
50254721Semaste    lldb::VariableSP
51254721Semaste    FindVariable (const ConstString& name);
52254721Semaste
53254721Semaste    uint32_t
54254721Semaste    FindVariableIndex (const lldb::VariableSP &var_sp);
55254721Semaste
56254721Semaste    // Returns the actual number of unique variables that were added to the
57254721Semaste    // list. "total_matches" will get updated with the actualy number of
58254721Semaste    // matches that were found regardless of whether they were unique or not
59254721Semaste    // to allow for error conditions when nothing is found, versus conditions
60254721Semaste    // where any varaibles that match "regex" were already in "var_list".
61254721Semaste    size_t
62254721Semaste    AppendVariablesIfUnique (const RegularExpression& regex,
63254721Semaste                             VariableList &var_list,
64254721Semaste                             size_t& total_matches);
65254721Semaste
66254721Semaste    size_t
67254721Semaste    AppendVariablesWithScope (lldb::ValueType type,
68254721Semaste                              VariableList &var_list,
69254721Semaste                              bool if_unique = true);
70254721Semaste
71254721Semaste    uint32_t
72254721Semaste    FindIndexForVariable (Variable* variable);
73254721Semaste
74254721Semaste    size_t
75254721Semaste    MemorySize() const;
76254721Semaste
77254721Semaste    size_t
78254721Semaste    GetSize() const;
79254721Semaste
80254721Semasteprotected:
81254721Semaste    typedef std::vector<lldb::VariableSP> collection;
82254721Semaste    typedef collection::iterator iterator;
83254721Semaste    typedef collection::const_iterator const_iterator;
84254721Semaste
85254721Semaste    collection m_variables;
86254721Semasteprivate:
87254721Semaste    //------------------------------------------------------------------
88254721Semaste    // For VariableList only
89254721Semaste    //------------------------------------------------------------------
90254721Semaste    DISALLOW_COPY_AND_ASSIGN (VariableList);
91254721Semaste};
92254721Semaste
93254721Semaste} // namespace lldb_private
94254721Semaste
95254721Semaste#endif  // liblldb_VariableList_h_
96