#ifndef RANDOMNUMBERENGINEFACTORY_DEF_
#define RANDOMNUMBERENGINEFACTORY_DEF_

/** BOOST_PP_SEQ of all random::boost engine types,
 * see see http://www.boost.org/doc/libs/1_45_0/doc/html/boost_random/reference.html#boost_random.reference.concepts
 */
#define engine_seq \
(minstd_rand0)\
(minstd_rand)\
(rand48)\
(ecuyer1988)\
(kreutzer1986)\
(taus88)\
(hellekalek1995)\
(mt11213b)\
(mt19937)

#define engine_seq_a \
(lagged_fibonacci607)\
(lagged_fibonacci1279)\
(lagged_fibonacci2281)\
(lagged_fibonacci3217)\
(lagged_fibonacci4423)\
(lagged_fibonacci9689)\
(lagged_fibonacci19937)\
(lagged_fibonacci23209)\
(lagged_fibonacci44497)\
(ranlux3)\
(ranlux4)\
(ranlux64_3)\
(ranlux64_4)\
(ranlux3_01)\
(ranlux4_01)\
(ranlux64_3_01)\
(ranlux64_4_01)

#define type_seq engine_seq engine_seq_a

#define FactoryNAME RandomNumberEngineFactory
#define Abstract_Interface_Class RandomNumberEngine
#define Abstract_Encapsulation_Class RandomNumberEngine_Encapsulation
#define type_name_space boost::
#undef type_name_space_suffix

#endif /* RANDOMNUMBERENGINEFACTORY_DEF_ */
