xref: /freebsd/contrib/llvm-project/lldb/bindings/interface/SBFileExtensions.i (revision c8e7f78a3d28ff6e6223ed136ada8e1e2f34965e)
1 %extend lldb::SBFile {
2     static lldb::SBFile MakeBorrowed(lldb::FileSP BORROWED) {
3         return lldb::SBFile(BORROWED);
4     }
5     static lldb::SBFile MakeForcingIOMethods(lldb::FileSP FORCE_IO_METHODS) {
6         return lldb::SBFile(FORCE_IO_METHODS);
7     }
8     static lldb::SBFile MakeBorrowedForcingIOMethods(lldb::FileSP BORROWED_FORCE_IO_METHODS) {
9         return lldb::SBFile(BORROWED_FORCE_IO_METHODS);
10     }
11 
12 #ifdef SWIGPYTHON
13     %pythoncode {
14         @classmethod
15         def Create(cls, file, borrow=False, force_io_methods=False):
16             """
17             Create a SBFile from a python file object, with options.
18 
19             If borrow is set then the underlying file will
20             not be closed when the SBFile is closed or destroyed.
21 
22             If force_scripting_io is set then the python read/write
23             methods will be called even if a file descriptor is available.
24             """
25             if borrow:
26                 if force_io_methods:
27                     return cls.MakeBorrowedForcingIOMethods(file)
28                 else:
29                     return cls.MakeBorrowed(file)
30             else:
31                 if force_io_methods:
32                     return cls.MakeForcingIOMethods(file)
33                 else:
34                     return cls(file)
35     }
36 #endif
37 }
38