open_pql/prim/eval/
mod.rs

1use 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}