Instead of maintaining separate swig interface files, we can use the API headers directly. They implement the exact same C++ APIs and we can conditionally include the python extensions as needed. To remove the swig extensions from the API headers when building the LLDB framework, we can use the unifdef tool when it is available. Otherwise we just copy them as-is. Differential Revision: https://reviews.llvm.org/D142926
38 lines
1.3 KiB
OpenEdge ABL
38 lines
1.3 KiB
OpenEdge ABL
%extend lldb::SBFile {
|
|
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
|
|
}
|