[Lldb-commits] [PATCH] D26971: Introduce chrono to more gdb-remote functions

Pavel Labath via lldb-commits lldb-commits at lists.llvm.org
Tue Nov 22 09:44:02 PST 2016


labath added a comment.

I suppose we could create a new class (I am not sure what a good name for that would be... `OptionalDuration`, which inherits from `llvm:Optional`, but provides the additional conversion operator to make things work seamlessly. Something like:

  template<typename Ratio>
  class OptionalDur<Ratio>: public llvm::Optional<std::chrono::duration<Ratio>> {
    template<typename Ratio2, typename = std::enable_if<std::is_convertible<duration<Ratio2>, duration<Ratio>>>::type>
    OptionalDur(OptionalDur<Ratio2> other) { ...}
  };

It will be a bunch of template-fu, but it can be made to work. What do you think? (I am also open to other ideas on how to implement this....)

For the formatting, I am not sure what it would take to make Optional use a union, but I can certainly make a data formatter for it. I've been planning to dig into that area soon anyway...



================
Comment at: source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp:125
     PacketResult packet_result = PacketResult::Success;
-    const uint32_t timeout_usec = 10 * 1000; // Wait for 10 ms for a response
+    const std::chrono::microseconds timeout(10000); // 10 ms
     while (packet_result == PacketResult::Success)
----------------
clayborg wrote:
> Can't we do:
> 
> ```
> const std::chrono::milliseconds timeout(10);
> ```
> 
> Or is this what you mentioned with the llvm::Optional stuff in your description?
Yes, that's exactly what I meant.


https://reviews.llvm.org/D26971





More information about the lldb-commits mailing list