vSMC
vSMC: Scalable Monte Carlo
Public Types | Public Member Functions | Friends | List of all members
vsmc::GeneratorWrapper< ResultType, Generator, Traits > Class Template Reference

A thin wrapper over any RNG Generator for use with C++11 API. More...

#include <vsmc/rng/generator_wrapper.hpp>

Public Types

typedef ResultType result_type
 

Public Member Functions

 GeneratorWrapper (result_type=0)
 
template<typename SeedSeq >
 GeneratorWrapper (SeedSeq &, typename cxx11::enable_if< internal::is_seed_seq< SeedSeq, result_type, GeneratorWrapper< ResultType, Generator, Traits > >::value >::type *=nullptr)
 
void discard (std::size_t nskip)
 
Generator & generator ()
 
const Generator & generator () const
 
result_type operator() ()
 
void seed (result_type)
 
template<typename SeedSeq >
void seed (SeedSeq &, typename cxx11::enable_if< internal::is_seed_seq< SeedSeq, result_type, GeneratorWrapper< ResultType, Generator, Traits > >::value >::type *=nullptr)
 

Friends

bool operator!= (const GeneratorWrapper< ResultType, Generator, Traits > &, const GeneratorWrapper< ResultType, Generator, Traits > &)
 
template<typename CharT , typename CharTraits >
std::basic_ostream< CharT, CharTraits > & operator<< (std::basic_ostream< CharT, CharTraits > &os, const GeneratorWrapper< ResultType, Generator, Traits > &)
 
bool operator== (const GeneratorWrapper< ResultType, Generator, Traits > &, const GeneratorWrapper< ResultType, Generator, Traits > &)
 
template<typename CharT , typename CharTraits >
std::basic_istream< CharT, CharTraits > & operator>> (std::basic_istream< CharT, CharTraits > &is, GeneratorWrapper< ResultType, Generator, Traits > &)
 

Detailed Description

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
class vsmc::GeneratorWrapper< ResultType, Generator, Traits >

A thin wrapper over any RNG Generator for use with C++11 API.

Generator need to have a member function named generate which returns uniform integers on the range of ResultType, which has to be one of uint16_t, uint32_t and uint64_t. Note that, the generator does not necessarily returns one of these types. For example, on some platforms, some RNG returns unsigned long long, which is 64-bits, while uint64_t is also 64-bits but a typedef of unsigned long. It is ok as long as the static_cast from the returned value to uint64_t does not change, add, or lose any bits.

For most RNG generators, use only need to write a thin wrapper to use this class. Also note that the operator== will always return false as this wrapper assume that the internal states of the RNG cannot be determined by this library (otherwise will have to require more interfaces of Generator). And all member functions, except operator(), does nothing. To seed and change the engine, use the Generator type object.

Definition at line 87 of file generator_wrapper.hpp.

Member Typedef Documentation

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
typedef ResultType vsmc::GeneratorWrapper< ResultType, Generator, Traits >::result_type

Definition at line 91 of file generator_wrapper.hpp.

Constructor & Destructor Documentation

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
vsmc::GeneratorWrapper< ResultType, Generator, Traits >::GeneratorWrapper ( result_type  = 0)
inlineexplicit

Definition at line 93 of file generator_wrapper.hpp.

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
template<typename SeedSeq >
vsmc::GeneratorWrapper< ResultType, Generator, Traits >::GeneratorWrapper ( SeedSeq &  ,
typename cxx11::enable_if< internal::is_seed_seq< SeedSeq, result_type, GeneratorWrapper< ResultType, Generator, Traits > >::value >::type = nullptr 
)
inlineexplicit

Definition at line 97 of file generator_wrapper.hpp.

Member Function Documentation

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
void vsmc::GeneratorWrapper< ResultType, Generator, Traits >::discard ( std::size_t  nskip)
inline

Definition at line 114 of file generator_wrapper.hpp.

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
Generator& vsmc::GeneratorWrapper< ResultType, Generator, Traits >::generator ( )
inline

Definition at line 120 of file generator_wrapper.hpp.

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
const Generator& vsmc::GeneratorWrapper< ResultType, Generator, Traits >::generator ( ) const
inline

Definition at line 122 of file generator_wrapper.hpp.

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
result_type vsmc::GeneratorWrapper< ResultType, Generator, Traits >::operator() ( )
inline

Definition at line 111 of file generator_wrapper.hpp.

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
void vsmc::GeneratorWrapper< ResultType, Generator, Traits >::seed ( result_type  )
inline

Definition at line 103 of file generator_wrapper.hpp.

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
template<typename SeedSeq >
void vsmc::GeneratorWrapper< ResultType, Generator, Traits >::seed ( SeedSeq &  ,
typename cxx11::enable_if< internal::is_seed_seq< SeedSeq, result_type, GeneratorWrapper< ResultType, Generator, Traits > >::value >::type = nullptr 
)
inline

Definition at line 106 of file generator_wrapper.hpp.

Friends And Related Function Documentation

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
bool operator!= ( const GeneratorWrapper< ResultType, Generator, Traits > &  ,
const GeneratorWrapper< ResultType, Generator, Traits > &   
)
friend

Definition at line 129 of file generator_wrapper.hpp.

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
template<typename CharT , typename CharTraits >
std::basic_ostream<CharT, CharTraits>& operator<< ( std::basic_ostream< CharT, CharTraits > &  os,
const GeneratorWrapper< ResultType, Generator, Traits > &   
)
friend

Definition at line 135 of file generator_wrapper.hpp.

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
bool operator== ( const GeneratorWrapper< ResultType, Generator, Traits > &  ,
const GeneratorWrapper< ResultType, Generator, Traits > &   
)
friend

Definition at line 124 of file generator_wrapper.hpp.

template<typename ResultType, class Generator, typename Traits = traits::GeneratorWrapperMinMaxTrait<ResultType, Generator>>
template<typename CharT , typename CharTraits >
std::basic_istream<CharT, CharTraits>& operator>> ( std::basic_istream< CharT, CharTraits > &  is,
GeneratorWrapper< ResultType, Generator, Traits > &   
)
friend

Definition at line 141 of file generator_wrapper.hpp.