forked from OSchip/llvm-project
92 lines
2.9 KiB
C++
92 lines
2.9 KiB
C++
//===-- 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 <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;
|
|
|
|
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
|
|
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
|