Improve generic factory pair readers #82964
Merged
+72
−59
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Infrastructure "Improve generic factory readers for std::pair"
Purpose of change
#82943 (comment) prompted a discussion about the pair readers, and a request for the
{ "a": b }
format.Describe the solution
Support the "canonical" array format
[ a, b ]
, as well as the object format{ "a": b }
, and single formata
->(a, a)
in pair_reader. Comment on supported format for other pair readers, and improve thegeneric_map_reader
support for different key types in the pairs.Testing
tools/load_all_mods.py
Rebased onto #82943 and swapped out the reader added there for pair_reader.
Additional context
I considered adding
{ "a": b }
as a "canonical" pair format the the JSON API recognizes, but I think there should only be one "canonical" format. Additionally, serialize would not emit the new format, and I don't think it would be worth the risk there.