| 89 | |
| 90 | |
| 91 | auto TransTableS::init(const int hand_lookup[][15]) -> void |
| 92 | { |
| 93 | unsigned int top_bit_rank = 1; |
| 94 | unsigned int top_bit_no = 2; |
| 95 | |
| 96 | for (int s = 0; s < DDS_SUITS; s++) |
| 97 | { |
| 98 | aggp_[0].aggr_ranks_[s] = 0; |
| 99 | aggp_[0].win_mask_[s] = 0; |
| 100 | } |
| 101 | |
| 102 | for (unsigned int ind = 1; ind < 8192; ind++) |
| 103 | { |
| 104 | if (ind >= (top_bit_rank + top_bit_rank)) |
| 105 | { |
| 106 | /* Next top bit */ |
| 107 | top_bit_rank <<= 1; |
| 108 | top_bit_no++; |
| 109 | } |
| 110 | aggp_[ind] = aggp_[ind ^ top_bit_rank]; |
| 111 | |
| 112 | for (int s = 0; s < 4; s++) |
| 113 | { |
| 114 | aggp_[ind].aggr_ranks_[s] = |
| 115 | (aggp_[ind].aggr_ranks_[s] >> 2) | |
| 116 | (hand_lookup[s][top_bit_no] << 24); |
| 117 | |
| 118 | aggp_[ind].win_mask_[s] = |
| 119 | (aggp_[ind].win_mask_[s] >> 2) | (3 << 24); |
| 120 | } |
| 121 | } |
| 122 | |
| 123 | reset_text_.resize(ResetReasonCount); |
| 124 | reset_text_[static_cast<int>(ResetReason::Unknown)] = "Unknown reason"; |
| 125 | reset_text_[static_cast<int>(ResetReason::TooManyNodes)] = "Too many nodes"; |
| 126 | reset_text_[static_cast<int>(ResetReason::NewDeal)] = "New Deal"; |
| 127 | reset_text_[static_cast<int>(ResetReason::NewTrump)] = "New trump"; |
| 128 | reset_text_[static_cast<int>(ResetReason::MemoryExhausted)] = "Memory exhausted"; |
| 129 | reset_text_[static_cast<int>(ResetReason::FreeMemory)] = "Free thread memory"; |
| 130 | |
| 131 | } |
| 132 | |
| 133 | |
| 134 | auto TransTableS::set_memory_default( |
no outgoing calls
no test coverage detected