23 {
25
26 flat_multimap<uint16_t, block_extension>
results;
27
29
32 auto id = e.first;
33
34 SYS_ASSERT(
id >= id_type_lower_bound, invalid_block_extension,
35 "Block extensions are not in the correct order (ascending id types required)"
36 );
37
38 auto iter =
results.emplace(std::piecewise_construct,
39 std::forward_as_tuple(id),
40 std::forward_as_tuple()
41 );
42
43 auto match = decompose_t::extract<block_extension>( id, e.second, iter->second );
45 "Block extension with id type ${id} is not supported",
46 ("id", id)
47 );
48
49 if( match->enforce_unique ) {
50 SYS_ASSERT( i == 0 ||
id > id_type_lower_bound, invalid_block_header_extension,
51 "Block extension with id type ${id} is not allowed to repeat",
52 ("id", id)
53 );
54 }
55
56
57 id_type_lower_bound =
id;
58 }
59
61
62 }
#define SYS_ASSERT(expr, exc_type, FORMAT,...)
decompose< Ts... > decompose_t
extensions_type block_extensions
new or generated transactions
account_query_db::get_accounts_by_authorizers_result results