//===-- SWIG Interface for SBStream -----------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include namespace lldb { %feature("docstring", "Represents a destination for streaming data output to. By default, a string stream is created. For example (from test/source-manager/TestSourceManager.py), # Create the filespec for 'main.c'. filespec = lldb.SBFileSpec('main.c', False) source_mgr = self.dbg.GetSourceManager() # Use a string stream as the destination. stream = lldb.SBStream() source_mgr.DisplaySourceLinesWithLineNumbers(filespec, self.line, 2, # context before 2, # context after '=>', # prefix for current line stream) # 2 # 3 int main(int argc, char const *argv[]) { # => 4 printf('Hello world.\\n'); // Set break point at this line. # 5 return 0; # 6 } self.expect(stream.GetData(), 'Source code displayed correctly', exe=False, patterns = ['=> %d.*Hello world' % self.line])") SBStream; class SBStream { public: SBStream (); ~SBStream (); bool IsValid() const; explicit operator bool() const; %feature("docstring", " If this stream is not redirected to a file, it will maintain a local cache for the stream data which can be accessed using this accessor.") GetData; const char * GetData (); %feature("docstring", " If this stream is not redirected to a file, it will maintain a local cache for the stream output whose length can be accessed using this accessor.") GetSize; size_t GetSize(); // wrapping the variadic Printf() with a plain Print() // because it is hard to support varargs in SWIG bridgings %extend { void Print (const char* str) { self->Printf("%s", str); } } void RedirectToFile (const char *path, bool append); void RedirectToFile (lldb::SBFile file); void RedirectToFile (lldb::FileSP file); %extend { %feature("autodoc", "DEPRECATED, use RedirectToFile"); void RedirectToFileHandle (lldb::FileSP file, bool transfer_fh_ownership) { self->RedirectToFile(file); } } void RedirectToFileDescriptor (int fd, bool transfer_fh_ownership); %feature("docstring", " If the stream is redirected to a file, forget about the file and if ownership of the file was transferred to this object, close the file. If the stream is backed by a local cache, clear this cache.") Clear; void Clear (); }; } // namespace lldb