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