summaryrefslogtreecommitdiff
path: root/lldb/bindings/interface/SBFile.i
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/bindings/interface/SBFile.i')
-rw-r--r--lldb/bindings/interface/SBFile.i101
1 files changed, 101 insertions, 0 deletions
diff --git a/lldb/bindings/interface/SBFile.i b/lldb/bindings/interface/SBFile.i
new file mode 100644
index 0000000000000..a19666995cd31
--- /dev/null
+++ b/lldb/bindings/interface/SBFile.i
@@ -0,0 +1,101 @@
+//===-- SWIG Interface for SBFile -----------------------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+
+namespace lldb {
+
+%feature("docstring",
+"Represents a file."
+) SBFile;
+
+class SBFile
+{
+public:
+
+ SBFile();
+
+ %feature("docstring", "
+ Initialize a SBFile from a file descriptor. mode is
+ 'r', 'r+', or 'w', like fdopen.");
+ SBFile(int fd, const char *mode, bool transfer_ownership);
+
+ %feature("docstring", "initialize a SBFile from a python file object");
+ SBFile(FileSP file);
+
+ %extend {
+ static lldb::SBFile MakeBorrowed(lldb::FileSP BORROWED) {
+ return lldb::SBFile(BORROWED);
+ }
+ static lldb::SBFile MakeForcingIOMethods(lldb::FileSP FORCE_IO_METHODS) {
+ return lldb::SBFile(FORCE_IO_METHODS);
+ }
+ static lldb::SBFile MakeBorrowedForcingIOMethods(lldb::FileSP BORROWED_FORCE_IO_METHODS) {
+ return lldb::SBFile(BORROWED_FORCE_IO_METHODS);
+ }
+ }
+
+#ifdef SWIGPYTHON
+ %pythoncode {
+ @classmethod
+ def Create(cls, file, borrow=False, force_io_methods=False):
+ """
+ Create a SBFile from a python file object, with options.
+
+ If borrow is set then the underlying file will
+ not be closed when the SBFile is closed or destroyed.
+
+ If force_scripting_io is set then the python read/write
+ methods will be called even if a file descriptor is available.
+ """
+ if borrow:
+ if force_io_methods:
+ return cls.MakeBorrowedForcingIOMethods(file)
+ else:
+ return cls.MakeBorrowed(file)
+ else:
+ if force_io_methods:
+ return cls.MakeForcingIOMethods(file)
+ else:
+ return cls(file)
+ }
+#endif
+
+ ~SBFile ();
+
+ %feature("autodoc", "Read(buffer) -> SBError, bytes_read") Read;
+ SBError Read(uint8_t *buf, size_t num_bytes, size_t *OUTPUT);
+
+ %feature("autodoc", "Write(buffer) -> SBError, written_read") Write;
+ SBError Write(const uint8_t *buf, size_t num_bytes, size_t *OUTPUT);
+
+ void Flush();
+
+ bool IsValid() const;
+
+ operator bool() const;
+
+ SBError Close();
+
+ %feature("docstring", "
+ Convert this SBFile into a python io.IOBase file object.
+
+ If the SBFile is itself a wrapper around a python file object,
+ this will return that original object.
+
+ The file returned from here should be considered borrowed,
+ in the sense that you may read and write to it, and flush it,
+ etc, but you should not close it. If you want to close the
+ SBFile, call SBFile.Close().
+
+ If there is no underlying python file to unwrap, GetFile will
+ use the file descriptor, if availble to create a new python
+ file object using `open(fd, mode=..., closefd=False)`
+ ");
+ FileSP GetFile();
+};
+
+} // namespace lldb