Initial import of lldb
Change-Id: Ib244e837bee349effa12b2ff6ffffbe3d730e929
This commit is contained in:
146
external/bsd/llvm/dist/lldb/source/API/SBSourceManager.cpp
vendored
Normal file
146
external/bsd/llvm/dist/lldb/source/API/SBSourceManager.cpp
vendored
Normal file
@@ -0,0 +1,146 @@
|
||||
//===-- SBSourceManager.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/lldb-python.h"
|
||||
|
||||
#include "lldb/API/SBDebugger.h"
|
||||
#include "lldb/API/SBSourceManager.h"
|
||||
#include "lldb/API/SBTarget.h"
|
||||
#include "lldb/API/SBStream.h"
|
||||
|
||||
#include "lldb/API/SBFileSpec.h"
|
||||
#include "lldb/Core/Debugger.h"
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/StreamFile.h"
|
||||
#include "lldb/Core/SourceManager.h"
|
||||
|
||||
#include "lldb/Target/Target.h"
|
||||
|
||||
namespace lldb_private
|
||||
{
|
||||
class SourceManagerImpl
|
||||
{
|
||||
public:
|
||||
SourceManagerImpl (const lldb::DebuggerSP &debugger_sp) :
|
||||
m_debugger_wp (debugger_sp),
|
||||
m_target_wp ()
|
||||
{
|
||||
}
|
||||
|
||||
SourceManagerImpl (const lldb::TargetSP &target_sp) :
|
||||
m_debugger_wp (),
|
||||
m_target_wp (target_sp)
|
||||
{
|
||||
}
|
||||
|
||||
SourceManagerImpl (const SourceManagerImpl &rhs)
|
||||
{
|
||||
if (&rhs == this)
|
||||
return;
|
||||
m_debugger_wp = rhs.m_debugger_wp;
|
||||
m_target_wp = rhs.m_target_wp;
|
||||
}
|
||||
|
||||
size_t
|
||||
DisplaySourceLinesWithLineNumbers (const lldb_private::FileSpec &file,
|
||||
uint32_t line,
|
||||
uint32_t context_before,
|
||||
uint32_t context_after,
|
||||
const char *current_line_cstr,
|
||||
lldb_private::Stream *s)
|
||||
{
|
||||
if (!file)
|
||||
return 0;
|
||||
|
||||
lldb::TargetSP target_sp (m_target_wp.lock());
|
||||
if (target_sp)
|
||||
{
|
||||
return target_sp->GetSourceManager().DisplaySourceLinesWithLineNumbers (file,
|
||||
line,
|
||||
context_before,
|
||||
context_after,
|
||||
current_line_cstr,
|
||||
s);
|
||||
}
|
||||
else
|
||||
{
|
||||
lldb::DebuggerSP debugger_sp (m_debugger_wp.lock());
|
||||
if (debugger_sp)
|
||||
{
|
||||
return debugger_sp->GetSourceManager().DisplaySourceLinesWithLineNumbers (file,
|
||||
line,
|
||||
context_before,
|
||||
context_after,
|
||||
current_line_cstr,
|
||||
s);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
private:
|
||||
lldb::DebuggerWP m_debugger_wp;
|
||||
lldb::TargetWP m_target_wp;
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
using namespace lldb;
|
||||
using namespace lldb_private;
|
||||
|
||||
SBSourceManager::SBSourceManager (const SBDebugger &debugger)
|
||||
{
|
||||
m_opaque_ap.reset(new SourceManagerImpl (debugger.get_sp()));
|
||||
}
|
||||
|
||||
SBSourceManager::SBSourceManager (const SBTarget &target)
|
||||
{
|
||||
m_opaque_ap.reset(new SourceManagerImpl (target.GetSP()));
|
||||
}
|
||||
|
||||
SBSourceManager::SBSourceManager (const SBSourceManager &rhs)
|
||||
{
|
||||
if (&rhs == this)
|
||||
return;
|
||||
|
||||
m_opaque_ap.reset(new SourceManagerImpl (*(rhs.m_opaque_ap.get())));
|
||||
}
|
||||
|
||||
const lldb::SBSourceManager &
|
||||
SBSourceManager::operator = (const lldb::SBSourceManager &rhs)
|
||||
{
|
||||
m_opaque_ap.reset (new SourceManagerImpl (*(rhs.m_opaque_ap.get())));
|
||||
return *this;
|
||||
}
|
||||
|
||||
SBSourceManager::~SBSourceManager()
|
||||
{
|
||||
}
|
||||
|
||||
size_t
|
||||
SBSourceManager::DisplaySourceLinesWithLineNumbers
|
||||
(
|
||||
const SBFileSpec &file,
|
||||
uint32_t line,
|
||||
uint32_t context_before,
|
||||
uint32_t context_after,
|
||||
const char *current_line_cstr,
|
||||
SBStream &s
|
||||
)
|
||||
{
|
||||
if (m_opaque_ap.get() == NULL)
|
||||
return 0;
|
||||
|
||||
return m_opaque_ap->DisplaySourceLinesWithLineNumbers (file.ref(),
|
||||
line,
|
||||
context_before,
|
||||
context_after,
|
||||
current_line_cstr,
|
||||
s.get());
|
||||
}
|
||||
Reference in New Issue
Block a user