1 //===-- ClangExpressionVariable.cpp ---------------------------------------===//
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
9 #include "ClangExpressionVariable.h"
11 #include "lldb/Core/Value.h"
12 #include "lldb/Core/ValueObjectConstResult.h"
13 #include "lldb/Target/ExecutionContext.h"
14 #include "lldb/Target/Process.h"
15 #include "lldb/Utility/ConstString.h"
16 #include "lldb/Utility/DataExtractor.h"
17 #include "lldb/Utility/Stream.h"
18 #include "clang/AST/ASTContext.h"
20 using namespace lldb_private
;
21 using namespace clang
;
23 char ClangExpressionVariable::ID
;
25 ClangExpressionVariable::ClangExpressionVariable(
26 ExecutionContextScope
*exe_scope
, lldb::ByteOrder byte_order
,
27 uint32_t addr_byte_size
)
28 : m_parser_vars(), m_jit_vars() {
31 ValueObjectConstResult::Create(exe_scope
, byte_order
, addr_byte_size
);
34 ClangExpressionVariable::ClangExpressionVariable(
35 ExecutionContextScope
*exe_scope
, Value
&value
, ConstString name
,
37 : m_parser_vars(), m_jit_vars() {
39 m_frozen_sp
= ValueObjectConstResult::Create(exe_scope
, value
, name
);
42 ClangExpressionVariable::ClangExpressionVariable(
43 const lldb::ValueObjectSP
&valobj_sp
)
44 : m_parser_vars(), m_jit_vars() {
46 m_frozen_sp
= valobj_sp
;
49 ClangExpressionVariable::ClangExpressionVariable(
50 ExecutionContextScope
*exe_scope
, ConstString name
,
51 const TypeFromUser
&user_type
, lldb::ByteOrder byte_order
,
52 uint32_t addr_byte_size
)
53 : m_parser_vars(), m_jit_vars() {
56 ValueObjectConstResult::Create(exe_scope
, byte_order
, addr_byte_size
);
58 SetCompilerType(user_type
);
61 TypeFromUser
ClangExpressionVariable::GetTypeFromUser() {
62 TypeFromUser
tfu(m_frozen_sp
->GetCompilerType());