CDT  v4.2.0
инструменты разработчика
Шаблон класса eosio::multi_index< TableName, T, Indices >

Определяет многоиндексную таблицу COOPOS (Multi Index Table) Подробнее...

#include <multi_index.hpp>

Классы

struct  const_iterator
 

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

typedef std::reverse_iterator< const_iteratorconst_reverse_iterator
 struct multi_index::const_iterator Подробнее...
 

Открытые члены

 multi_index (name code, uint64_t scope)
 load_object_by_primary_iterator Подробнее...
 
name get_code () const
 
uint64_t get_scope () const
 
const_iterator cbegin () const
 
const_iterator begin () const
 
const_iterator cend () const
 
const_iterator end () const
 
const_reverse_iterator crbegin () const
 
const_reverse_iterator rbegin () const
 
const_reverse_iterator crend () const
 
const_reverse_iterator rend () const
 
template<typename PK >
const_iterator lower_bound (PK primary) const
 
template<typename PK >
const_iterator upper_bound (PK primary) const
 
uint64_t available_primary_key () const
 
template<name::raw IndexName>
auto get_index ()
 
template<name::raw IndexName>
auto get_index () const
 
const_iterator iterator_to (const T &obj) const
 
template<typename Lambda >
const_iterator emplace (name payer, Lambda &&constructor)
 
template<typename Lambda >
void modify (const_iterator itr, name payer, Lambda &&updater)
 
template<typename Lambda >
void modify (const T &obj, name payer, Lambda &&updater)
 
template<typename PK >
const T & get (PK primary, const char *error_msg="unable to find key") const
 
template<typename PK >
const_iterator find (PK primary) const
 
template<typename PK >
const_iterator require_find (PK primary, const char *error_msg="unable to find key") const
 
const_iterator erase (const_iterator itr)
 
void erase (const T &obj)
 

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

template<name::raw TableName, typename T, typename... Indices>
class eosio::multi_index< TableName, T, Indices >

Определяет многоиндексную таблицу COOPOS (Multi Index Table)

API многоиндексных таблиц COOPOS даёт C++-интерфейс к базе данных COOPOS и устроен по образцу Boost Multi Index Container. Многоиндексная таблица COOPOS требует ровно один первичный ключ типа uint64_t. Чтобы таблица могла получать первичный ключ, у хранимого в ней объекта должна быть const-функция-член primary_key(), возвращающая uint64_t. Многоиндексная таблица COOPOS также поддерживает до 16 вторичных индексов. Тип вторичного индекса может быть одним из:

  • uint64_t
  • uint128_t
  • double
  • long double
  • eosio::checksum256
Параметры шаблона
TableName— имя таблицы
T— тип данных, хранимых в таблице
Indices— вторичные индексы таблицы; поддерживается до 16 индексов

Пример:

#include <eosiolib/eosio.hpp>
using namespace eosio;
class mycontract: contract {
struct record {
uint64_t primary;
uint64_t secondary_1;
uint128_t secondary_2;
checksum256 secondary_3;
double secondary_4;
long double secondary_5;
uint64_t primary_key() const { return primary; }
uint64_t get_secondary_1() const { return secondary_1; }
uint128_t get_secondary_2() const { return secondary_2; }
checksum256 get_secondary_3() const { return secondary_3; }
double get_secondary_4() const { return secondary_4; }
long double get_secondary_5() const { return secondary_5; }
};
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< "bysecondary1"_n, const_mem_fun<record, uint64_t, &record::get_secondary_1> >,
indexed_by< "bysecondary2"_n, const_mem_fun<record, uint128_t, &record::get_secondary_2> >,
indexed_by< "bysecondary3"_n, const_mem_fun<record, checksum256, &record::get_secondary_3> >,
indexed_by< "bysecondary4"_n, const_mem_fun<record, double, &record::get_secondary_4> >,
indexed_by< "bysecondary5"_n, const_mem_fun<record, long double, &record::get_secondary_5> >
> table( code, scope);
}
}
EOSIO_DISPATCH( mycontract, (myaction) )

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


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