1 //===-- ClangExpressionVariable.cpp -----------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #include "ClangExpressionVariable.h"
11 
12 #include "lldb/Core/ConstString.h"
13 #include "lldb/Core/DataExtractor.h"
14 #include "lldb/Core/Stream.h"
15 #include "lldb/Core/Value.h"
16 #include "lldb/Core/ValueObjectConstResult.h"
17 #include "lldb/Target/ExecutionContext.h"
18 #include "lldb/Target/Process.h"
19 #include "clang/AST/ASTContext.h"
20 
21 using namespace lldb_private;
22 using namespace clang;
23 
24 const char *g_clang_expression_variable_kind_name = "ClangExpressionVariable";
25 
26 ClangExpressionVariable::ClangExpressionVariable(
27     ExecutionContextScope *exe_scope, lldb::ByteOrder byte_order,
28     uint32_t addr_byte_size)
29     : ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(),
30       m_jit_vars() {
31   m_flags = EVNone;
32   m_frozen_sp =
33       ValueObjectConstResult::Create(exe_scope, byte_order, addr_byte_size);
34 }
35 
36 ClangExpressionVariable::ClangExpressionVariable(
37     ExecutionContextScope *exe_scope, Value &value, const ConstString &name,
38     uint16_t flags)
39     : ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(),
40       m_jit_vars() {
41   m_flags = flags;
42   m_frozen_sp = ValueObjectConstResult::Create(exe_scope, value, name);
43 }
44 
45 ClangExpressionVariable::ClangExpressionVariable(
46     const lldb::ValueObjectSP &valobj_sp)
47     : ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(),
48       m_jit_vars() {
49   m_flags = EVNone;
50   m_frozen_sp = valobj_sp;
51 }
52 
53 ClangExpressionVariable::ClangExpressionVariable(
54     ExecutionContextScope *exe_scope, const ConstString &name,
55     const TypeFromUser &user_type, lldb::ByteOrder byte_order,
56     uint32_t addr_byte_size)
57     : ExpressionVariable(LLVMCastKind::eKindClang), m_parser_vars(),
58       m_jit_vars() {
59   m_flags = EVNone;
60   m_frozen_sp =
61       ValueObjectConstResult::Create(exe_scope, byte_order, addr_byte_size);
62   SetName(name);
63   SetCompilerType(user_type);
64 }
65 
66 TypeFromUser ClangExpressionVariable::GetTypeFromUser() {
67   TypeFromUser tfu(m_frozen_sp->GetCompilerType());
68   return tfu;
69 }
70