| |
| |
| |
| |
| |
| |
| |
|
|
| #ifndef _LIBCPP___RANDOM_RANDOM_DEVICE_H |
| #define _LIBCPP___RANDOM_RANDOM_DEVICE_H |
|
|
| #include <__config> |
| #include <string> |
|
|
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) |
| # pragma GCC system_header |
| #endif |
|
|
| _LIBCPP_PUSH_MACROS |
| #include <__undef_macros> |
|
|
| _LIBCPP_BEGIN_NAMESPACE_STD |
|
|
| #if _LIBCPP_HAS_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") |
|
|
| |
| |
| |
| # if defined(__APPLE__) |
| int __padding_; |
| # endif |
|
|
| |
|
|
| _LIBCPP_DIAGNOSTIC_POP |
| # endif |
|
|
| public: |
| |
| typedef unsigned result_type; |
|
|
| |
| 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; } |
|
|
| |
| # 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(); |
|
|
| |
| result_type operator()(); |
|
|
| |
| double entropy() const _NOEXCEPT; |
|
|
| random_device(const random_device&) = delete; |
| void operator=(const random_device&) = delete; |
| }; |
|
|
| #endif |
|
|
| _LIBCPP_END_NAMESPACE_STD |
|
|
| _LIBCPP_POP_MACROS |
|
|
| #endif |
|
|