003 File Manager
Current Path:
/usr/src/contrib/llvm-project/lldb/source/Symbol
usr
/
src
/
contrib
/
llvm-project
/
lldb
/
source
/
Symbol
/
📁
..
📄
ArmUnwindInfo.cpp
(12.12 KB)
📄
Block.cpp
(16.71 KB)
📄
CompactUnwindInfo.cpp
(55.24 KB)
📄
CompileUnit.cpp
(12.25 KB)
📄
CompilerDecl.cpp
(1.72 KB)
📄
CompilerDeclContext.cpp
(2.61 KB)
📄
CompilerType.cpp
(25.46 KB)
📄
DWARFCallFrameInfo.cpp
(39.32 KB)
📄
DebugMacros.cpp
(2.01 KB)
📄
DeclVendor.cpp
(1.05 KB)
📄
Declaration.cpp
(2.59 KB)
📄
FuncUnwinders.cpp
(21.43 KB)
📄
Function.cpp
(21.76 KB)
📄
LineEntry.cpp
(8.46 KB)
📄
LineTable.cpp
(21.06 KB)
📄
LocateSymbolFile.cpp
(14.52 KB)
📄
LocateSymbolFileMacOSX.cpp
(27.02 KB)
📄
ObjectFile.cpp
(28.16 KB)
📄
PostfixExpression.cpp
(6.92 KB)
📄
Symbol.cpp
(20.61 KB)
📄
SymbolContext.cpp
(42.63 KB)
📄
SymbolFile.cpp
(8.28 KB)
📄
SymbolVendor.cpp
(2.83 KB)
📄
Symtab.cpp
(38.59 KB)
📄
Type.cpp
(33.85 KB)
📄
TypeList.cpp
(7.25 KB)
📄
TypeMap.cpp
(8.02 KB)
📄
TypeSystem.cpp
(11.62 KB)
📄
UnwindPlan.cpp
(17.8 KB)
📄
UnwindTable.cpp
(6.45 KB)
📄
Variable.cpp
(24.04 KB)
📄
VariableList.cpp
(5.45 KB)
Editing: VariableList.cpp
//===-- VariableList.cpp --------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "lldb/Symbol/VariableList.h" #include "lldb/Symbol/Block.h" #include "lldb/Symbol/CompileUnit.h" #include "lldb/Symbol/Function.h" #include "lldb/Utility/RegularExpression.h" using namespace lldb; using namespace lldb_private; // VariableList constructor VariableList::VariableList() : m_variables() {} // Destructor VariableList::~VariableList() {} void VariableList::AddVariable(const VariableSP &var_sp) { m_variables.push_back(var_sp); } bool VariableList::AddVariableIfUnique(const lldb::VariableSP &var_sp) { if (FindVariableIndex(var_sp) == UINT32_MAX) { m_variables.push_back(var_sp); return true; } return false; } void VariableList::AddVariables(VariableList *variable_list) { if (variable_list) { std::copy(variable_list->m_variables.begin(), // source begin variable_list->m_variables.end(), // source end back_inserter(m_variables)); // destination } } void VariableList::Clear() { m_variables.clear(); } VariableSP VariableList::GetVariableAtIndex(size_t idx) const { VariableSP var_sp; if (idx < m_variables.size()) var_sp = m_variables[idx]; return var_sp; } VariableSP VariableList::RemoveVariableAtIndex(size_t idx) { VariableSP var_sp; if (idx < m_variables.size()) { var_sp = m_variables[idx]; m_variables.erase(m_variables.begin() + idx); } return var_sp; } uint32_t VariableList::FindVariableIndex(const VariableSP &var_sp) { iterator pos, end = m_variables.end(); for (pos = m_variables.begin(); pos != end; ++pos) { if (pos->get() == var_sp.get()) return std::distance(m_variables.begin(), pos); } return UINT32_MAX; } VariableSP VariableList::FindVariable(ConstString name, bool include_static_members) { VariableSP var_sp; iterator pos, end = m_variables.end(); for (pos = m_variables.begin(); pos != end; ++pos) { if ((*pos)->NameMatches(name)) { if (include_static_members || !(*pos)->IsStaticMember()) { var_sp = (*pos); break; } } } return var_sp; } VariableSP VariableList::FindVariable(ConstString name, lldb::ValueType value_type, bool include_static_members) { VariableSP var_sp; iterator pos, end = m_variables.end(); for (pos = m_variables.begin(); pos != end; ++pos) { if ((*pos)->NameMatches(name) && (*pos)->GetScope() == value_type) { if (include_static_members || !(*pos)->IsStaticMember()) { var_sp = (*pos); break; } } } return var_sp; } size_t VariableList::AppendVariablesIfUnique(VariableList &var_list) { const size_t initial_size = var_list.GetSize(); iterator pos, end = m_variables.end(); for (pos = m_variables.begin(); pos != end; ++pos) var_list.AddVariableIfUnique(*pos); return var_list.GetSize() - initial_size; } size_t VariableList::AppendVariablesIfUnique(const RegularExpression ®ex, VariableList &var_list, size_t &total_matches) { const size_t initial_size = var_list.GetSize(); iterator pos, end = m_variables.end(); for (pos = m_variables.begin(); pos != end; ++pos) { if ((*pos)->NameMatches(regex)) { // Note the total matches found total_matches++; // Only add this variable if it isn't already in the "var_list" var_list.AddVariableIfUnique(*pos); } } // Return the number of new unique variables added to "var_list" return var_list.GetSize() - initial_size; } size_t VariableList::AppendVariablesWithScope(lldb::ValueType type, VariableList &var_list, bool if_unique) { const size_t initial_size = var_list.GetSize(); iterator pos, end = m_variables.end(); for (pos = m_variables.begin(); pos != end; ++pos) { if ((*pos)->GetScope() == type) { if (if_unique) var_list.AddVariableIfUnique(*pos); else var_list.AddVariable(*pos); } } // Return the number of new unique variables added to "var_list" return var_list.GetSize() - initial_size; } uint32_t VariableList::FindIndexForVariable(Variable *variable) { VariableSP var_sp; iterator pos; const iterator begin = m_variables.begin(); const iterator end = m_variables.end(); for (pos = m_variables.begin(); pos != end; ++pos) { if ((*pos).get() == variable) return std::distance(begin, pos); } return UINT32_MAX; } size_t VariableList::MemorySize() const { size_t mem_size = sizeof(VariableList); const_iterator pos, end = m_variables.end(); for (pos = m_variables.begin(); pos != end; ++pos) mem_size += (*pos)->MemorySize(); return mem_size; } size_t VariableList::GetSize() const { return m_variables.size(); } void VariableList::Dump(Stream *s, bool show_context) const { // s.Printf("%.*p: ", (int)sizeof(void*) * 2, this); // s.Indent(); // s << "VariableList\n"; const_iterator pos, end = m_variables.end(); for (pos = m_variables.begin(); pos != end; ++pos) { (*pos)->Dump(s, show_context); } }
Upload File
Create Folder