Scorum
db_accessor_factory.cpp
Go to the documentation of this file.
3 
14 
15 // clang-format off
16 #define DB_TYPES \
17  (game_object) \
18  (game_uuid_history_object) \
19  (proposal_object) \
20  (betting_property_object) \
21  (pending_bet_object) \
22  (matched_bet_object) \
23  (bet_uuid_history_object) \
24  (registration_pool_object) \
25  (registration_committee_member_object) \
26  (reg_pool_sp_delegation_object) \
27  (chain_property_object) \
28  (dynamic_global_property_object) \
29  (account_object) \
30  (comment_object) \
31  (nft_object) \
32  (game_round_object)
33 // clang-format on
34 
35 #define INSTANTIATE_DBA_FACTORY_METHODS(_1, _2, TYPE) \
36  template db_accessor<TYPE>& db_accessor_factory::get_dba<TYPE>() const;
37 
38 namespace scorum {
39 namespace chain {
40 namespace dba {
41 
43  : _db(db)
44 {
45 }
46 
47 template <typename TObject> db_accessor<TObject>& db_accessor_factory::get_dba() const
48 {
49  auto it = _db_accessors.emplace(boost::typeindex::type_id<TObject>(), db_accessor<TObject>{ _db }).first;
50 
51  return boost::any_cast<db_accessor<TObject>&>(it->second);
52 }
53 
54 BOOST_PP_SEQ_FOR_EACH(INSTANTIATE_DBA_FACTORY_METHODS, , DB_TYPES)
55 } // namespace dba
56 } // namespace chain
57 } // namespace scorum
#define INSTANTIATE_DBA_FACTORY_METHODS(_1, _2, TYPE)
#define DB_TYPES
Definition: asset.cpp:15
boost::container::flat_map< boost::typeindex::type_index, boost::any > _db_accessors
db_accessor< TObject > & get_dba() const