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