1*dda28197Spatrick //===-- ClangExpressionVariable.cpp ---------------------------------------===//
2061da546Spatrick //
3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6061da546Spatrick //
7061da546Spatrick //===----------------------------------------------------------------------===//
8061da546Spatrick
9061da546Spatrick #include "ClangExpressionVariable.h"
10061da546Spatrick
11061da546Spatrick #include "lldb/Core/Value.h"
12061da546Spatrick #include "lldb/Core/ValueObjectConstResult.h"
13061da546Spatrick #include "lldb/Target/ExecutionContext.h"
14061da546Spatrick #include "lldb/Target/Process.h"
15061da546Spatrick #include "lldb/Utility/ConstString.h"
16061da546Spatrick #include "lldb/Utility/DataExtractor.h"
17061da546Spatrick #include "lldb/Utility/Stream.h"
18061da546Spatrick #include "clang/AST/ASTContext.h"
19061da546Spatrick
20061da546Spatrick using namespace lldb_private;
21061da546Spatrick using namespace clang;
22061da546Spatrick
ClangExpressionVariable(ExecutionContextScope * exe_scope,lldb::ByteOrder byte_order,uint32_t addr_byte_size)23061da546Spatrick ClangExpressionVariable::ClangExpressionVariable(
24061da546Spatrick ExecutionContextScope *exe_scope, lldb::ByteOrder byte_order,
25061da546Spatrick uint32_t addr_byte_size)
26061da546Spatrick : ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(),
27061da546Spatrick m_jit_vars() {
28061da546Spatrick m_flags = EVNone;
29061da546Spatrick m_frozen_sp =
30061da546Spatrick ValueObjectConstResult::Create(exe_scope, byte_order, addr_byte_size);
31061da546Spatrick }
32061da546Spatrick
ClangExpressionVariable(ExecutionContextScope * exe_scope,Value & value,ConstString name,uint16_t flags)33061da546Spatrick ClangExpressionVariable::ClangExpressionVariable(
34061da546Spatrick ExecutionContextScope *exe_scope, Value &value, ConstString name,
35061da546Spatrick uint16_t flags)
36061da546Spatrick : ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(),
37061da546Spatrick m_jit_vars() {
38061da546Spatrick m_flags = flags;
39061da546Spatrick m_frozen_sp = ValueObjectConstResult::Create(exe_scope, value, name);
40061da546Spatrick }
41061da546Spatrick
ClangExpressionVariable(const lldb::ValueObjectSP & valobj_sp)42061da546Spatrick ClangExpressionVariable::ClangExpressionVariable(
43061da546Spatrick const lldb::ValueObjectSP &valobj_sp)
44061da546Spatrick : ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(),
45061da546Spatrick m_jit_vars() {
46061da546Spatrick m_flags = EVNone;
47061da546Spatrick m_frozen_sp = valobj_sp;
48061da546Spatrick }
49061da546Spatrick
ClangExpressionVariable(ExecutionContextScope * exe_scope,ConstString name,const TypeFromUser & user_type,lldb::ByteOrder byte_order,uint32_t addr_byte_size)50061da546Spatrick ClangExpressionVariable::ClangExpressionVariable(
51061da546Spatrick ExecutionContextScope *exe_scope, ConstString name,
52061da546Spatrick const TypeFromUser &user_type, lldb::ByteOrder byte_order,
53061da546Spatrick uint32_t addr_byte_size)
54061da546Spatrick : ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(),
55061da546Spatrick m_jit_vars() {
56061da546Spatrick m_flags = EVNone;
57061da546Spatrick m_frozen_sp =
58061da546Spatrick ValueObjectConstResult::Create(exe_scope, byte_order, addr_byte_size);
59061da546Spatrick SetName(name);
60061da546Spatrick SetCompilerType(user_type);
61061da546Spatrick }
62061da546Spatrick
GetTypeFromUser()63061da546Spatrick TypeFromUser ClangExpressionVariable::GetTypeFromUser() {
64061da546Spatrick TypeFromUser tfu(m_frozen_sp->GetCompilerType());
65061da546Spatrick return tfu;
66061da546Spatrick }
67