[Lldb-commits] [lldb] Add new Python API `SBCommandInterpreter::GetTranscript()` (PR #90703)
via lldb-commits
lldb-commits at lists.llvm.org
Thu May 16 09:29:33 PDT 2024
================
@@ -1891,6 +1893,12 @@ bool CommandInterpreter::HandleCommand(const char *command_line,
m_transcript_stream << "(lldb) " << command_line << '\n';
+ // The same `transcript_item` will be used below to add output and error of
+ // the command.
+ auto transcript_item = std::make_shared<StructuredData::Dictionary>();
----------------
royitaqi wrote:
Two reasons for using the `shared_ptr`:
1. `m_transcript` holds a `shared_ptr` anyways. The `m_transcript->AddItem(transcript_item)` call below this line also requires a `shared_ptr`.
2. Many lines below this line, the `transcript_item` is used again in order to add the command's output and error.
If we use `unique_ptr` instead, then the code will look like:
```
auto transcript_item = std::make_unique<StructuredData::Dictionary>();
transcript_item->AddStringItem("command", command_line);
m_transcript->AddItem(std::move(transcript_item));
...
auto last_transcript_item = m_transcript.last();
last_transcript_item->AddStringItem("output", result.GetOutputData());
last_transcript_item->AddStringItem("error", result.GetErrorData());
```
I feel the last part is weird (i.e. first creating `transcript_item` and move into `m_transcript`, then getting it again from `m_transcript`). I feel a `shared_ptr` is more readable and performant (since `m_transcript` holds a `shared_ptr` anyways, rather than adding then getting).
WDYT?
https://github.com/llvm/llvm-project/pull/90703
More information about the lldb-commits
mailing list