mirror of
https://github.com/boostorg/uuid.git
synced 2026-01-19 04:42:16 +00:00
Add copy/move constructors/assignment operators to time_generator_v7
This commit is contained in:
@@ -121,6 +121,18 @@ public:
|
||||
state_[ 13 ] = 0;
|
||||
}
|
||||
|
||||
// perturbs the generator state so that it no longer generates
|
||||
// the same sequence; useful for e.g. moved from objects
|
||||
void perturb() noexcept
|
||||
{
|
||||
index_ = 16;
|
||||
|
||||
for( int i = 12; i < 16; ++i )
|
||||
{
|
||||
++state_[ i ];
|
||||
}
|
||||
}
|
||||
|
||||
static constexpr result_type min() noexcept
|
||||
{
|
||||
return std::numeric_limits<result_type>::min();
|
||||
|
||||
@@ -39,6 +39,12 @@ public:
|
||||
|
||||
time_generator_v7();
|
||||
|
||||
time_generator_v7( time_generator_v7 const& rhs );
|
||||
time_generator_v7( time_generator_v7&& rhs ) noexcept;
|
||||
|
||||
time_generator_v7& operator=( time_generator_v7 const& rhs );
|
||||
time_generator_v7& operator=( time_generator_v7&& rhs ) noexcept;
|
||||
|
||||
result_type operator()() noexcept;
|
||||
|
||||
private:
|
||||
@@ -46,7 +52,7 @@ private:
|
||||
static state_type get_new_state( state_type const& oldst ) noexcept;
|
||||
};
|
||||
|
||||
// constructor
|
||||
// constructors
|
||||
|
||||
inline time_generator_v7::time_generator_v7()
|
||||
{
|
||||
@@ -54,6 +60,35 @@ inline time_generator_v7::time_generator_v7()
|
||||
rng_.seed( seeder );
|
||||
}
|
||||
|
||||
inline time_generator_v7::time_generator_v7( time_generator_v7 const& rhs ): state_( rhs.state_ )
|
||||
{
|
||||
detail::random_provider seeder;
|
||||
rng_.seed( seeder );
|
||||
}
|
||||
|
||||
inline time_generator_v7::time_generator_v7( time_generator_v7&& rhs ) noexcept: state_( std::move( rhs.state_ ) ), rng_( std::move( rhs.rng_ ) )
|
||||
{
|
||||
rhs.rng_.perturb();
|
||||
}
|
||||
|
||||
// assignment
|
||||
|
||||
inline time_generator_v7& time_generator_v7::operator=( time_generator_v7 const& rhs )
|
||||
{
|
||||
state_ = rhs.state_;
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline time_generator_v7& time_generator_v7::operator=( time_generator_v7&& rhs ) noexcept
|
||||
{
|
||||
state_ = std::move( rhs.state_ );
|
||||
rng_ = std::move( rhs.rng_ );
|
||||
|
||||
rhs.rng_.perturb();
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
// get_new_state
|
||||
|
||||
inline time_generator_v7::state_type time_generator_v7::get_new_state( state_type const& oldst ) noexcept
|
||||
|
||||
Reference in New Issue
Block a user