summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2012-04-23 13:32:24 (GMT)
committerRemko Tronçon <git@el-tramo.be>2012-04-23 13:57:24 (GMT)
commit18f4f0ba13bbfe901dae44e95d869ba0425e93c7 (patch)
tree51de477a7f2dc9aba3177e6ea50ed90dbff91f85 /3rdParty/Boost
parent2f64443e7a3e427a3a38665b5aafb77c9b128cc0 (diff)
downloadswift-18f4f0ba13bbfe901dae44e95d869ba0425e93c7.zip
swift-18f4f0ba13bbfe901dae44e95d869ba0425e93c7.tar.bz2
Select SRV randomly, taking weight into account.
Resolves: #1030
Diffstat (limited to '3rdParty/Boost')
-rw-r--r--3rdParty/Boost/src/boost/random/uniform_real.hpp108
-rwxr-xr-x3rdParty/Boost/update.sh21
2 files changed, 120 insertions, 9 deletions
diff --git a/3rdParty/Boost/src/boost/random/uniform_real.hpp b/3rdParty/Boost/src/boost/random/uniform_real.hpp
new file mode 100644
index 0000000..06bfbc3
--- /dev/null
+++ b/3rdParty/Boost/src/boost/random/uniform_real.hpp
@@ -0,0 +1,108 @@
+/* boost random/uniform_real.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: uniform_real.hpp 60755 2010-03-22 00:45:06Z steven_watanabe $
+ *
+ * Revision history
+ * 2001-04-08 added min<max assertion (N. Becker)
+ * 2001-02-18 moved to individual header files
+ */
+
+#ifndef BOOST_RANDOM_UNIFORM_REAL_HPP
+#define BOOST_RANDOM_UNIFORM_REAL_HPP
+
+#include <cassert>
+#include <iostream>
+#include <boost/config.hpp>
+#include <boost/limits.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/random/detail/config.hpp>
+
+namespace boost {
+
+/**
+ * The distribution function uniform_real models a random distribution.
+ * On each invocation, it returns a random floating-point value uniformly
+ * distributed in the range [min..max). The value is computed using
+ * std::numeric_limits<RealType>::digits random binary digits, i.e.
+ * the mantissa of the floating-point value is completely filled with
+ * random bits.
+ *
+ * Note: The current implementation is buggy, because it may not fill
+ * all of the mantissa with random bits.
+ */
+template<class RealType = double>
+class uniform_real
+{
+public:
+ typedef RealType input_type;
+ typedef RealType result_type;
+
+ /**
+ * Constructs a uniform_real object. @c min and @c max are the
+ * parameters of the distribution.
+ *
+ * Requires: min <= max
+ */
+ explicit uniform_real(RealType min_arg = RealType(0),
+ RealType max_arg = RealType(1))
+ : _min(min_arg), _max(max_arg)
+ {
+#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+ BOOST_STATIC_ASSERT(!std::numeric_limits<RealType>::is_integer);
+#endif
+ assert(min_arg <= max_arg);
+ }
+
+ // compiler-generated copy ctor and assignment operator are fine
+
+ /**
+ * Returns: The "min" parameter of the distribution
+ */
+ result_type min BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _min; }
+ /**
+ * Returns: The "max" parameter of the distribution
+ */
+ result_type max BOOST_PREVENT_MACRO_SUBSTITUTION () const { return _max; }
+ void reset() { }
+
+ template<class Engine>
+ result_type operator()(Engine& eng) {
+ result_type numerator = static_cast<result_type>(eng() - eng.min BOOST_PREVENT_MACRO_SUBSTITUTION());
+ result_type divisor = static_cast<result_type>(eng.max BOOST_PREVENT_MACRO_SUBSTITUTION() - eng.min BOOST_PREVENT_MACRO_SUBSTITUTION());
+ assert(divisor > 0);
+ assert(numerator >= 0 && numerator <= divisor);
+ return numerator / divisor * (_max - _min) + _min;
+ }
+
+#ifndef BOOST_RANDOM_NO_STREAM_OPERATORS
+ template<class CharT, class Traits>
+ friend std::basic_ostream<CharT,Traits>&
+ operator<<(std::basic_ostream<CharT,Traits>& os, const uniform_real& ud)
+ {
+ os << ud._min << " " << ud._max;
+ return os;
+ }
+
+ template<class CharT, class Traits>
+ friend std::basic_istream<CharT,Traits>&
+ operator>>(std::basic_istream<CharT,Traits>& is, uniform_real& ud)
+ {
+ is >> std::ws >> ud._min >> std::ws >> ud._max;
+ return is;
+ }
+#endif
+
+private:
+ RealType _min, _max;
+};
+
+} // namespace boost
+
+#endif // BOOST_RANDOM_UNIFORM_REAL_HPP
diff --git a/3rdParty/Boost/update.sh b/3rdParty/Boost/update.sh
index a7c0638..9b28f2d 100755
--- a/3rdParty/Boost/update.sh
+++ b/3rdParty/Boost/update.sh
@@ -11,6 +11,9 @@ fi
./bcp --boost="$1" \
tools/bcp \
+ algorithm/string.hpp \
+ asio.hpp \
+ assign/list_of.hpp \
bind.hpp \
cast.hpp \
date_time/posix_time/posix_time.hpp \
@@ -18,25 +21,25 @@ fi
foreach.hpp \
filesystem.hpp \
filesystem/fstream.hpp \
+ format.hpp \
+ logic/tribool.hpp \
noncopyable.hpp \
numeric/conversion/cast.hpp \
+ optional.hpp \
+ program_options.hpp \
+ random/mersenne_twister.hpp \
+ random/uniform_real.hpp \
+ random/variate_generator.hpp \
+ regex.hpp \
shared_ptr.hpp \
smart_ptr/make_shared.hpp \
- optional.hpp \
signals.hpp \
- program_options.hpp \
thread.hpp \
- asio.hpp \
+ unordered_map.hpp \
uuid/uuid.hpp \
uuid/uuid_io.hpp \
uuid/uuid_generators.hpp \
variant.hpp \
- regex.hpp \
- unordered_map.hpp \
- algorithm/string.hpp \
- format.hpp \
- logic/tribool.hpp \
- assign/list_of.hpp \
$TARGET_DIR
rm -rf $TARGET_DIR/libs/config