15ffd83dbSDimitry Andric //===-- ClangExpressionVariable.cpp ---------------------------------------===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric 
90b57cec5SDimitry Andric #include "ClangExpressionVariable.h"
100b57cec5SDimitry Andric 
110b57cec5SDimitry Andric #include "lldb/Core/Value.h"
120b57cec5SDimitry Andric #include "lldb/Core/ValueObjectConstResult.h"
130b57cec5SDimitry Andric #include "lldb/Target/ExecutionContext.h"
140b57cec5SDimitry Andric #include "lldb/Target/Process.h"
150b57cec5SDimitry Andric #include "lldb/Utility/ConstString.h"
160b57cec5SDimitry Andric #include "lldb/Utility/DataExtractor.h"
170b57cec5SDimitry Andric #include "lldb/Utility/Stream.h"
180b57cec5SDimitry Andric #include "clang/AST/ASTContext.h"
190b57cec5SDimitry Andric 
200b57cec5SDimitry Andric using namespace lldb_private;
210b57cec5SDimitry Andric using namespace clang;
220b57cec5SDimitry Andric 
23*06c3fb27SDimitry Andric char ClangExpressionVariable::ID;
24*06c3fb27SDimitry Andric 
ClangExpressionVariable(ExecutionContextScope * exe_scope,lldb::ByteOrder byte_order,uint32_t addr_byte_size)250b57cec5SDimitry Andric ClangExpressionVariable::ClangExpressionVariable(
260b57cec5SDimitry Andric     ExecutionContextScope *exe_scope, lldb::ByteOrder byte_order,
270b57cec5SDimitry Andric     uint32_t addr_byte_size)
28*06c3fb27SDimitry Andric     : m_parser_vars(), m_jit_vars() {
290b57cec5SDimitry Andric   m_flags = EVNone;
300b57cec5SDimitry Andric   m_frozen_sp =
310b57cec5SDimitry Andric       ValueObjectConstResult::Create(exe_scope, byte_order, addr_byte_size);
320b57cec5SDimitry Andric }
330b57cec5SDimitry Andric 
ClangExpressionVariable(ExecutionContextScope * exe_scope,Value & value,ConstString name,uint16_t flags)340b57cec5SDimitry Andric ClangExpressionVariable::ClangExpressionVariable(
350b57cec5SDimitry Andric     ExecutionContextScope *exe_scope, Value &value, ConstString name,
360b57cec5SDimitry Andric     uint16_t flags)
37*06c3fb27SDimitry Andric     : m_parser_vars(), m_jit_vars() {
380b57cec5SDimitry Andric   m_flags = flags;
390b57cec5SDimitry Andric   m_frozen_sp = ValueObjectConstResult::Create(exe_scope, value, name);
400b57cec5SDimitry Andric }
410b57cec5SDimitry Andric 
ClangExpressionVariable(const lldb::ValueObjectSP & valobj_sp)420b57cec5SDimitry Andric ClangExpressionVariable::ClangExpressionVariable(
430b57cec5SDimitry Andric     const lldb::ValueObjectSP &valobj_sp)
44*06c3fb27SDimitry Andric     : m_parser_vars(), m_jit_vars() {
450b57cec5SDimitry Andric   m_flags = EVNone;
460b57cec5SDimitry Andric   m_frozen_sp = valobj_sp;
470b57cec5SDimitry Andric }
480b57cec5SDimitry Andric 
ClangExpressionVariable(ExecutionContextScope * exe_scope,ConstString name,const TypeFromUser & user_type,lldb::ByteOrder byte_order,uint32_t addr_byte_size)490b57cec5SDimitry Andric ClangExpressionVariable::ClangExpressionVariable(
500b57cec5SDimitry Andric     ExecutionContextScope *exe_scope, ConstString name,
510b57cec5SDimitry Andric     const TypeFromUser &user_type, lldb::ByteOrder byte_order,
520b57cec5SDimitry Andric     uint32_t addr_byte_size)
53*06c3fb27SDimitry Andric     : m_parser_vars(), m_jit_vars() {
540b57cec5SDimitry Andric   m_flags = EVNone;
550b57cec5SDimitry Andric   m_frozen_sp =
560b57cec5SDimitry Andric       ValueObjectConstResult::Create(exe_scope, byte_order, addr_byte_size);
570b57cec5SDimitry Andric   SetName(name);
580b57cec5SDimitry Andric   SetCompilerType(user_type);
590b57cec5SDimitry Andric }
600b57cec5SDimitry Andric 
GetTypeFromUser()610b57cec5SDimitry Andric TypeFromUser ClangExpressionVariable::GetTypeFromUser() {
620b57cec5SDimitry Andric   TypeFromUser tfu(m_frozen_sp->GetCompilerType());
630b57cec5SDimitry Andric   return tfu;
640b57cec5SDimitry Andric }
65