llvm-project/lldb/scripts/interface/SBStream.i

101 lines
3.3 KiB
C++

//===-- SWIG Interface for SBStream -----------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include <stdio.h>
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;
%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
RedirectToFileHandle (FILE *fh, bool transfer_fh_ownership);
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