1254721Semaste//===-- VariableList.h ------------------------------------------*- C++ -*-===// 2254721Semaste// 3353358Sdim// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4353358Sdim// See https://llvm.org/LICENSE.txt for license information. 5353358Sdim// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6254721Semaste// 7254721Semaste//===----------------------------------------------------------------------===// 8254721Semaste 9254721Semaste#ifndef liblldb_VariableList_h_ 10254721Semaste#define liblldb_VariableList_h_ 11254721Semaste 12254721Semaste#include "lldb/Symbol/SymbolContext.h" 13254721Semaste#include "lldb/Symbol/Variable.h" 14314564Sdim#include "lldb/lldb-private.h" 15254721Semaste 16254721Semastenamespace lldb_private { 17254721Semaste 18314564Sdimclass VariableList { 19360784Sdim typedef std::vector<lldb::VariableSP> collection; 20360784Sdim 21254721Semastepublic: 22314564Sdim // Constructors and Destructors 23314564Sdim // VariableList(const SymbolContext &symbol_context); 24314564Sdim VariableList(); 25314564Sdim virtual ~VariableList(); 26254721Semaste 27314564Sdim void AddVariable(const lldb::VariableSP &var_sp); 28254721Semaste 29314564Sdim bool AddVariableIfUnique(const lldb::VariableSP &var_sp); 30254721Semaste 31314564Sdim void AddVariables(VariableList *variable_list); 32254721Semaste 33314564Sdim void Clear(); 34254721Semaste 35314564Sdim void Dump(Stream *s, bool show_context) const; 36254721Semaste 37314564Sdim lldb::VariableSP GetVariableAtIndex(size_t idx) const; 38254721Semaste 39314564Sdim lldb::VariableSP RemoveVariableAtIndex(size_t idx); 40254721Semaste 41353358Sdim lldb::VariableSP FindVariable(ConstString name, 42314564Sdim bool include_static_members = true); 43254721Semaste 44353358Sdim lldb::VariableSP FindVariable(ConstString name, 45314564Sdim lldb::ValueType value_type, 46314564Sdim bool include_static_members = true); 47254721Semaste 48314564Sdim uint32_t FindVariableIndex(const lldb::VariableSP &var_sp); 49254721Semaste 50314564Sdim size_t AppendVariablesIfUnique(VariableList &var_list); 51254721Semaste 52341825Sdim // Returns the actual number of unique variables that were added to the list. 53341825Sdim // "total_matches" will get updated with the actually number of matches that 54341825Sdim // were found regardless of whether they were unique or not to allow for 55341825Sdim // error conditions when nothing is found, versus conditions where any 56341825Sdim // variables that match "regex" were already in "var_list". 57314564Sdim size_t AppendVariablesIfUnique(const RegularExpression ®ex, 58314564Sdim VariableList &var_list, size_t &total_matches); 59314564Sdim 60314564Sdim size_t AppendVariablesWithScope(lldb::ValueType type, VariableList &var_list, 61314564Sdim bool if_unique = true); 62314564Sdim 63314564Sdim uint32_t FindIndexForVariable(Variable *variable); 64314564Sdim 65314564Sdim size_t MemorySize() const; 66314564Sdim 67314564Sdim size_t GetSize() const; 68341825Sdim bool Empty() const { return m_variables.empty(); } 69314564Sdim 70314564Sdim typedef collection::iterator iterator; 71314564Sdim typedef collection::const_iterator const_iterator; 72254721Semaste 73360784Sdim iterator begin() { return m_variables.begin(); } 74360784Sdim iterator end() { return m_variables.end(); } 75360784Sdim const_iterator begin() const { return m_variables.begin(); } 76360784Sdim const_iterator end() const { return m_variables.end(); } 77360784Sdim 78360784Sdimprotected: 79314564Sdim collection m_variables; 80314564Sdim 81254721Semasteprivate: 82314564Sdim // For VariableList only 83314564Sdim DISALLOW_COPY_AND_ASSIGN(VariableList); 84254721Semaste}; 85254721Semaste 86254721Semaste} // namespace lldb_private 87254721Semaste 88314564Sdim#endif // liblldb_VariableList_h_ 89