1//===-- SWIG Interface for SBSourceManager ----------------------*- C++ -*-===//
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
9namespace lldb {
10
11%feature("docstring",
12"Represents a central authority for displaying source code.
13
14For example (from test/source-manager/TestSourceManager.py),
15
16        # Create the filespec for 'main.c'.
17        filespec = lldb.SBFileSpec('main.c', False)
18        source_mgr = self.dbg.GetSourceManager()
19        # Use a string stream as the destination.
20        stream = lldb.SBStream()
21        source_mgr.DisplaySourceLinesWithLineNumbers(filespec,
22                                                     self.line,
23                                                     2, # context before
24                                                     2, # context after
25                                                     '=>', # prefix for current line
26                                                     stream)
27
28        #    2
29        #    3    int main(int argc, char const *argv[]) {
30        # => 4        printf('Hello world.\\n'); // Set break point at this line.
31        #    5        return 0;
32        #    6    }
33        self.expect(stream.GetData(), 'Source code displayed correctly',
34                    exe=False,
35            patterns = ['=> %d.*Hello world' % self.line])") SBSourceManager;
36class SBSourceManager
37{
38public:
39    SBSourceManager (const lldb::SBSourceManager &rhs);
40
41    ~SBSourceManager();
42
43    size_t
44    DisplaySourceLinesWithLineNumbers (const lldb::SBFileSpec &file,
45                                       uint32_t line,
46                                       uint32_t context_before,
47                                       uint32_t context_after,
48                                       const char* current_line_cstr,
49                                       lldb::SBStream &s);
50    size_t
51    DisplaySourceLinesWithLineNumbersAndColumn (const lldb::SBFileSpec &file,
52                                                uint32_t line, uint32_t column,
53                                                uint32_t context_before,
54                                                uint32_t context_after,
55                                                const char* current_line_cstr,
56                                                lldb::SBStream &s);
57};
58
59} // namespace lldb
60