//===-- CommandContext.cpp --------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "lldb/Interpreter/CommandContext.h" #include "lldb/Core/Debugger.h" #include "lldb/Core/StreamString.h" #include "lldb/Interpreter/CommandObject.h" #include "lldb/Interpreter/CommandReturnObject.h" #include "lldb/Target/Process.h" #include "lldb/Target/Target.h" #include "lldb/Target/Thread.h" using namespace lldb; using namespace lldb_private; CommandContext::CommandContext () : m_exe_ctx () { } CommandContext::~CommandContext () { } Target * CommandContext::GetTarget() { return Debugger::GetSharedInstance().GetCurrentTarget().get(); } ExecutionContext & CommandContext::GetExecutionContext() { return m_exe_ctx; } void CommandContext::Update (ExecutionContext *override_context) { m_exe_ctx.Clear(); if (override_context != NULL) { m_exe_ctx.target = override_context->target; m_exe_ctx.process = override_context->process; m_exe_ctx.thread = override_context->thread; m_exe_ctx.frame = override_context->frame; } else { TargetSP target_sp (Debugger::GetSharedInstance().GetCurrentTarget()); if (target_sp) { m_exe_ctx.process = target_sp->GetProcessSP().get(); if (m_exe_ctx.process && m_exe_ctx.process->IsRunning() == false) { m_exe_ctx.thread = m_exe_ctx.process->GetThreadList().GetCurrentThread().get(); if (m_exe_ctx.thread == NULL) m_exe_ctx.thread = m_exe_ctx.process->GetThreadList().GetThreadAtIndex(0).get(); if (m_exe_ctx.thread) { m_exe_ctx.frame = m_exe_ctx.thread->GetCurrentFrame().get(); if (m_exe_ctx.frame == NULL) m_exe_ctx.frame = m_exe_ctx.thread->GetStackFrameAtIndex (0).get(); } } } } }