CDT  v4.2.0
инструменты разработчика
Шаблон структуры eosio::indexed_by< IndexName, Extractor >

#include <multi_index.hpp>

Открытые типы

enum  constants { index_name = static_cast<uint64_t>(IndexName) }
 
typedef Extractor secondary_extractor_type
 

Подробное описание

template<name::raw IndexName, typename Extractor>
struct eosio::indexed_by< IndexName, Extractor >

Структура indexed_by используется для задания индексов многоиндексной таблицы. В COOPOS можно задать до 16 вторичных индексов.

Параметры шаблона
IndexName— имя индекса. Имя задаётся как 64-битное целое в кодировке base32 COOPOS и должно соответствовать правилам имён COOPOS: не более 13 символов; первые двенадцать — строчные буквы a–z, цифры 1–5 и «.»; если есть 13-й символ, допускаются только строчные a–p и «.».
Extractor— функтор (оператор вызова функции), принимающий const-ссылку на тип объекта строки таблицы и возвращающий тип вторичного ключа или ссылку на него. Рекомендуется использовать шаблон eosio::const_mem_fun.

Пример:

#include <eosiolib/eosio.hpp>
using namespace eosio;
class mycontract: eosio::contract {
struct record {
uint64_t primary;
uint128_t secondary;
uint64_t primary_key() const { return primary; }
uint128_t get_secondary() const { return secondary; }
};
public:
mycontract(name receiver, name code, datastream<const char*> ds):contract(receiver, code, ds){}
void myaction() {
auto code = _self;
auto scope = _self;
multi_index<"mytable"_n, record,
indexed_by< "bysecondary"_n, const_mem_fun<record, uint128_t, &record::get_secondary> > > table( code, scope);
}
}
EOSIO_DISPATCH( mycontract, (myaction) )

См. определение в файле multi_index.hpp строка 376


Объявления и описания членов структуры находятся в файле: