Scorum
proposal_operations.hpp
Go to the documentation of this file.
1 #pragma once
2 
8 #include <fc/static_variant.hpp>
9 
10 namespace scorum {
11 namespace protocol {
12 
14 {
24 };
25 
27 {
28  FC_ASSERT(t != none_quorum, "Quorum type is not set.");
29  FC_ASSERT(quorum >= SCORUM_MIN_QUORUM_VALUE_PERCENT, "Quorum is to small.");
30  FC_ASSERT(quorum <= SCORUM_MAX_QUORUM_VALUE_PERCENT, "Quorum is to large.");
31 }
32 
34 {
35  virtual void add_member(const account_name_type&) = 0;
36  virtual void exclude_member(const account_name_type&) = 0;
37 
40  virtual void change_base_quorum(const protocol::percent_type) = 0;
41 
45 
46  virtual bool is_exists(const account_name_type&) const = 0;
47  virtual size_t get_members_count() const = 0;
48 };
49 
51 {
52 };
53 
55 {
61 
67 };
68 
69 struct committee : public fc::static_variant<utils::ref<registration_committee_i>, utils::ref<development_committee_i>>
70 {
71  template <typename T>
72  committee(T&& v)
73  : fc::static_variant<utils::ref<registration_committee_i>, utils::ref<development_committee_i>>(
74  std::forward<T>(v))
75  {
76  }
77 
79 };
80 
81 template <typename CommitteeType> struct proposal_committee_operation
82 {
83  typedef CommitteeType committee_type;
85 };
86 
87 template <typename OperationType, typename CommitteeType>
89 {
90  typedef OperationType operation_type;
91 };
92 
94  : public proposal_base_operation<registration_committee_add_member_operation, registration_committee_i>
95 {
97 
98  void validate() const;
99 
101 };
102 
104  : public proposal_base_operation<registration_committee_exclude_member_operation, registration_committee_i>
105 {
107 
108  void validate() const;
109 
111 };
112 
114  : public proposal_base_operation<registration_committee_change_quorum_operation, registration_committee_i>
115 {
118 
119  void validate() const;
120 
122 };
123 
125  : public proposal_base_operation<development_committee_add_member_operation, development_committee_i>
126 {
128 
129  void validate() const;
130 
132 };
133 
135  : public proposal_base_operation<development_committee_exclude_member_operation, development_committee_i>
136 {
138 
139  void validate() const;
140 
142 };
143 
145  : public proposal_base_operation<development_committee_change_quorum_operation, development_committee_i>
146 {
149 
150  void validate() const;
151 
153 };
154 
156  : public proposal_base_operation<development_committee_withdraw_vesting_operation, development_committee_i>
157 {
159 
160  void validate() const;
161 
163 };
164 
166  : public proposal_base_operation<development_committee_withdraw_vesting_operation, development_committee_i>
167 {
170 
171  void validate() const;
172 
174 };
175 
177  : public proposal_base_operation<development_committee_withdraw_vesting_operation, development_committee_i>
178 {
180 
181  void validate() const;
182 
184 };
185 
187  : public proposal_base_operation<development_committee_empower_betting_moderator_operation, development_committee_i>
188 {
190 
191  void validate() const;
192 
194 };
195 
197  : public proposal_base_operation<base_development_committee_change_budgets_auction_properties_operation,
198  development_committee_i>
199 {
200  std::vector<percent_type> auction_coefficients;
201 
202  void validate() const;
203 
205 
206 protected:
208 };
209 
210 template <budget_type type>
213 {
214 };
215 
218 
221 
223  : public proposal_base_operation<development_committee_change_betting_resolve_delay_operation,
224  development_committee_i>
225 {
226  uint32_t delay_sec = 0;
227 
228  void validate() const;
229 
231 };
232 
246 
247 void operation_validate(const proposal_operation& op);
249 
250 } // namespace protocol
251 } // namespace scorum
252 
253 // clang-format off
255  (none_quorum)
258  (base_quorum)
264  )
265 // clang-format on
266 
270 
274 
278 
281 
283  (auction_coefficients))
286  BOOST_PP_SEQ_NIL)
289  BOOST_PP_SEQ_NIL)
290 
292 FC_REFLECT_TYPENAME(scorum::protocol::proposal_operation)
#define SP_SYMBOL
Definition: config.hpp:104
#define SCORUM_SYMBOL
Definition: config.hpp:102
FC_REFLECT_ENUM(scorum::protocol::game_status,(created)(started)(finished)(resolved)(expired)(cancelled)) namespace fc
Definition: game_status.hpp:18
FC_REFLECT(appender_args,(appender)(stream)) FC_REFLECT_DERIVED(file_appender_args
Definition: game.cpp:4
development_committee_change_budgets_auction_properties_operation< budget_type::banner > development_committee_change_banner_budgets_auction_properties_operation
fc::fixed_string_16 account_name_type
Definition: types.hpp:62
uint16_t percent_type
Definition: types.hpp:69
fc::static_variant< registration_committee_add_member_operation, registration_committee_exclude_member_operation, registration_committee_change_quorum_operation, development_committee_add_member_operation, development_committee_exclude_member_operation, development_committee_change_quorum_operation, development_committee_withdraw_vesting_operation, development_committee_transfer_operation, development_committee_empower_advertising_moderator_operation, development_committee_change_post_budgets_auction_properties_operation, development_committee_change_banner_budgets_auction_properties_operation, development_committee_empower_betting_moderator_operation, development_committee_change_betting_resolve_delay_operation > proposal_operation
protocol::percent_type operation_get_required_quorum(committee &committee_service, const proposal_operation &op)
development_committee_change_budgets_auction_properties_operation< budget_type::post > development_committee_change_post_budgets_auction_properties_operation
void validate_quorum(quorum_type t, protocol::percent_type quorum)
void operation_validate(const proposal_operation &op)
Definition: asset.cpp:15
#define DECLARE_OPERATION_SERIALIZATOR(OperationType)
protocol::percent_type get_required_quorum(committee_type &committee_service) const
virtual void change_add_member_quorum(const protocol::percent_type)=0
virtual protocol::percent_type get_base_quorum()=0
virtual bool is_exists(const account_name_type &) const =0
virtual void exclude_member(const account_name_type &)=0
virtual void change_base_quorum(const protocol::percent_type)=0
virtual size_t get_members_count() const =0
virtual protocol::percent_type get_add_member_quorum()=0
virtual void change_exclude_member_quorum(const protocol::percent_type)=0
virtual void add_member(const account_name_type &)=0
virtual protocol::percent_type get_exclude_member_quorum()=0
protocol::percent_type get_required_quorum(committee_type &committee_service) const
protocol::percent_type get_required_quorum(committee_type &committee_service) const
protocol::percent_type get_required_quorum(committee_type &committee_service) const
protocol::percent_type get_required_quorum(committee_type &committee_service) const
protocol::percent_type get_required_quorum(committee_type &committee_service) const
protocol::percent_type get_required_quorum(committee_type &committee_service) const
virtual protocol::percent_type get_betting_moderator_quorum()=0
virtual protocol::percent_type get_budgets_auction_properties_quorum()=0
virtual protocol::percent_type get_transfer_quorum()=0
virtual protocol::percent_type get_betting_resolve_delay_quorum()=0
virtual protocol::percent_type get_advertising_moderator_quorum()=0
virtual void change_betting_resolve_delay_quorum(const protocol::percent_type)=0
virtual void change_budgets_auction_properties_quorum(const protocol::percent_type)=0
virtual void change_betting_moderator_quorum(const protocol::percent_type)=0
virtual void change_transfer_quorum(const protocol::percent_type)=0
virtual void change_advertising_moderator_quorum(const protocol::percent_type)=0
protocol::percent_type get_required_quorum(committee_type &committee_service) const
protocol::percent_type get_required_quorum(committee_type &committee_service) const
proposal_committee_operation< CommitteeType > committee_operation_type
protocol::percent_type get_required_quorum(committee_type &committee_service) const
protocol::percent_type get_required_quorum(committee_type &committee_service) const
protocol::percent_type get_required_quorum(committee_type &committee_service) const