tanton_engine/movepick/pick.rs
1use std::fmt;
2use std::mem;
3
4#[repr(u8)]
5#[derive(Copy, Clone)]
6pub enum Pick {
7 // Main Searching Algo
8 MainSearch = 0,
9 CapturesInit = 1,
10 GoodCaptures = 2,
11 KillerOne = 3,
12 KillerTwo = 4,
13 CounterMove = 5,
14 QuietInit = 6,
15 QuietMoves = 7,
16 BadCaptures = 8,
17 // Evasions, Main and Qsearch
18 EvasionSearch = 9,
19 EvasionsInit = 10,
20 AllEvasions = 11,
21 // ProbCut Searching
22 ProbCutSearch = 12,
23 ProbCutCapturesInit = 13,
24 ProbCutCaptures = 14,
25 // QSearch - Non Re-Captures
26 QSearch = 15,
27 QSearchInit = 16,
28 QCaptures = 17,
29 QChecks = 18,
30 // Q Search ReCaptures
31 QSearchRecaptures = 19,
32 QRecaptures = 20,
33}
34
35impl Pick {
36 pub fn incr(&mut self) {
37 unsafe {
38 *self = mem::transmute(*self as u8 + 1);
39 }
40 }
41
42 pub fn to_string(self) -> &'static str {
43 match self {
44 Pick::MainSearch => "MainSearch",
45 Pick::CapturesInit => "CapturesInit",
46 Pick::GoodCaptures => "GoodCaptures",
47 Pick::KillerOne => "KillerOne",
48 Pick::KillerTwo => "KillerTwo",
49 Pick::CounterMove => "CounterMove",
50 Pick::QuietInit => "QuietInit",
51 Pick::QuietMoves => "QuietMoves",
52 Pick::BadCaptures => "BadCaptures",
53 Pick::EvasionSearch => "EvasionSearch",
54 Pick::EvasionsInit => "EvasionsInit",
55 Pick::AllEvasions => "AllEvasions",
56 Pick::ProbCutSearch => "ProbCutSearch",
57 Pick::ProbCutCapturesInit => "ProbCutCapturesInit",
58 Pick::ProbCutCaptures => "ProbCutCaptures",
59 Pick::QSearch => "QSearch",
60 Pick::QSearchInit => "QSearchInit",
61 Pick::QCaptures => "QCaptures",
62 Pick::QChecks => "QChecks",
63 Pick::QSearchRecaptures => "QSearchRecaptures",
64 Pick::QRecaptures => "QRecaptures",
65 }
66 }
67}
68
69impl fmt::Display for Pick {
70 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
71 f.pad(&self.to_string())
72 }
73}
74
75// types
76
77// Root
78// MainSearch
79// Evasions
80// ProbCut
81// Qsearch
82
83// Strategy
84
85// RootMoves -------
86// Get the next rootmoves.
87
88// MainSearch ------
89// TT Move
90// Increment.
91// Return TT move
92// Captures_init
93// Generate Captures
94// Sort<Captures>
95// Increment
96// Go to next_move();
97// Good_Captures
98// Loop through each capture, once done increment stage
99// Killer0
100// Do KillerMove1, increment
101// Killer1
102// Do KillerMove2, increment
103// CounterMove
104// Do CounterMove, increment
105// Quiet_Init
106// Generate Quiets
107// Sort<Quiets>
108// Partial Insertion sort?
109// Increment
110// Go to next_move();
111// Quiet
112//
113// Bad Captures
114//
115
116// Evasions -------
117// TT Move
118// Return TT move, Increment.
119// Evasions_init
120// All_evasions
121
122// ProbCut
123// TT Move
124// Return TT move, Increment.
125// Probcut_Captures_Init
126// Probvut Captures
127
128// Qsearch -----------
129// TT Move
130// Return TT move, Increment.
131// QCaptures_Init
132// QCaptures
133// QChecks
134// QSearch_Recaptures
135// QRecaptures