struct eosio::indexed_by

Class List > eosio :: indexed_by

Public Types

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

Detailed Description

The indexed_by struct is used to instantiate the indices for the Multi-Index table. In EOSIO, up to 16 secondary indices can be specified.

Template parameters:

  • IndexName - is the name of the index. The name must be provided as an EOSIO base32 encoded 64-bit integer and must conform to the EOSIO naming requirements of a maximum of 13 characters, the first twelve from the lowercase characters a-z, digits 1-5, and ".", and if there is a 13th character, it is restricted to lowercase characters a-p and ".".
  • Extractor - is a function call operator that takes a const reference to the table object type and returns either a secondary key type or a reference to a secondary key type. It is recommended to use the template, which is a type alias to the `boost::multi_index::const_mem_fun`. See the documentation for the Boost key extractor for more details.

Example:

#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) )

Public Types Documentation

enum constants

enum eosio::indexed_by::constants {
    index_name = static_cast<uint64_t>(IndexName),
};

typedef secondary_extractor_type

typedef Extractor eosio::indexed_by< IndexName, Extractor >::secondary_extractor_type;

The documentation for this class was generated from the following file: libraries/eosiolib/contracts/eosio/multi\_index.hpp