jingham added a comment.
Herald added a project: All.

Sorry for the delay here.

This output is definitely nicer than the previous version, so this change is 
desirable.

If you really are switching on unordered_map vrs. unordered_set behavior,  can 
you check the backend ValueObject's type to determine whether you are dealing 
with a map or set?  It might be nice to make that a little more explicit.  I 
can't see anything in this file that indicates that this synthetic child 
provider is used for both classes, so having something conditional on it being 
a map is surprising.



================
Comment at: lldb/source/Plugins/Language/CPlusPlus/LibCxxUnorderedMap.cpp:128
+          // __cc is a field of __hash_value_type, which is a typedef.
+          if (name == "__cc")
+            m_element_type = key_value_type.GetTypedefedType();
----------------
kastiglione wrote:
> This block of changes is needed to support `unordered_set`, because this 
> synthetic provider is shared by `unordered_set` and `unordered_map`.
> 
> For `unordered_map`, the element type is an internal hash node. For 
> `unoredered_set`, it's the type `T` from `unordered_set<T>`. This part of the 
> code needs to know whether there's a hash node here, and to step down through 
> the `__cc` field.
> 
> I am not sure what the best way to do this is. I could do a string prefix 
> check against `std::__hash_value_type`. I could do a smarter full string 
> equality check, but could that possibly have false negatives if the wrong 
> string type name is constructed. As it currently is, I assume if there's a 
> one or more fields, and if the first one is named `__cc`, then it's assumed 
> to be an internal hash node.
> 
> Suggestions welcome.
IIUC, this depends on whether the backend is of type unordered_map or 
unordered_set?  Can you just check the type of the backend?



Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D117383

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

Reply via email to