1 //===-- SBSourceManager.cpp -------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "lldb/API/SBDebugger.h"
11 #include "lldb/API/SBSourceManager.h"
12 #include "lldb/API/SBTarget.h"
13 #include "lldb/API/SBStream.h"
15 #include "lldb/API/SBFileSpec.h"
16 #include "lldb/Core/Debugger.h"
17 #include "lldb/Core/Stream.h"
18 #include "lldb/Core/StreamFile.h"
19 #include "lldb/Core/SourceManager.h"
21 #include "lldb/Target/Target.h"
23 namespace lldb_private
25 class SourceManagerImpl
28 SourceManagerImpl (const lldb::DebuggerSP &debugger_sp) :
29 m_debugger_wp (debugger_sp),
34 SourceManagerImpl (const lldb::TargetSP &target_sp) :
36 m_target_wp (target_sp)
40 SourceManagerImpl (const SourceManagerImpl &rhs)
44 m_debugger_wp = rhs.m_debugger_wp;
45 m_target_wp = rhs.m_target_wp;
49 DisplaySourceLinesWithLineNumbers (const lldb_private::FileSpec &file,
51 uint32_t context_before,
52 uint32_t context_after,
53 const char *current_line_cstr,
54 lldb_private::Stream *s)
59 lldb::TargetSP target_sp (m_target_wp.lock());
62 return target_sp->GetSourceManager().DisplaySourceLinesWithLineNumbers (file,
71 lldb::DebuggerSP debugger_sp (m_debugger_wp.lock());
74 return debugger_sp->GetSourceManager().DisplaySourceLinesWithLineNumbers (file,
86 lldb::DebuggerWP m_debugger_wp;
87 lldb::TargetWP m_target_wp;
93 using namespace lldb_private;
95 SBSourceManager::SBSourceManager (const SBDebugger &debugger)
97 m_opaque_ap.reset(new SourceManagerImpl (debugger.get_sp()));
100 SBSourceManager::SBSourceManager (const SBTarget &target)
102 m_opaque_ap.reset(new SourceManagerImpl (target.GetSP()));
105 SBSourceManager::SBSourceManager (const SBSourceManager &rhs)
110 m_opaque_ap.reset(new SourceManagerImpl (*(rhs.m_opaque_ap.get())));
113 const lldb::SBSourceManager &
114 SBSourceManager::operator = (const lldb::SBSourceManager &rhs)
116 m_opaque_ap.reset (new SourceManagerImpl (*(rhs.m_opaque_ap.get())));
120 SBSourceManager::~SBSourceManager()
125 SBSourceManager::DisplaySourceLinesWithLineNumbers
127 const SBFileSpec &file,
129 uint32_t context_before,
130 uint32_t context_after,
131 const char *current_line_cstr,
135 if (m_opaque_ap.get() == NULL)
138 return m_opaque_ap->DisplaySourceLinesWithLineNumbers (file.ref(),