9#ifndef LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_CLANGEXPRESSIONVARIABLE_H
10#define LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_CLANGEXPRESSIONVARIABLE_H
20#include "llvm/Support/Casting.h"
38class ValueObjectConstResult;
61 :
public llvm::RTTIExtends<ClangExpressionVariable, ExpressionVariable> {
90 for (
size_t index = 0, size = list.
GetSize(); index < size; ++index) {
94 llvm::dyn_cast<ClangExpressionVariable>(var_sp.get())) {
96 clang_var->GetParserVars(parser_id);
194 JITVarMap::iterator i =
m_jit_vars.find(parser_id);
The following values should not live beyond parsing.
ValueObjectProviderTy m_lldb_valobj_provider
Callback that provides a ValueObject for the specified frame.
const lldb_private::Symbol * m_lldb_sym
The original symbol for this variable, if it was a symbol.
lldb_private::Value m_lldb_value
The value found in LLDB for this variable.
lldb::VariableSP m_lldb_var
The original variable for this variable.
llvm::Value * m_llvm_value
The IR value corresponding to this variable; usually a GlobalValue.
const clang::NamedDecl * m_named_decl
The Decl corresponding to this variable.
"lldb/Expression/ClangExpressionVariable.h" Encapsulates one variable for the expression parser.
static ClangExpressionVariable * FindVariableInList(ExpressionVariableList &list, const clang::NamedDecl *decl, uint64_t parser_id)
Utility functions for dealing with ExpressionVariableLists in Clang- specific ways.
ParserVars * GetParserVars(uint64_t parser_id)
Access parser-specific variables.
std::map< uint64_t, JITVars > JITVarMap
bool PointValueAtData(Value &value, ExecutionContext *exe_ctx)
If the variable contains its own data, make a Value point at it.
void DisableJITVars(uint64_t parser_id)
Deallocate JIT-specific variables.
JITVars * GetJITVars(uint64_t parser_id)
TypeFromUser GetTypeFromUser()
const ClangExpressionVariable & operator=(const ClangExpressionVariable &)=delete
ClangExpressionVariable(const ClangExpressionVariable &)=delete
Members.
void EnableJITVars(uint64_t parser_id)
Make this variable usable for materializing for the JIT by allocating space for JIT-specific variable...
void EnableParserVars(uint64_t parser_id)
Make this variable usable by the parser by allocating space for parser- specific variables.
void DisableParserVars(uint64_t parser_id)
Deallocate parser-specific variables.
std::map< uint64_t, ParserVars > ParserVarMap
ParserVarMap m_parser_vars
A uniqued constant string class.
"lldb/Target/ExecutionContextScope.h" Inherit from this if your object can reconstruct its execution ...
"lldb/Target/ExecutionContext.h" A class that contains an execution context.
"lldb/Expression/ExpressionVariable.h" A list of variable references.
size_t GetSize()
Implementation of methods in ExpressionVariableListBase.
lldb::ExpressionVariableSP GetVariableAtIndex(size_t index)
A class that represents a running process on the host machine.
std::function< lldb::ValueObjectSP(ConstString, StackFrame *)> ValueObjectProviderTy
Functor that returns a ValueObjectSP for a variable given its name and the StackFrame of interest.
std::shared_ptr< lldb_private::ValueObject > ValueObjectSP
std::shared_ptr< lldb_private::ExpressionVariable > ExpressionVariableSP
ByteOrder
Byte ordering definitions.
std::shared_ptr< lldb_private::Variable > VariableSP
The following values are valid if the variable is used by JIT code.
size_t m_size
The space required for the variable, in bytes.
lldb::offset_t m_alignment
The required alignment of the variable, in bytes.
lldb::offset_t m_offset
The offset of the variable in the struct, in bytes.