diff options
author | Abseil Team <absl-team@google.com> | 2019-09-09 08:20:10 -0700 |
---|---|---|
committer | Shaindel Schwartz <shaindel@google.com> | 2019-09-09 12:41:04 -0400 |
commit | 97c1664b4bbab5f78fac2b151ab02656268fb34b (patch) | |
tree | 738a650a90ee00d11eb7b0a76a8631748319ac96 /absl/random/distribution_format_traits.h | |
parent | 325fd7b042ff4ec34f7dd32e602cd81ad0e24b22 (diff) | |
download | abseil-97c1664b4bbab5f78fac2b151ab02656268fb34b.tar.gz abseil-97c1664b4bbab5f78fac2b151ab02656268fb34b.tar.bz2 abseil-97c1664b4bbab5f78fac2b151ab02656268fb34b.zip |
Export of internal Abseil changes
--
167cd2647144583746311129b0cc98a89a9897e1 by Andy Soffer <asoffer@google.com>:
Internal Changes
PiperOrigin-RevId: 268000987
--
ab44fea7dfdaf763c69609a08ddfac22480ce520 by Derek Mauro <dmauro@google.com>:
Fix flags Cmake tests on Windows
PiperOrigin-RevId: 267859442
--
d7ec9f7611370b01bc9a5aed7e18460df2a15429 by Abseil Team <absl-team@google.com>:
Fix undefined behavior in symbolize_elf.inc
PiperOrigin-RevId: 267684904
--
e7c5f8e472a91ed99bdf4876942f2bda5751aa6c by Abseil Team <absl-team@google.com>:
Turn off ABSL_HAS_ALARM on Fuchsia.
PiperOrigin-RevId: 267666090
--
b7d25d5c71a49e697a8bf6440ed30f2e3f036420 by Chris Kennelly <ckennelly@google.com>:
Mark once initialization function as no inline.
We expect this code to run infrequently.
PiperOrigin-RevId: 267649713
--
dc2a5e5f1e39a03fff837d34a319033fde55d9ba by Derek Mauro <dmauro@google.com>:
Fix the MSVC CMake random build
PiperOrigin-RevId: 267624074
--
ba2751b67fa17d1b6c53e5ba79f81a5371e4a03a by Abseil Team <absl-team@google.com>:
Move "internal/flag.*" files to the "internal" build target.
PiperOrigin-RevId: 267588996
--
05b985a33eec4f8acff1809ad9218a1e22220f34 by Abseil Team <absl-team@google.com>:
Move "internal/flag.*" files to the "internal" build target.
PiperOrigin-RevId: 267580412
GitOrigin-RevId: 167cd2647144583746311129b0cc98a89a9897e1
Change-Id: Ibd334f46a5671c7c1d3fcf5354029e2fbb7ba91f
Diffstat (limited to 'absl/random/distribution_format_traits.h')
-rw-r--r-- | absl/random/distribution_format_traits.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/absl/random/distribution_format_traits.h b/absl/random/distribution_format_traits.h index 3f28c906..3298c2cd 100644 --- a/absl/random/distribution_format_traits.h +++ b/absl/random/distribution_format_traits.h @@ -36,6 +36,12 @@ #include "absl/types/span.h" namespace absl { + +struct IntervalClosedClosedTag; +struct IntervalClosedOpenTag; +struct IntervalOpenClosedTag; +struct IntervalOpenOpenTag; + namespace random_internal { // ScalarTypeName defines a preferred hierarchy of preferred type names for @@ -243,6 +249,39 @@ struct DistributionFormatTraits<absl::log_uniform_int_distribution<R>> { } }; +template <typename TagType, typename NumType> +struct UniformDistributionWrapper; + +template <typename TagType, typename NumType> +struct DistributionFormatTraits<UniformDistributionWrapper<TagType, NumType>> { + using distribution_t = UniformDistributionWrapper<TagType, NumType>; + using result_t = NumType; + + static constexpr const char* Name() { return "Uniform"; } + + static std::string FunctionName() { + return absl::StrCat(Name(), "<", ScalarTypeName<NumType>(), ">"); + } + static std::string FormatArgs(const distribution_t& d) { + absl::string_view tag; + if (std::is_same<TagType, IntervalClosedClosedTag>::value) { + tag = "IntervalClosedClosed"; + } else if (std::is_same<TagType, IntervalClosedOpenTag>::value) { + tag = "IntervalClosedOpen"; + } else if (std::is_same<TagType, IntervalOpenClosedTag>::value) { + tag = "IntervalOpenClosed"; + } else if (std::is_same<TagType, IntervalOpenOpenTag>::value) { + tag = "IntervalOpenOpen"; + } else { + tag = "[[unknown tag type]]"; + } + return absl::StrCat(tag, ", ", (d.min)(), ", ", (d.max)()); + } + static std::string FormatResults(absl::Span<const result_t> results) { + return absl::StrJoin(results, ", "); + } +}; + } // namespace random_internal } // namespace absl |