labath added a comment.

While I am fully in favour of removing the SetXXX methods, and it does seem 
like some amount of shared_ptrs will be needed at the (though I don't fully 
understand your vission yet), I don't really like this proliferation of 
shared_ptrs everywhere (there's way too many of shared_ptrs in lldb already). 
I'd like it to be possible to use these APIs in the simplest cases without any 
shared_ptrs involved. For instance, instead of `Status FileSystem::Open(FileSP 
&, FileSpec, uint32_t, uint32_t, bool)`, we could have `Expected<File> 
FileSystem::Open(FileSpec, uint32_t, uint32_t, bool)` or 
`Expected<std::unique_ptr<File>> FileSystem::Open(FileSpec, uint32_t, uint32_t, 
bool)`. The first option would require making the File class movable (so you 
could write `file = File(...)` instead of `file.SetXXX(...)`, while the second 
option would enable fully immutable File objects. Given that we already have 
`File::Close` (and ergo, a natural representation for the moved-from state), 
I'd try to go for the first option.

Could we make changes like that first, and later decide how much shared_ptring 
needs to be done? One can always convert a non-shared pointer into a shared 
one, but the other direction is more tricky. In the mean time, I'll respond to 
the lldb-dev thread you started (thanks for doing that!) to get a better idea 
of what you're trying to do here.



================
Comment at: lldb/include/lldb/Core/Debugger.h:123-131
+  lldb_private::File &GetInputFile() { return *m_input_file_sp; }
+
+  lldb_private::File &GetOutputFile() { return m_output_stream_sp->GetFile(); }
+
+  lldb_private::File &GetErrorFile() { return m_error_stream_sp->GetFile(); }
+
+  lldb_private::StreamFile &GetOutputStream() { return *m_output_stream_sp; }
----------------
The lldb_private qualification is superfluous here.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67891/new/

https://reviews.llvm.org/D67891



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to