mirror of git://gcc.gnu.org/git/gcc.git
random (_Adaptor<>::operator()()): Cast 1 to result_type.
2006-07-04 Paolo Carlini <pcarlini@suse.de> * include/tr1/random (_Adaptor<>::operator()()): Cast 1 to result_type. (variate_generator<>::operator()(), variate_generator<>::operator()(_Tp)): Inline. * include/tr1/random: Minor cosmetic changes. From-SVN: r115179
This commit is contained in:
parent
8a71d22bdd
commit
3329fcdc38
|
|
@ -1,3 +1,12 @@
|
||||||
|
2006-07-04 Paolo Carlini <pcarlini@suse.de>
|
||||||
|
|
||||||
|
* include/tr1/random (_Adaptor<>::operator()()): Cast 1 to
|
||||||
|
result_type.
|
||||||
|
(variate_generator<>::operator()(),
|
||||||
|
variate_generator<>::operator()(_Tp)): Inline.
|
||||||
|
|
||||||
|
* include/tr1/random: Minor cosmetic changes.
|
||||||
|
|
||||||
2006-07-03 Paolo Carlini <pcarlini@suse.de>
|
2006-07-03 Paolo Carlini <pcarlini@suse.de>
|
||||||
|
|
||||||
* include/ext/rc_string_base.h (__rc_string_base::_S_max_size):
|
* include/ext/rc_string_base.h (__rc_string_base::_S_max_size):
|
||||||
|
|
|
||||||
|
|
@ -80,21 +80,21 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
|
||||||
* An adaptor class for converting the output of any Generator into
|
* An adaptor class for converting the output of any Generator into
|
||||||
* the input for a specific Distribution.
|
* the input for a specific Distribution.
|
||||||
*/
|
*/
|
||||||
template<typename _Generator, typename _Distribution>
|
template<typename _Engine, typename _Distribution>
|
||||||
struct _Adaptor
|
struct _Adaptor
|
||||||
{
|
{
|
||||||
typedef typename _Generator::result_type generated_type;
|
typedef typename _Engine::result_type _Engine_result_type;
|
||||||
typedef typename _Distribution::input_type result_type;
|
typedef typename _Distribution::input_type result_type;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
_Adaptor(const _Generator& __g)
|
_Adaptor(const _Engine& __g)
|
||||||
: _M_g(__g) { }
|
: _M_g(__g) { }
|
||||||
|
|
||||||
result_type
|
result_type
|
||||||
operator()();
|
operator()();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
_Generator _M_g;
|
_Engine _M_g;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -104,20 +104,20 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
|
||||||
* Because the type traits are compile time constants only the appropriate
|
* Because the type traits are compile time constants only the appropriate
|
||||||
* clause of the if statements will actually be emitted by the compiler.
|
* clause of the if statements will actually be emitted by the compiler.
|
||||||
*/
|
*/
|
||||||
template<typename _Generator, typename _Distribution>
|
template<typename _Engine, typename _Distribution>
|
||||||
typename _Adaptor<_Generator, _Distribution>::result_type
|
typename _Adaptor<_Engine, _Distribution>::result_type
|
||||||
_Adaptor<_Generator, _Distribution>::
|
_Adaptor<_Engine, _Distribution>::
|
||||||
operator()()
|
operator()()
|
||||||
{
|
{
|
||||||
result_type __return_value = 0;
|
result_type __return_value = 0;
|
||||||
if (is_integral<generated_type>::value
|
if (is_integral<_Engine_result_type>::value
|
||||||
&& is_integral<result_type>::value)
|
&& is_integral<result_type>::value)
|
||||||
__return_value = _M_g();
|
__return_value = _M_g();
|
||||||
else if (is_integral<generated_type>::value
|
else if (is_integral<_Engine_result_type>::value
|
||||||
&& !is_integral<result_type>::value)
|
&& !is_integral<result_type>::value)
|
||||||
__return_value = result_type(_M_g())
|
__return_value = result_type(_M_g())
|
||||||
/ result_type(_M_g.max() - _M_g.min() + 1);
|
/ result_type(_M_g.max() - _M_g.min() + result_type(1));
|
||||||
else if (!is_integral<generated_type>::value
|
else if (!is_integral<_Engine_result_type>::value
|
||||||
&& !is_integral<result_type>::value)
|
&& !is_integral<result_type>::value)
|
||||||
__return_value = result_type(_M_g())
|
__return_value = result_type(_M_g())
|
||||||
/ result_type(_M_g.max() - _M_g.min());
|
/ result_type(_M_g.max() - _M_g.min());
|
||||||
|
|
@ -142,17 +142,17 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
|
||||||
*
|
*
|
||||||
* @todo the engine_value_type needs to be studied more carefully.
|
* @todo the engine_value_type needs to be studied more carefully.
|
||||||
*/
|
*/
|
||||||
template<typename _Generator, typename _Dist>
|
template<typename _Engine, typename _Dist>
|
||||||
class variate_generator
|
class variate_generator
|
||||||
{
|
{
|
||||||
// Concept requirements.
|
// Concept requirements.
|
||||||
__glibcxx_class_requires(_Generator, _CopyConstructibleConcept)
|
__glibcxx_class_requires(_Engine, _CopyConstructibleConcept)
|
||||||
// __glibcxx_class_requires(_Generator, _GeneratorConcept)
|
// __glibcxx_class_requires(_Engine, _EngineConcept)
|
||||||
// __glibcxx_class_requires(_Dist, _GeneratorConcept)
|
// __glibcxx_class_requires(_Dist, _EngineConcept)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef _Generator engine_type;
|
typedef _Engine engine_type;
|
||||||
typedef _Private::_Adaptor<_Generator, _Dist> engine_value_type;
|
typedef _Private::_Adaptor<_Engine, _Dist> engine_value_type;
|
||||||
typedef _Dist distribution_type;
|
typedef _Dist distribution_type;
|
||||||
typedef typename _Dist::result_type result_type;
|
typedef typename _Dist::result_type result_type;
|
||||||
|
|
||||||
|
|
@ -167,7 +167,7 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
|
||||||
* generator @p __eng for the random distribution @p __dist.
|
* generator @p __eng for the random distribution @p __dist.
|
||||||
*
|
*
|
||||||
* @throws Any exceptions which may thrown by the copy constructors of
|
* @throws Any exceptions which may thrown by the copy constructors of
|
||||||
* the @p _Generator or @p _Dist objects.
|
* the @p _Engine or @p _Dist objects.
|
||||||
*/
|
*/
|
||||||
variate_generator(engine_type __eng, distribution_type __dist)
|
variate_generator(engine_type __eng, distribution_type __dist)
|
||||||
: _M_engine(__eng), _M_dist(__dist) { }
|
: _M_engine(__eng), _M_dist(__dist) { }
|
||||||
|
|
@ -176,11 +176,16 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
|
||||||
* Gets the next generated value on the distribution.
|
* Gets the next generated value on the distribution.
|
||||||
*/
|
*/
|
||||||
result_type
|
result_type
|
||||||
operator()();
|
operator()()
|
||||||
|
{ return _M_dist(_M_engine); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WTF?
|
||||||
|
*/
|
||||||
template<typename _Tp>
|
template<typename _Tp>
|
||||||
result_type
|
result_type
|
||||||
operator()(_Tp __value);
|
operator()(_Tp __value)
|
||||||
|
{ return _M_dist(_M_engine, __value); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a reference to the underlying uniform random number generator
|
* Gets a reference to the underlying uniform random number generator
|
||||||
|
|
@ -231,25 +236,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
|
||||||
distribution_type _M_dist;
|
distribution_type _M_dist;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the next random value on the given distribution.
|
|
||||||
*/
|
|
||||||
template<typename _Generator, typename _Dist>
|
|
||||||
typename variate_generator<_Generator, _Dist>::result_type
|
|
||||||
variate_generator<_Generator, _Dist>::
|
|
||||||
operator()()
|
|
||||||
{ return _M_dist(_M_engine); }
|
|
||||||
|
|
||||||
/**
|
|
||||||
* WTF?
|
|
||||||
*/
|
|
||||||
template<typename _Generator, typename _Dist>
|
|
||||||
template<typename _Tp>
|
|
||||||
typename variate_generator<_Generator, _Dist>::result_type
|
|
||||||
variate_generator<_Generator, _Dist>::
|
|
||||||
operator()(_Tp __value)
|
|
||||||
{ return _M_dist(_M_engine, __value); }
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @addtogroup tr1_random_generators Random Number Generators
|
* @addtogroup tr1_random_generators Random Number Generators
|
||||||
|
|
@ -522,7 +508,7 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// types
|
// types
|
||||||
typedef _UIntType result_type ;
|
typedef _UIntType result_type;
|
||||||
|
|
||||||
// parameter values
|
// parameter values
|
||||||
static const int word_size = __w;
|
static const int word_size = __w;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue