Skip to content

Commit

Permalink
Ref #98: Shorten primary_key_cast to to_raw_pk
Browse files Browse the repository at this point in the history
  • Loading branch information
nathanielhourt authored and dimas1185 committed Jun 8, 2023
1 parent 358ca79 commit 7cc450f
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions libraries/eosiolib/contracts/eosio/multi_index.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -335,8 +335,8 @@ namespace _multi_index_detail {
};

template<typename PK>
inline uint64_t primary_key_cast(PK pk) { return pk; }
inline uint64_t primary_key_cast(eosio::name pk) { return pk.value; }
inline uint64_t to_raw_key(PK pk) { return pk; }
inline uint64_t to_raw_key(eosio::name pk) { return pk.value; }

}

Expand Down Expand Up @@ -439,7 +439,7 @@ class multi_index
{
private:

static_assert( std::is_same_v<decltype(_multi_index_detail::primary_key_cast(std::declval<T>().primary_key())), uint64_t>,
static_assert( std::is_same_v<decltype(_multi_index_detail::to_raw_key(std::declval<T>().primary_key())), uint64_t>,
"Primary key must be uint64_t or name" );
static_assert( sizeof...(Indices) <= 16, "multi_index only supports a maximum of 16 secondary indices" );

Expand Down Expand Up @@ -827,7 +827,7 @@ class multi_index
});

const item* ptr = itm.get();
auto pk = _multi_index_detail::primary_key_cast(itm->primary_key());
auto pk = _multi_index_detail::to_raw_key(itm->primary_key());
auto pitr = itm->__primary_itr;

_items_vector.emplace_back( std::move(itm), pk, pitr );
Expand Down Expand Up @@ -1277,7 +1277,7 @@ class multi_index
*/
template<typename PK>
const_iterator lower_bound( PK primary )const {
uint64_t primary_int = _multi_index_detail::primary_key_cast(primary);
uint64_t primary_int = _multi_index_detail::to_raw_key(primary);
auto itr = internal_use_do_not_use::db_lowerbound_i64( _code.value, _scope, static_cast<uint64_t>(TableName), primary_int );
if( itr < 0 ) return end();
const auto& obj = load_object_by_primary_iterator( itr );
Expand Down Expand Up @@ -1323,7 +1323,7 @@ class multi_index
*/
template<typename PK>
const_iterator upper_bound( PK primary )const {
uint64_t primary_int = _multi_index_detail::primary_key_cast(primary);
uint64_t primary_int = _multi_index_detail::to_raw_key(primary);
auto itr = internal_use_do_not_use::db_upperbound_i64( _code.value, _scope, static_cast<uint64_t>(TableName), primary_int );
if( itr < 0 ) return end();
const auto& obj = load_object_by_primary_iterator( itr );
Expand Down Expand Up @@ -1584,7 +1584,7 @@ class multi_index
datastream<char*> ds( (char*)buffer, size );
ds << obj;

uint64_t pk = _multi_index_detail::primary_key_cast(obj.primary_key());
uint64_t pk = _multi_index_detail::to_raw_key(obj.primary_key());

i.__primary_itr = internal_use_do_not_use::db_store_i64( _scope, static_cast<uint64_t>(TableName), payer.value, pk, buffer, size );

Expand All @@ -1603,7 +1603,7 @@ class multi_index
});

const item* ptr = itm.get();
auto pk = _multi_index_detail::primary_key_cast(itm->primary_key());
auto pk = _multi_index_detail::to_raw_key(itm->primary_key());
auto pitr = itm->__primary_itr;

_items_vector.emplace_back( std::move(itm), pk, pitr );
Expand Down Expand Up @@ -1710,12 +1710,12 @@ class multi_index

auto secondary_keys = make_extractor_tuple::get_extractor_tuple(_indices, obj);

uint64_t pk = _multi_index_detail::primary_key_cast(obj.primary_key());
uint64_t pk = _multi_index_detail::to_raw_key(obj.primary_key());

auto& mutableobj = const_cast<T&>(obj); // Do not forget the auto& otherwise it would make a copy and thus not update at all.
updater( mutableobj );

eosio::check( pk == _multi_index_detail::primary_key_cast(obj.primary_key()), "updater cannot change primary key when modifying an object" );
eosio::check( pk == _multi_index_detail::to_raw_key(obj.primary_key()), "updater cannot change primary key when modifying an object" );

size_t size = pack_size( obj );
//using malloc/free here potentially is not exception-safe, although WASM doesn't support exceptions
Expand Down Expand Up @@ -1820,7 +1820,7 @@ class multi_index
if( itr2 != _items_vector.rend() )
return iterator_to(*(itr2->_item));

uint64_t primary_int = _multi_index_detail::primary_key_cast(primary);
uint64_t primary_int = _multi_index_detail::to_raw_key(primary);
auto itr = internal_use_do_not_use::db_find_i64( _code.value, _scope, static_cast<uint64_t>(TableName), primary_int );
if( itr < 0 ) return end();

Expand All @@ -1845,7 +1845,7 @@ class multi_index
if( itr2 != _items_vector.rend() )
return iterator_to(*(itr2->_item));

uint64_t primary_int = _multi_index_detail::primary_key_cast(primary);
uint64_t primary_int = _multi_index_detail::to_raw_key(primary);
auto itr = internal_use_do_not_use::db_find_i64( _code.value, _scope, static_cast<uint64_t>(TableName), primary_int );
eosio::check( itr >= 0, error_msg );

Expand Down

0 comments on commit 7cc450f

Please sign in to comment.