1*80814287SRaphael Isemann //===-- ClangExpressionVariable.cpp ---------------------------------------===//
2e33724f3SSean Callanan //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6e33724f3SSean Callanan //
7e33724f3SSean Callanan //===----------------------------------------------------------------------===//
8e33724f3SSean Callanan 
9e33724f3SSean Callanan #include "ClangExpressionVariable.h"
10e33724f3SSean Callanan 
11e33724f3SSean Callanan #include "lldb/Core/Value.h"
12e33724f3SSean Callanan #include "lldb/Core/ValueObjectConstResult.h"
13e33724f3SSean Callanan #include "lldb/Target/ExecutionContext.h"
14e33724f3SSean Callanan #include "lldb/Target/Process.h"
15bf9a7730SZachary Turner #include "lldb/Utility/ConstString.h"
16666cc0b2SZachary Turner #include "lldb/Utility/DataExtractor.h"
17bf9a7730SZachary Turner #include "lldb/Utility/Stream.h"
18b9c1b51eSKate Stone #include "clang/AST/ASTContext.h"
19e33724f3SSean Callanan 
20e33724f3SSean Callanan using namespace lldb_private;
21e33724f3SSean Callanan using namespace clang;
22e33724f3SSean Callanan 
ClangExpressionVariable(ExecutionContextScope * exe_scope,lldb::ByteOrder byte_order,uint32_t addr_byte_size)23b9c1b51eSKate Stone ClangExpressionVariable::ClangExpressionVariable(
24b9c1b51eSKate Stone     ExecutionContextScope *exe_scope, lldb::ByteOrder byte_order,
25b9c1b51eSKate Stone     uint32_t addr_byte_size)
26b9c1b51eSKate Stone     : ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(),
27b9c1b51eSKate Stone       m_jit_vars() {
28bc8ac34eSSean Callanan   m_flags = EVNone;
29b9c1b51eSKate Stone   m_frozen_sp =
30b9c1b51eSKate Stone       ValueObjectConstResult::Create(exe_scope, byte_order, addr_byte_size);
31e33724f3SSean Callanan }
32e33724f3SSean Callanan 
ClangExpressionVariable(ExecutionContextScope * exe_scope,Value & value,ConstString name,uint16_t flags)33b9c1b51eSKate Stone ClangExpressionVariable::ClangExpressionVariable(
340e4c4821SAdrian Prantl     ExecutionContextScope *exe_scope, Value &value, ConstString name,
35b9c1b51eSKate Stone     uint16_t flags)
36b9c1b51eSKate Stone     : ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(),
37b9c1b51eSKate Stone       m_jit_vars() {
38bc8ac34eSSean Callanan   m_flags = flags;
39bc8ac34eSSean Callanan   m_frozen_sp = ValueObjectConstResult::Create(exe_scope, value, name);
40e33724f3SSean Callanan }
41e33724f3SSean Callanan 
ClangExpressionVariable(const lldb::ValueObjectSP & valobj_sp)42b9c1b51eSKate Stone ClangExpressionVariable::ClangExpressionVariable(
43b9c1b51eSKate Stone     const lldb::ValueObjectSP &valobj_sp)
44b9c1b51eSKate Stone     : ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(),
45b9c1b51eSKate Stone       m_jit_vars() {
46bc8ac34eSSean Callanan   m_flags = EVNone;
47bc8ac34eSSean Callanan   m_frozen_sp = valobj_sp;
48e33724f3SSean Callanan }
49e33724f3SSean Callanan 
ClangExpressionVariable(ExecutionContextScope * exe_scope,ConstString name,const TypeFromUser & user_type,lldb::ByteOrder byte_order,uint32_t addr_byte_size)50b9c1b51eSKate Stone ClangExpressionVariable::ClangExpressionVariable(
510e4c4821SAdrian Prantl     ExecutionContextScope *exe_scope, ConstString name,
52b9c1b51eSKate Stone     const TypeFromUser &user_type, lldb::ByteOrder byte_order,
53b9c1b51eSKate Stone     uint32_t addr_byte_size)
54b9c1b51eSKate Stone     : ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(),
55b9c1b51eSKate Stone       m_jit_vars() {
569301ec11SSean Callanan   m_flags = EVNone;
57b9c1b51eSKate Stone   m_frozen_sp =
58b9c1b51eSKate Stone       ValueObjectConstResult::Create(exe_scope, byte_order, addr_byte_size);
599301ec11SSean Callanan   SetName(name);
609301ec11SSean Callanan   SetCompilerType(user_type);
619301ec11SSean Callanan }
629301ec11SSean Callanan 
GetTypeFromUser()63b9c1b51eSKate Stone TypeFromUser ClangExpressionVariable::GetTypeFromUser() {
64e33724f3SSean Callanan   TypeFromUser tfu(m_frozen_sp->GetCompilerType());
65e33724f3SSean Callanan   return tfu;
66e33724f3SSean Callanan }
67