COOPENOMICS  v1
Кооперативная Экономика
counts.hpp
См. документацию.
1struct counts_base {
2 eosio::name key;
3 eosio::name secondary_key;
4 uint64_t value;
5
6 uint64_t primary_key() const {
7 return key.value;
8 }
9 uint128_t keyskey() const {
10 return combine_ids(key.value, secondary_key.value);
11 }
13 uint128_t keyvalue() const {
14 return combine_ids(key.value, value);
15 }
17};
18
19typedef eosio::multi_index<
20 "counts"_n, counts_base,
21 eosio::indexed_by<"keyskey"_n, eosio::const_mem_fun<counts_base, uint128_t,
24
25uint64_t get_id(eosio::name code, eosio::name scope, eosio::name key) {
26 counts_index counts(code, scope.value);
27 auto count = counts.find(key.value);
28 uint64_t id = 1;
29
30 if (count == counts.end()) {
31 counts.emplace(code, [&](auto &c) {
32 c.key = key;
33 c.value = id;
34 });
35 } else {
36 id = count->value + 1;
37 counts.modify(count, code, [&](auto &c) { c.value = id; });
38 }
39
40 return id;
41};
42
43uint64_t get_global_id(eosio::name _me, eosio::name key) {
44 counts_index counts(_me, _me.value);
45 auto count = counts.find(key.value);
46 uint64_t id = 1;
47
48 if (count == counts.end()) {
49 counts.emplace(_me, [&](auto &c) {
50 c.key = key;
51 c.value = id;
52 });
53 } else {
54 id = count->value + 1;
55 counts.modify(count, _me, [&](auto &c) { c.value = id; });
56 }
57
58 return id;
59};
60
61uint64_t get_global_id_in_scope(eosio::name _me, eosio::name scope,
62 eosio::name key) {
63 counts_index counts(_me, scope.value);
64 auto count = counts.find(key.value);
65 uint64_t id = 1;
66
67 if (count == counts.end()) {
68 counts.emplace(_me, [&](auto &c) {
69 c.key = key;
70 c.value = id;
71 });
72 } else {
73 id = count->value + 1;
74 counts.modify(count, _me, [&](auto &c) { c.value = id; });
75 }
76
77 return id;
78};
eosio::multi_index< "counts"_n, counts_base, eosio::indexed_by<"keyskey"_n, eosio::const_mem_fun< counts_base, uint128_t, &counts_base::keyskey > > > counts_index
Definition: counts.hpp:23
uint64_t get_id(eosio::name code, eosio::name scope, eosio::name key)
Definition: counts.hpp:25
uint64_t get_global_id_in_scope(eosio::name _me, eosio::name scope, eosio::name key)
Definition: counts.hpp:61
uint64_t get_global_id(eosio::name _me, eosio::name key)
Definition: counts.hpp:43
Definition: counts.hpp:1
eosio::name key
Definition: counts.hpp:2
eosio::name secondary_key
Definition: counts.hpp:3
uint64_t primary_key() const
Definition: counts.hpp:6
uint128_t keyvalue() const
Definition: counts.hpp:13
uint64_t value
Definition: counts.hpp:4
uint128_t keyskey() const
Definition: counts.hpp:9
Таблица счетчиков
Definition: soviet.hpp:193
static uint128_t combine_ids(const uint64_t &x, const uint64_t &y)
Definition: utils.hpp:5