diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-12-25 13:49:57 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2023-12-25 13:49:57 +0000 |
commit | 99aabd70801bd4bc72c4942747f6d62c675112f5 (patch) | |
tree | 02bf056e9098f5ecddc7f18a99db9c79f4404b02 /libcxx/include/__random/random_device.h | |
parent | 312c0ed19cc5276a17bacf2120097bec4515b0f1 (diff) |
Vendor import of llvm-project main llvmorg-18-init-15692-g007ed0dccd6a.vendor/llvm-project/llvmorg-18-init-15692-g007ed0dccd6a
Diffstat (limited to 'libcxx/include/__random/random_device.h')
-rw-r--r-- | libcxx/include/__random/random_device.h | 87 |
1 files changed, 42 insertions, 45 deletions
diff --git a/libcxx/include/__random/random_device.h b/libcxx/include/__random/random_device.h index ad75165b7474..52407943d2ec 100644 --- a/libcxx/include/__random/random_device.h +++ b/libcxx/include/__random/random_device.h @@ -23,56 +23,53 @@ _LIBCPP_BEGIN_NAMESPACE_STD #if !defined(_LIBCPP_HAS_NO_RANDOM_DEVICE) -class _LIBCPP_EXPORTED_FROM_ABI random_device -{ -#ifdef _LIBCPP_USING_DEV_RANDOM - int __f_; -#elif !defined(_LIBCPP_ABI_NO_RANDOM_DEVICE_COMPATIBILITY_LAYOUT) - _LIBCPP_DIAGNOSTIC_PUSH - _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wunused-private-field") - - // Apple platforms used to use the `_LIBCPP_USING_DEV_RANDOM` code path, and now - // use `arc4random()` as of this comment. In order to avoid breaking the ABI, we - // retain the same layout as before. -# if defined(__APPLE__) - int __padding_; // padding to fake the `__f_` field above -# endif - - // ... vendors can add workarounds here if they switch to a different representation ... - - _LIBCPP_DIAGNOSTIC_POP -#endif +class _LIBCPP_EXPORTED_FROM_ABI random_device { +# ifdef _LIBCPP_USING_DEV_RANDOM + int __f_; +# elif !defined(_LIBCPP_ABI_NO_RANDOM_DEVICE_COMPATIBILITY_LAYOUT) + _LIBCPP_DIAGNOSTIC_PUSH + _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wunused-private-field") + + // Apple platforms used to use the `_LIBCPP_USING_DEV_RANDOM` code path, and now + // use `arc4random()` as of this comment. In order to avoid breaking the ABI, we + // retain the same layout as before. +# if defined(__APPLE__) + int __padding_; // padding to fake the `__f_` field above +# endif + + // ... vendors can add workarounds here if they switch to a different representation ... + + _LIBCPP_DIAGNOSTIC_POP +# endif public: - // types - typedef unsigned result_type; - - // generator characteristics - static _LIBCPP_CONSTEXPR const result_type _Min = 0; - static _LIBCPP_CONSTEXPR const result_type _Max = 0xFFFFFFFFu; - - _LIBCPP_HIDE_FROM_ABI - static _LIBCPP_CONSTEXPR result_type min() { return _Min;} - _LIBCPP_HIDE_FROM_ABI - static _LIBCPP_CONSTEXPR result_type max() { return _Max;} - - // constructors -#ifndef _LIBCPP_CXX03_LANG - _LIBCPP_HIDE_FROM_ABI random_device() : random_device("/dev/urandom") {} - explicit random_device(const string& __token); -#else - explicit random_device(const string& __token = "/dev/urandom"); -#endif - ~random_device(); + // types + typedef unsigned result_type; + + // generator characteristics + static _LIBCPP_CONSTEXPR const result_type _Min = 0; + static _LIBCPP_CONSTEXPR const result_type _Max = 0xFFFFFFFFu; + + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR result_type min() { return _Min; } + _LIBCPP_HIDE_FROM_ABI static _LIBCPP_CONSTEXPR result_type max() { return _Max; } + + // constructors +# ifndef _LIBCPP_CXX03_LANG + _LIBCPP_HIDE_FROM_ABI random_device() : random_device("/dev/urandom") {} + explicit random_device(const string& __token); +# else + explicit random_device(const string& __token = "/dev/urandom"); +# endif + ~random_device(); - // generating functions - result_type operator()(); + // generating functions + result_type operator()(); - // property functions - double entropy() const _NOEXCEPT; + // property functions + double entropy() const _NOEXCEPT; - random_device(const random_device&) = delete; - void operator=(const random_device&) = delete; + random_device(const random_device&) = delete; + void operator=(const random_device&) = delete; }; #endif // !_LIBCPP_HAS_NO_RANDOM_DEVICE |