Convert FileSystem::Open() to return Expected<FileUP>
Summary: This patch converts FileSystem::Open from this prototype: Status Open(File &File, const FileSpec &file_spec, ...); to this one: llvm::Expected<std::unique_ptr<File>> Open(const FileSpec &file_spec, ...); This is beneficial on its own, as llvm::Expected is a more modern and recommended error type than Status. It is also a necessary step towards https://reviews.llvm.org/D67891, and further developments for lldb_private::File. Reviewers: JDevlieghere, jasonmolenda, labath Reviewed By: labath Subscribers: mgorny, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D67996 llvm-svn: 373003
This commit is contained in:
@@ -949,11 +949,6 @@ PythonFile::PythonFile() : PythonObject() {}
|
||||
|
||||
PythonFile::PythonFile(File &file, const char *mode) { Reset(file, mode); }
|
||||
|
||||
PythonFile::PythonFile(const char *path, const char *mode) {
|
||||
lldb_private::File file;
|
||||
FileSystem::Instance().Open(file, FileSpec(path), GetOptionsFromMode(mode));
|
||||
Reset(file, mode);
|
||||
}
|
||||
|
||||
PythonFile::PythonFile(PyRefType type, PyObject *o) { Reset(type, o); }
|
||||
|
||||
@@ -1036,17 +1031,19 @@ uint32_t PythonFile::GetOptionsFromMode(llvm::StringRef mode) {
|
||||
.Default(0);
|
||||
}
|
||||
|
||||
bool PythonFile::GetUnderlyingFile(File &file) const {
|
||||
FileUP PythonFile::GetUnderlyingFile() const {
|
||||
if (!IsValid())
|
||||
return false;
|
||||
return nullptr;
|
||||
|
||||
file.Close();
|
||||
// We don't own the file descriptor returned by this function, make sure the
|
||||
// File object knows about that.
|
||||
PythonString py_mode = GetAttributeValue("mode").AsType<PythonString>();
|
||||
auto options = PythonFile::GetOptionsFromMode(py_mode.GetString());
|
||||
file.SetDescriptor(PyObject_AsFileDescriptor(m_py_obj), options, false);
|
||||
return file.IsValid();
|
||||
auto file = std::make_unique<File>(PyObject_AsFileDescriptor(m_py_obj),
|
||||
options, false);
|
||||
if (!file->IsValid())
|
||||
return nullptr;
|
||||
return file;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user