多索引表 创建singleton实例
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多索引表 创建singleton实例相关的知识,希望对你有一定的参考价值。
singleton_example.hpp
#include <eosio/eosio.hpp>
#include <eosio/singleton.hpp>
using namespace eosio;
class [[eosio::contract]] singleton_example : public contract {
public:
using contract::contract;
singleton_example( name receiver, name code, datastream<const char*> ds ) :
contract(receiver, code, ds),
singleton_instance(receiver, receiver.value) {}
[[eosio::action]]
void set( name user, uint64_t value );
[[eosio::action]]
void get( );
struct [[eosio::table]] testtable {
name primary_value;
uint64_t secondary_value;
uint64_t primary_key() const { return primary_value.value; }
} testtablerow;
using singleton_type = eosio::singleton<"testtable"_n, testtable>;
singleton_type singleton_instance;
using set_action = action_wrapper<"set"_n, &singleton_example::set>;
using get_action = action_wrapper<"get"_n, &singleton_example::get>;
};
singleton_example.cpp
#include <singleton_example.hpp>
[[eosio::action]] void singleton_example::set( name user, uint64_t value ) {
auto entry_stored = singleton_instance.get_or_create(user, testtablerow);
entry_stored.primary_value = user;
entry_stored.secondary_value = value;
singleton_instance.set(entry_stored, user);
}
[[eosio::action]] void singleton_example::get( ) {
if (singleton_instance.exists())
eosio::print(
"Value stored for: ",
name{singleton_instance.get().primary_value.value},
" is ",
singleton_instance.get().secondary_value,
"\\n");
else
eosio::print("Singleton is empty\\n");
}
以上是关于多索引表 创建singleton实例的主要内容,如果未能解决你的问题,请参考以下文章