On Mon, Sep 19, 2016 at 1:38 PM Sean Callanan <scalla...@apple.com> wrote:

> I'll only comment on the stuff that affects me.
>    1. Use llvm streams instead of lldb::StreamString
>       1. Supports output re-targeting (stderr, stdout, std::string, etc),
>          printf style formatting, and type-safe streaming operators.
>          2. Interoperates nicely with many existing llvm utility classes
>          3. Risk: 4
>          4. Impact: 5
>          5. Difficulty / Effort: 7
> I don't like that llvm's stringstream needs to be babied to make it
> produce its string.  You have to wrap it and then flush it and then read
> the string.  Maybe a subclass could be made that wraps its own string and
> flushes automatically on read?

You do have to wrap it.  But if you call llvm::raw_string_ostream::str(),
it will internally flush before it returns the thing.  So if you write:

std::string s;
llvm::raw_string_ostream stream(s);
stream << "foo";
return stream.str();

then the code will be correct.  It's still a bit more annoying then if the
string were automatically part of the stream though, so there's probably a
clean way to design a version of it that owns the string.
lldb-dev mailing list

Reply via email to