VariableList.h revision 6f01c93497df194b6f2194630a81e87d806ce0e0
15bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o//===-- VariableList.h ------------------------------------------*- C++ -*-===//
2b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o//
35bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o//                     The LLVM Compiler Infrastructure
4a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o//
5a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o// This file is distributed under the University of Illinois Open Source
6a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o// License. See LICENSE.TXT for details.
75bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o//
85bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o//===----------------------------------------------------------------------===//
95bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
105bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o#ifndef liblldb_VariableList_h_
11a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#define liblldb_VariableList_h_
12a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
135bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o#include "lldb/lldb-private.h"
14a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#include "lldb/Symbol/SymbolContext.h"
15a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#include "lldb/Symbol/Variable.h"
16a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
17a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'onamespace lldb_private {
185bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
195bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'oclass VariableList
205bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o{
215bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'opublic:
225bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    //------------------------------------------------------------------
23a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    // Constructors and Destructors
24a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    //------------------------------------------------------------------
255bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o//  VariableList(const SymbolContext &symbol_context);
26a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    VariableList();
27a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    virtual ~VariableList();
285bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
29a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    void
305bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    AddVariable (const lldb::VariableSP &var_sp);
31a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
325bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    bool
335bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    AddVariableIfUnique (const lldb::VariableSP &var_sp);
34a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
35a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    void
365bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    AddVariables (VariableList *variable_list);
37a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
38a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    void
39a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    Clear();
40a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
41a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    void
42a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    Dump(Stream *s, bool show_context) const;
43a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
44a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    lldb::VariableSP
45a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    GetVariableAtIndex(uint32_t idx);
46a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
47a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    lldb::VariableSP
48a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    RemoveVariableAtIndex (uint32_t idx);
495bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
505bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    lldb::VariableSP
515bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    FindVariable (const ConstString& name);
525bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
535bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    uint32_t
54a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    FindVariableIndex (const lldb::VariableSP &var_sp);
555bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
565bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    // Returns the actual number of unique variables that were added to the
57a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    // list. "total_matches" will get updated with the actualy number of
585bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    // matches that were found regardless of whether they were unique or not
595bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    // to allow for error conditions when nothing is found, versus conditions
605bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    // where any varaibles that match "regex" were already in "var_list".
615bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    size_t
625bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    AppendVariablesIfUnique (const RegularExpression& regex,
635bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o                             VariableList &var_list,
645bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o                             size_t& total_matches);
655bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
665bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    uint32_t
675bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    FindIndexForVariable (Variable* variable);
685bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
695bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    size_t
70a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    MemorySize() const;
715bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
725bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    size_t
73a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    GetSize() const;
74a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
75a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'oprotected:
765bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    typedef std::vector<lldb::VariableSP> collection;
775bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    typedef collection::iterator iterator;
785bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    typedef collection::const_iterator const_iterator;
795bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
80b0cacab066000b940551d59aad3e4553d4bad268Theodore Ts'o    collection m_variables;
815bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'oprivate:
82a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    //------------------------------------------------------------------
83a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o    // For VariableList only
845bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    //------------------------------------------------------------------
855bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o    DISALLOW_COPY_AND_ASSIGN (VariableList);
865bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o};
875bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o
885bc5a89c2a5c07b0237c13d37d869c986b5435fbTheodore Ts'o} // namespace lldb_private
89a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o
90a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o#endif  // liblldb_VariableList_h_
91a04eba3f8868af1d9b7b504d3d430c55ed3dc777Theodore Ts'o