1//===-- ClangExpressionVariable.cpp ---------------------------------------===//
2//
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
6//
7//===----------------------------------------------------------------------===//
8
9#include "ClangExpressionVariable.h"
10
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"
19
20using namespace lldb_private;
21using namespace clang;
22
23char ClangExpressionVariable::ID;
24
25ClangExpressionVariable::ClangExpressionVariable(
26    ExecutionContextScope *exe_scope, lldb::ByteOrder byte_order,
27    uint32_t addr_byte_size)
28    : m_parser_vars(), m_jit_vars() {
29  m_flags = EVNone;
30  m_frozen_sp =
31      ValueObjectConstResult::Create(exe_scope, byte_order, addr_byte_size);
32}
33
34ClangExpressionVariable::ClangExpressionVariable(
35    ExecutionContextScope *exe_scope, Value &value, ConstString name,
36    uint16_t flags)
37    : m_parser_vars(), m_jit_vars() {
38  m_flags = flags;
39  m_frozen_sp = ValueObjectConstResult::Create(exe_scope, value, name);
40}
41
42ClangExpressionVariable::ClangExpressionVariable(
43    const lldb::ValueObjectSP &valobj_sp)
44    : m_parser_vars(), m_jit_vars() {
45  m_flags = EVNone;
46  m_frozen_sp = valobj_sp;
47}
48
49ClangExpressionVariable::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() {
54  m_flags = EVNone;
55  m_frozen_sp =
56      ValueObjectConstResult::Create(exe_scope, byte_order, addr_byte_size);
57  SetName(name);
58  SetCompilerType(user_type);
59}
60
61TypeFromUser ClangExpressionVariable::GetTypeFromUser() {
62  TypeFromUser tfu(m_frozen_sp->GetCompilerType());
63  return tfu;
64}
65