# # # patch "Makefile.am" # from [2495a22a32c700fafabeebfc57839c18b6cf56ea] # to [0cf90540976e43b0705fe0b12938c89600c09b48] # # patch "constants.cc" # from [d498aeb1142cf7d32431badd5356df3bf358d36f] # to [94319b46e450459cee4702561bfb16646838b667] # # patch "numeric_vocab.hh" # from [3728947528f049f1e94f2d674165cf1c000dc595] # to [33e1ef2e98b7fefc28bf39b8069e65744248a93c] # ============================================================ --- Makefile.am 2495a22a32c700fafabeebfc57839c18b6cf56ea +++ Makefile.am 0cf90540976e43b0705fe0b12938c89600c09b48 @@ -289,7 +289,6 @@ bin_PROGRAMS = mtn # primaries bin_PROGRAMS = mtn -check_PROGRAMS = unit_tests tester noinst_PROGRAMS = txt2c EXTRA_PROGRAMS = usher @@ -502,9 +501,15 @@ if BUILD_UNIT_TESTS # testsuite stuff (could this possibly be more ugly?) if BUILD_UNIT_TESTS + +check_PROGRAMS = unit_tests tester TESTS = unit_tests run_tester_tests run_lua_tests + else + +check_PROGRAMS = tester TESTS = run_tester_tests run_lua_tests + endif TESTS_ENVIRONMENT=AUTOTEST_PATH="." ============================================================ --- constants.cc d498aeb1142cf7d32431badd5356df3bf358d36f +++ constants.cc 94319b46e450459cee4702561bfb16646838b667 @@ -13,8 +13,6 @@ #include "constants.hh" #include "numeric_vocab.hh" -#include - using std::string; namespace constants @@ -136,17 +134,6 @@ namespace constants size_t const merkle_bitmap_length_in_bits = merkle_num_slots * 2; size_t const merkle_bitmap_length_in_bytes = merkle_bitmap_length_in_bits / 8; - BOOST_STATIC_ASSERT(sizeof(char) == 1); - BOOST_STATIC_ASSERT(CHAR_BIT == 8); - BOOST_STATIC_ASSERT(merkle_num_tree_levels > 0); - BOOST_STATIC_ASSERT(merkle_num_tree_levels < 256); - BOOST_STATIC_ASSERT(merkle_fanout_bits > 0); - BOOST_STATIC_ASSERT(merkle_fanout_bits < 32); - BOOST_STATIC_ASSERT(merkle_hash_length_in_bits > 0); - BOOST_STATIC_ASSERT((merkle_hash_length_in_bits % merkle_fanout_bits) == 0); - BOOST_STATIC_ASSERT(merkle_bitmap_length_in_bits > 0); - BOOST_STATIC_ASSERT((merkle_bitmap_length_in_bits % 8) == 0); - u8 const netcmd_current_protocol_version = 6; size_t const netcmd_minimum_bytes_to_bother_with_gzip = 0xfff; @@ -163,6 +150,27 @@ namespace constants string const default_encoding("default"); } +#include + +// constraint checks for fundamental types +// n.b. sizeof([unsigned] char) is *defined* to be 1 by the C++ standard. +BOOST_STATIC_ASSERT(std::numeric_limits::digits == 8); +BOOST_STATIC_ASSERT(sizeof(u8) == 1); +BOOST_STATIC_ASSERT(sizeof(u16) == 2); +BOOST_STATIC_ASSERT(sizeof(u32) == 4); +BOOST_STATIC_ASSERT(sizeof(u64) == 8); + +// constraint checks for relations between constants above +using namespace constants; +BOOST_STATIC_ASSERT(merkle_num_tree_levels > 0); +BOOST_STATIC_ASSERT(merkle_num_tree_levels < 256); +BOOST_STATIC_ASSERT(merkle_fanout_bits > 0); +BOOST_STATIC_ASSERT(merkle_fanout_bits < 32); +BOOST_STATIC_ASSERT(merkle_hash_length_in_bits > 0); +BOOST_STATIC_ASSERT((merkle_hash_length_in_bits % merkle_fanout_bits) == 0); +BOOST_STATIC_ASSERT(merkle_bitmap_length_in_bits > 0); +BOOST_STATIC_ASSERT((merkle_bitmap_length_in_bits % 8) == 0); + // Local Variables: // mode: C++ // fill-column: 76 ============================================================ --- numeric_vocab.hh 3728947528f049f1e94f2d674165cf1c000dc595 +++ numeric_vocab.hh 33e1ef2e98b7fefc28bf39b8069e65744248a93c @@ -21,13 +21,6 @@ typedef uint64_t u64; typedef uint32_t u32; typedef uint64_t u64; -BOOST_STATIC_ASSERT(sizeof(char) == 1); -BOOST_STATIC_ASSERT(CHAR_BIT == 8); -BOOST_STATIC_ASSERT(sizeof(u8) == 1); -BOOST_STATIC_ASSERT(sizeof(u16) == 2); -BOOST_STATIC_ASSERT(sizeof(u32) == 4); -BOOST_STATIC_ASSERT(sizeof(u64) == 8); - // This is similar to static_cast(v). The difference is that when T is // unsigned, this cast does not sign-extend: // static_cast((signed char) -1) = 4294967295 @@ -43,8 +36,9 @@ widen(V const & v) return static_cast(v); else { + const size_t char_bit = std::numeric_limits::digits; T mask = std::numeric_limits::max(); - size_t shift = (sizeof(T) - sizeof(V)) * 8; + size_t shift = (sizeof(T) - sizeof(V)) * char_bit; mask >>= shift; return static_cast(v) & mask; }