


// ==============================================================================================================
// #pragma once
// #include "overall_define.h"
// #include "template/domain_dependent/abstraction_base.h"
// #include "template/domain_dependent/hand_base.hpp"

// template<typename Poker_t>
// uint64_t AbstractionBase<Poker_t>::abstract_view(const Hand<Poker_t>& hand) const {
//     return street_bucket[hand.get_round()][hand.get_isomorphism()];
// }

// template<typename Poker_t>
// uint64_t AbstractionBase<Poker_t>::abstract_view(const type::card_t* hole, const type::card_t* board, int round) const{
//     Hand<Poker_t> hand(hole, board, round);
//     return street_bucket[round][hand.get_isomorphism()];
// }

// template<typename Poker_t>
// uint64_t AbstractionBase<Poker_t>::abstract_view(uint64_t hand_isomorphism, int round) const{
//     assert(hand_isomorphism < Poker_t::num_hand_isomorphism_round[round]);
//     return street_bucket[round][hand_isomorphism];
// }

// template<typename Poker_t>
// uint64_t AbstractionBase<Poker_t>::round_buckets(int round) const {
//     assert(round<=Poker_t::num_rounds);
//     return num_buckets_round[round];
// }

// template<typename Poker_t>
// const uint64_t* AbstractionBase<Poker_t>::round_buckets() const {
//     return num_buckets_round;
// }

// template<typename Poker_t>
// AbstractionBase<Poker_t>::~AbstractionBase(){
//     for(int i = 0; i < Poker_t::num_rounds; ++i){
//         delete[] street_bucket[i];
//     }
// }