open_pql/prim/eval/
mod.rs1use super::{
2 integer::{
3 retain_leading_2_bits, retain_leading_3_bits, retain_leading_5_bits,
4 retain_leading_bit,
5 },
6 rank::{
7 mk_masks_comb2rank, mk_masks_rank, mk_masks_rank13, mk_masks_rankcomb2,
8 mk_masks_rankcomb3, mk_masks_rankrank,
9 },
10};
11
12mod common;
13pub mod holdem5;
14pub mod holdem7;
15pub mod omaha9;
16pub mod shortdeck5;
17pub mod shortdeck7;
18
19pub use common::{
20 ARR_STRAIGHT, ARR_STRAIGHT_SHORT, STRAIGHT_A789T, STRAIGHT_A2345,
21 get_card_count,
22};
23pub(crate) use common::{
24 FLUSH, FLUSH_SHORT, FULLHOUSE, FULLHOUSE_SHORT, HIGHCARD, NONE_I16, PAIR,
25 QUADS, STRAIGHT, STRAIGHT_9TJQK, STRAIGHT_89TJQ, STRAIGHT_789TJ,
26 STRAIGHT_6789T, STRAIGHT_23456, STRAIGHT_34567, STRAIGHT_45678,
27 STRAIGHT_56789, STRAIGHT_TJQKA, TRIPS, TWOPAIR, U16_5, U16_T, flush_ranks,
28 mk_ranking, to_straightflush,
29};
30
31pub const fn decompose_omaha(cards: u64) -> (u64, u64, u64, u64, u64, u64) {
32 let z1 = cards.trailing_zeros();
33 let z2 = (cards ^ 1 << z1).trailing_zeros();
34 let z3 = (cards ^ 1 << z1 ^ 1 << z2).trailing_zeros();
35 let z4 = (cards ^ 1 << z1 ^ 1 << z2 ^ 1 << z3).trailing_zeros();
36
37 (
38 1 << z1 | 1 << z2,
39 1 << z1 | 1 << z3,
40 1 << z1 | 1 << z4,
41 1 << z2 | 1 << z3,
42 1 << z2 | 1 << z4,
43 1 << z3 | 1 << z4,
44 )
45}