diff options
author | Remko Tronçon <git@el-tramo.be> | 2012-12-23 13:16:26 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2012-12-23 14:43:26 (GMT) |
commit | 491ddd570a752cf9bda85933bed0c6942e39b1f9 (patch) | |
tree | 10c25c1be8cc08d0497df1dccd56a10fbb30beee /3rdParty/Boost/src/boost/uuid | |
parent | da7d7a0ca71b80281aa9ff2526290b61ccb0cc60 (diff) | |
download | swift-491ddd570a752cf9bda85933bed0c6942e39b1f9.zip swift-491ddd570a752cf9bda85933bed0c6942e39b1f9.tar.bz2 |
Update Boost to 1.52.0.
Change-Id: I1e56bea2600bf2ed9c5b3aba8c4f9d2a0f350e77
Diffstat (limited to '3rdParty/Boost/src/boost/uuid')
-rw-r--r-- | 3rdParty/Boost/src/boost/uuid/name_generator.hpp | 8 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/uuid/random_generator.hpp | 3 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/uuid/seed_rng.hpp | 28 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/uuid/sha1.hpp | 61 | ||||
-rw-r--r-- | 3rdParty/Boost/src/boost/uuid/string_generator.hpp | 5 |
5 files changed, 67 insertions, 38 deletions
diff --git a/3rdParty/Boost/src/boost/uuid/name_generator.hpp b/3rdParty/Boost/src/boost/uuid/name_generator.hpp index 42473a6..fe582b4 100644 --- a/3rdParty/Boost/src/boost/uuid/name_generator.hpp +++ b/3rdParty/Boost/src/boost/uuid/name_generator.hpp @@ -71,10 +71,10 @@ private: for (size_t i=0; i<count; i++) { uint32_t c = characters[i]; - sha.process_byte( (c >> 0) && 0xFF ); - sha.process_byte( (c >> 8) && 0xFF ); - sha.process_byte( (c >> 16) && 0xFF ); - sha.process_byte( (c >> 24) && 0xFF ); + sha.process_byte( (c >> 0) & 0xFF ); + sha.process_byte( (c >> 8) & 0xFF ); + sha.process_byte( (c >> 16) & 0xFF ); + sha.process_byte( (c >> 24) & 0xFF ); } } diff --git a/3rdParty/Boost/src/boost/uuid/random_generator.hpp b/3rdParty/Boost/src/boost/uuid/random_generator.hpp index 4d11f6b..0f4a0ab 100644 --- a/3rdParty/Boost/src/boost/uuid/random_generator.hpp +++ b/3rdParty/Boost/src/boost/uuid/random_generator.hpp @@ -90,7 +90,8 @@ public: i = 0; } - *it = ((random_value >> (i*8)) & 0xFF); + // static_cast gets rid of warnings of converting unsigned long to boost::uint8_t + *it = static_cast<uuid::value_type>((random_value >> (i*8)) & 0xFF); } // set variant diff --git a/3rdParty/Boost/src/boost/uuid/seed_rng.hpp b/3rdParty/Boost/src/boost/uuid/seed_rng.hpp index 3090197..97b505f 100644 --- a/3rdParty/Boost/src/boost/uuid/seed_rng.hpp +++ b/3rdParty/Boost/src/boost/uuid/seed_rng.hpp @@ -24,12 +24,11 @@ #include <boost/config.hpp> #include <cstring> // for memcpy #include <limits> -#include <memory.h> #include <ctime> // for time_t, time, clock_t, clock #include <cstdlib> // for rand #include <cstdio> // for FILE, fopen, fread, fclose #include <boost/uuid/sha1.hpp> -//#include <boost/nondet_random.hpp> //forward declare boost::random_device +//#include <boost/nondet_random.hpp> //forward declare boost::random::random_device // can't use boost::generator_iterator since boost::random number seed(Iter&, Iter) // functions need a last iterator @@ -57,9 +56,9 @@ namespace std { #endif // forward declare random number generators -namespace boost { +namespace boost { namespace random { class random_device; -} //namespace boost +}} //namespace boost::random namespace boost { namespace uuids { @@ -80,7 +79,7 @@ public: : rd_index_(5) , random_(std::fopen( "/dev/urandom", "rb" )) {} - + ~seed_rng() { if (random_) { @@ -110,9 +109,10 @@ public: } private: + inline void ignore_size(size_t) {} + static unsigned int * sha1_random_digest_state_() { - // intentionally left uninitialized static unsigned int state[ 5 ]; return state; } @@ -140,7 +140,11 @@ private: } { - unsigned int rn[] = { std::rand(), std::rand(), std::rand() }; + unsigned int rn[] = + { static_cast<unsigned int>(std::rand()) + , static_cast<unsigned int>(std::rand()) + , static_cast<unsigned int>(std::rand()) + }; sha.process_bytes( (unsigned char const*)rn, sizeof( rn ) ); } @@ -150,7 +154,7 @@ private: if(random_) { - std::fread( buffer, 1, 20, random_ ); + ignore_size(std::fread( buffer, 1, 20, random_ )); } // using an uninitialized buffer[] if fopen fails @@ -185,7 +189,7 @@ private: unsigned int rd_[5]; int rd_index_; std::FILE * random_; - + private: // make seed_rng noncopyable seed_rng(seed_rng const&); seed_rng& operator=(seed_rng const&); @@ -208,9 +212,9 @@ class generator_iterator , single_pass_traversal_tag , typename Generator::result_type const& > super_t; - + public: - generator_iterator() : m_g(NULL) {} + generator_iterator() : m_g(NULL), m_value(0) {} generator_iterator(Generator* g) : m_g(g), m_value((*m_g)()) {} void increment() @@ -247,7 +251,7 @@ inline void seed(UniformRandomNumberGenerator& rng) // random_device does not / can not be seeded template <> -inline void seed<boost::random_device>(boost::random_device&) {} +inline void seed<boost::random::random_device>(boost::random::random_device&) {} // random_device does not / can not be seeded template <> diff --git a/3rdParty/Boost/src/boost/uuid/sha1.hpp b/3rdParty/Boost/src/boost/uuid/sha1.hpp index b4a1344..e695e13 100644 --- a/3rdParty/Boost/src/boost/uuid/sha1.hpp +++ b/3rdParty/Boost/src/boost/uuid/sha1.hpp @@ -8,16 +8,18 @@ // Revision History // 29 May 2007 - Initial Revision // 25 Feb 2008 - moved to namespace boost::uuids::detail +// 10 Jan 2012 - can now handle the full size of messages (2^64 - 1 bits) // This is a byte oriented implementation -// Note: this implementation does not handle message longer than -// 2^32 bytes. #ifndef BOOST_UUID_SHA1_H #define BOOST_UUID_SHA1_H #include <boost/static_assert.hpp> +#include <stdexcept> +#include <boost/throw_exception.hpp> #include <cstddef> +#include <string> #ifdef BOOST_NO_STDC_NAMESPACE namespace std { @@ -54,6 +56,7 @@ public: private: void process_block(); + void process_byte_impl(unsigned char byte); private: unsigned int h_[5]; @@ -61,7 +64,8 @@ private: unsigned char block_[64]; std::size_t block_byte_index_; - std::size_t byte_count_; + std::size_t bit_count_low; + std::size_t bit_count_high; }; inline sha1::sha1() @@ -78,13 +82,34 @@ inline void sha1::reset() h_[4] = 0xC3D2E1F0; block_byte_index_ = 0; - byte_count_ = 0; + bit_count_low = 0; + bit_count_high = 0; } inline void sha1::process_byte(unsigned char byte) { + process_byte_impl(byte); + + // size_t max value = 0xFFFFFFFF + //if (bit_count_low + 8 >= 0x100000000) { // would overflow + //if (bit_count_low >= 0x100000000-8) { + if (bit_count_low < 0xFFFFFFF8) { + bit_count_low += 8; + } else { + bit_count_low = 0; + + if (bit_count_high <= 0xFFFFFFFE) { + ++bit_count_high; + } else { + BOOST_THROW_EXCEPTION(std::runtime_error("sha1 too many bytes")); + } + } +} + +inline void sha1::process_byte_impl(unsigned char byte) +{ block_[block_byte_index_++] = byte; - ++byte_count_; + if (block_byte_index_ == 64) { block_byte_index_ = 0; process_block(); @@ -160,10 +185,8 @@ inline void sha1::process_block() inline void sha1::get_digest(digest_type digest) { - std::size_t bit_count = byte_count_*8; - // append the bit '1' to the message - process_byte(0x80); + process_byte_impl(0x80); // append k bits '0', where k is the minimum number >= 0 // such that the resulting message length is congruent to 56 (mod 64) @@ -171,29 +194,29 @@ inline void sha1::get_digest(digest_type digest) if (block_byte_index_ > 56) { // finish this block while (block_byte_index_ != 0) { - process_byte(0); + process_byte_impl(0); } // one more block while (block_byte_index_ < 56) { - process_byte(0); + process_byte_impl(0); } } else { while (block_byte_index_ < 56) { - process_byte(0); + process_byte_impl(0); } } // append length of message (before pre-processing) // as a 64-bit big-endian integer - process_byte(0); - process_byte(0); - process_byte(0); - process_byte(0); - process_byte( static_cast<unsigned char>((bit_count>>24) & 0xFF)); - process_byte( static_cast<unsigned char>((bit_count>>16) & 0xFF)); - process_byte( static_cast<unsigned char>((bit_count>>8 ) & 0xFF)); - process_byte( static_cast<unsigned char>((bit_count) & 0xFF)); + process_byte_impl( static_cast<unsigned char>((bit_count_high>>24) & 0xFF) ); + process_byte_impl( static_cast<unsigned char>((bit_count_high>>16) & 0xFF) ); + process_byte_impl( static_cast<unsigned char>((bit_count_high>>8 ) & 0xFF) ); + process_byte_impl( static_cast<unsigned char>((bit_count_high) & 0xFF) ); + process_byte_impl( static_cast<unsigned char>((bit_count_low>>24) & 0xFF) ); + process_byte_impl( static_cast<unsigned char>((bit_count_low>>16) & 0xFF) ); + process_byte_impl( static_cast<unsigned char>((bit_count_low>>8 ) & 0xFF) ); + process_byte_impl( static_cast<unsigned char>((bit_count_low) & 0xFF) ); // get final digest digest[0] = h_[0]; diff --git a/3rdParty/Boost/src/boost/uuid/string_generator.hpp b/3rdParty/Boost/src/boost/uuid/string_generator.hpp index 7d2733b..538ebe8 100644 --- a/3rdParty/Boost/src/boost/uuid/string_generator.hpp +++ b/3rdParty/Boost/src/boost/uuid/string_generator.hpp @@ -14,6 +14,7 @@ #include <iterator> #include <algorithm> // for find #include <stdexcept> +#include <boost/throw_exception.hpp> #ifdef BOOST_NO_STDC_NAMESPACE namespace std { @@ -41,7 +42,7 @@ struct string_generator { template <typename ch, typename char_traits, typename alloc> uuid operator()(std::basic_string<ch, char_traits, alloc> const& s) const { return operator()(s.begin(), s.end()); - }; + } uuid operator()(char const*const s) const { return operator()(s, s+std::strlen(s)); @@ -174,7 +175,7 @@ private: } void throw_invalid() const { - throw std::runtime_error("invalid uuid string"); + BOOST_THROW_EXCEPTION(std::runtime_error("invalid uuid string")); } }; |