summaryrefslogtreecommitdiff
path: root/src/third_party/boost-1.69.0/boost/random/uniform_int.hpp
diff options
context:
space:
mode:
authorHenrik Edin <henrik.edin@mongodb.com>2018-12-13 11:44:21 -0500
committerHenrik Edin <henrik.edin@mongodb.com>2018-12-18 09:12:51 -0500
commitc28cb6852fca219d6f0262000c378e982b7ca9ff (patch)
treee06e74d1729e644db7c4dc2e5ecd529145b2f34c /src/third_party/boost-1.69.0/boost/random/uniform_int.hpp
parent05ebfef11161b96ba0e8374f34c359a403097f60 (diff)
downloadmongo-c28cb6852fca219d6f0262000c378e982b7ca9ff.tar.gz
SERVER-38458 Upgrade boost to version 1.69
Diffstat (limited to 'src/third_party/boost-1.69.0/boost/random/uniform_int.hpp')
-rw-r--r--src/third_party/boost-1.69.0/boost/random/uniform_int.hpp99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/third_party/boost-1.69.0/boost/random/uniform_int.hpp b/src/third_party/boost-1.69.0/boost/random/uniform_int.hpp
new file mode 100644
index 00000000000..4362652593d
--- /dev/null
+++ b/src/third_party/boost-1.69.0/boost/random/uniform_int.hpp
@@ -0,0 +1,99 @@
+/* boost random/uniform_int.hpp header file
+ *
+ * Copyright Jens Maurer 2000-2001
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ *
+ * See http://www.boost.org for most recent version including documentation.
+ *
+ * $Id$
+ *
+ * Revision history
+ * 2001-04-08 added min<max assertion (N. Becker)
+ * 2001-02-18 moved to individual header files
+ */
+
+#ifndef BOOST_RANDOM_UNIFORM_INT_HPP
+#define BOOST_RANDOM_UNIFORM_INT_HPP
+
+#include <boost/assert.hpp>
+#include <boost/random/uniform_int_distribution.hpp>
+
+namespace boost {
+
+/**
+ * The distribution function uniform_int models a \random_distribution.
+ * On each invocation, it returns a random integer value uniformly
+ * distributed in the set of integer numbers {min, min+1, min+2, ..., max}.
+ *
+ * The template parameter IntType shall denote an integer-like value type.
+ *
+ * This class is deprecated. Please use @c uniform_int_distribution in
+ * new code.
+ */
+template<class IntType = int>
+class uniform_int : public random::uniform_int_distribution<IntType>
+{
+ typedef random::uniform_int_distribution<IntType> base_type;
+public:
+
+ class param_type : public base_type::param_type
+ {
+ public:
+ typedef uniform_int distribution_type;
+ /**
+ * Constructs the parameters of a uniform_int distribution.
+ *
+ * Requires: min <= max
+ */
+ explicit param_type(IntType min_arg = 0, IntType max_arg = 9)
+ : base_type::param_type(min_arg, max_arg)
+ {}
+ };
+
+ /**
+ * Constructs a uniform_int object. @c min and @c max are
+ * the parameters of the distribution.
+ *
+ * Requires: min <= max
+ */
+ explicit uniform_int(IntType min_arg = 0, IntType max_arg = 9)
+ : base_type(min_arg, max_arg)
+ {}
+
+ /** Constructs a uniform_int distribution from its parameters. */
+ explicit uniform_int(const param_type& parm)
+ : base_type(parm)
+ {}
+
+ /** Returns the parameters of the distribution */
+ param_type param() const { return param_type(this->a(), this->b()); }
+ /** Sets the parameters of the distribution. */
+ void param(const param_type& parm) { this->base_type::param(parm); }
+
+ // Codergear seems to have trouble with a using declaration here
+
+ template<class Engine>
+ IntType operator()(Engine& eng) const
+ {
+ return static_cast<const base_type&>(*this)(eng);
+ }
+
+ template<class Engine>
+ IntType operator()(Engine& eng, const param_type& parm) const
+ {
+ return static_cast<const base_type&>(*this)(eng, parm);
+ }
+
+ template<class Engine>
+ IntType operator()(Engine& eng, IntType n) const
+ {
+ BOOST_ASSERT(n > 0);
+ return static_cast<const base_type&>(*this)(eng, param_type(0, n - 1));
+ }
+};
+
+} // namespace boost
+
+#endif // BOOST_RANDOM_UNIFORM_INT_HPP