xref: /openbsd-src/gnu/llvm/lldb/bindings/interface/SBSourceManager.i (revision be691f3bb6417f04a68938fadbcaee2d5795e764)
1061da546Spatrick //===-- SWIG Interface for SBSourceManager ----------------------*- C++ -*-===//
2061da546Spatrick //
3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information.
5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6061da546Spatrick //
7061da546Spatrick //===----------------------------------------------------------------------===//
8061da546Spatrick 
9061da546Spatrick namespace lldb {
10061da546Spatrick 
11061da546Spatrick %feature("docstring",
12061da546Spatrick "Represents a central authority for displaying source code.
13061da546Spatrick 
14*be691f3bSpatrick For example (from test/source-manager/TestSourceManager.py), ::
15061da546Spatrick 
16061da546Spatrick         # Create the filespec for 'main.c'.
17061da546Spatrick         filespec = lldb.SBFileSpec('main.c', False)
18061da546Spatrick         source_mgr = self.dbg.GetSourceManager()
19061da546Spatrick         # Use a string stream as the destination.
20061da546Spatrick         stream = lldb.SBStream()
21061da546Spatrick         source_mgr.DisplaySourceLinesWithLineNumbers(filespec,
22061da546Spatrick                                                      self.line,
23061da546Spatrick                                                      2, # context before
24061da546Spatrick                                                      2, # context after
25061da546Spatrick                                                      '=>', # prefix for current line
26061da546Spatrick                                                      stream)
27061da546Spatrick 
28061da546Spatrick         #    2
29061da546Spatrick         #    3    int main(int argc, char const *argv[]) {
30061da546Spatrick         # => 4        printf('Hello world.\\n'); // Set break point at this line.
31061da546Spatrick         #    5        return 0;
32061da546Spatrick         #    6    }
33061da546Spatrick         self.expect(stream.GetData(), 'Source code displayed correctly',
34061da546Spatrick                     exe=False,
35061da546Spatrick             patterns = ['=> %d.*Hello world' % self.line])") SBSourceManager;
36061da546Spatrick class SBSourceManager
37061da546Spatrick {
38061da546Spatrick public:
39061da546Spatrick     SBSourceManager (const lldb::SBSourceManager &rhs);
40061da546Spatrick 
41061da546Spatrick     ~SBSourceManager();
42061da546Spatrick 
43061da546Spatrick     size_t
44061da546Spatrick     DisplaySourceLinesWithLineNumbers (const lldb::SBFileSpec &file,
45061da546Spatrick                                        uint32_t line,
46061da546Spatrick                                        uint32_t context_before,
47061da546Spatrick                                        uint32_t context_after,
48061da546Spatrick                                        const char* current_line_cstr,
49061da546Spatrick                                        lldb::SBStream &s);
50061da546Spatrick     size_t
51061da546Spatrick     DisplaySourceLinesWithLineNumbersAndColumn (const lldb::SBFileSpec &file,
52061da546Spatrick                                                 uint32_t line, uint32_t column,
53061da546Spatrick                                                 uint32_t context_before,
54061da546Spatrick                                                 uint32_t context_after,
55061da546Spatrick                                                 const char* current_line_cstr,
56061da546Spatrick                                                 lldb::SBStream &s);
57061da546Spatrick };
58061da546Spatrick 
59061da546Spatrick } // namespace lldb
60