aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@suse.de>2006-07-04 15:42:32 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2006-07-04 15:42:32 +0000
commit3329fcdc38863c561d0d4c55fbce2f1185e8ec19 (patch)
tree371d8fe199cc09bdd3158aa86f64e01c2bd1d8d6 /libstdc++-v3
parent8a71d22bdd2bc14145e72606ccd9dac1ef60fd6a (diff)
downloadgcc-3329fcdc38863c561d0d4c55fbce2f1185e8ec19.zip
gcc-3329fcdc38863c561d0d4c55fbce2f1185e8ec19.tar.gz
gcc-3329fcdc38863c561d0d4c55fbce2f1185e8ec19.tar.bz2
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
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog9
-rw-r--r--libstdc++-v3/include/tr1/random68
2 files changed, 36 insertions, 41 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 5e4c01e..d5a6f03 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -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>
* include/ext/rc_string_base.h (__rc_string_base::_S_max_size):
diff --git a/libstdc++-v3/include/tr1/random b/libstdc++-v3/include/tr1/random
index f1a3ab2..5124ccb 100644
--- a/libstdc++-v3/include/tr1/random
+++ b/libstdc++-v3/include/tr1/random
@@ -80,21 +80,21 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
* An adaptor class for converting the output of any Generator into
* the input for a specific Distribution.
*/
- template<typename _Generator, typename _Distribution>
+ template<typename _Engine, typename _Distribution>
struct _Adaptor
{
- typedef typename _Generator::result_type generated_type;
- typedef typename _Distribution::input_type result_type;
+ typedef typename _Engine::result_type _Engine_result_type;
+ typedef typename _Distribution::input_type result_type;
public:
- _Adaptor(const _Generator& __g)
+ _Adaptor(const _Engine& __g)
: _M_g(__g) { }
result_type
operator()();
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
* clause of the if statements will actually be emitted by the compiler.
*/
- template<typename _Generator, typename _Distribution>
- typename _Adaptor<_Generator, _Distribution>::result_type
- _Adaptor<_Generator, _Distribution>::
+ template<typename _Engine, typename _Distribution>
+ typename _Adaptor<_Engine, _Distribution>::result_type
+ _Adaptor<_Engine, _Distribution>::
operator()()
{
result_type __return_value = 0;
- if (is_integral<generated_type>::value
+ if (is_integral<_Engine_result_type>::value
&& is_integral<result_type>::value)
__return_value = _M_g();
- else if (is_integral<generated_type>::value
+ else if (is_integral<_Engine_result_type>::value
&& !is_integral<result_type>::value)
__return_value = result_type(_M_g())
- / result_type(_M_g.max() - _M_g.min() + 1);
- else if (!is_integral<generated_type>::value
+ / result_type(_M_g.max() - _M_g.min() + result_type(1));
+ else if (!is_integral<_Engine_result_type>::value
&& !is_integral<result_type>::value)
__return_value = result_type(_M_g())
/ 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.
*/
- template<typename _Generator, typename _Dist>
+ template<typename _Engine, typename _Dist>
class variate_generator
{
// Concept requirements.
- __glibcxx_class_requires(_Generator, _CopyConstructibleConcept)
- // __glibcxx_class_requires(_Generator, _GeneratorConcept)
- // __glibcxx_class_requires(_Dist, _GeneratorConcept)
+ __glibcxx_class_requires(_Engine, _CopyConstructibleConcept)
+ // __glibcxx_class_requires(_Engine, _EngineConcept)
+ // __glibcxx_class_requires(_Dist, _EngineConcept)
public:
- typedef _Generator engine_type;
- typedef _Private::_Adaptor<_Generator, _Dist> engine_value_type;
+ typedef _Engine engine_type;
+ typedef _Private::_Adaptor<_Engine, _Dist> engine_value_type;
typedef _Dist distribution_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.
*
* @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)
: _M_engine(__eng), _M_dist(__dist) { }
@@ -176,11 +176,16 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
* Gets the next generated value on the distribution.
*/
result_type
- operator()();
+ operator()()
+ { return _M_dist(_M_engine); }
+ /**
+ * WTF?
+ */
template<typename _Tp>
result_type
- operator()(_Tp __value);
+ operator()(_Tp __value)
+ { return _M_dist(_M_engine, __value); }
/**
* Gets a reference to the underlying uniform random number generator
@@ -231,25 +236,6 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
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
@@ -522,7 +508,7 @@ _GLIBCXX_BEGIN_NAMESPACE(tr1)
public:
// types
- typedef _UIntType result_type ;
+ typedef _UIntType result_type;
// parameter values
static const int word_size = __w;