use std::mem;
use std::fmt;
#[repr(u8)]
#[derive(Copy, Clone)]
pub enum Pick {
MainSearch = 0,
CapturesInit = 1,
GoodCaptures = 2,
KillerOne = 3,
KillerTwo = 4,
CounterMove = 5,
QuietInit = 6,
QuietMoves = 7,
BadCaptures = 8,
EvasionSearch = 9,
EvasionsInit = 10,
AllEvasions = 11,
ProbCutSearch = 12,
ProbCutCapturesInit = 13,
ProbCutCaptures = 14,
QSearch = 15,
QSearchInit = 16,
QCaptures = 17,
QChecks = 18,
QSearchRecaptures = 19,
QRecaptures = 20,
}
impl Pick {
pub fn incr(&mut self) {
unsafe {*self = mem::transmute(*self as u8 + 1); }
}
pub fn to_string(self) -> &'static str {
match self {
Pick::MainSearch => "MainSearch",
Pick::CapturesInit => "CapturesInit",
Pick::GoodCaptures => "GoodCaptures",
Pick::KillerOne => "KillerOne",
Pick::KillerTwo => "KillerTwo",
Pick::CounterMove => "CounterMove",
Pick::QuietInit => "QuietInit",
Pick::QuietMoves => "QuietMoves",
Pick::BadCaptures => "BadCaptures",
Pick::EvasionSearch => "EvasionSearch",
Pick::EvasionsInit => "EvasionsInit",
Pick::AllEvasions => "AllEvasions",
Pick::ProbCutSearch => "ProbCutSearch",
Pick::ProbCutCapturesInit => "ProbCutCapturesInit",
Pick::ProbCutCaptures => "ProbCutCaptures",
Pick::QSearch => "QSearch",
Pick::QSearchInit => "QSearchInit",
Pick::QCaptures => "QCaptures",
Pick::QChecks => "QChecks",
Pick::QSearchRecaptures => "QSearchRecaptures",
Pick::QRecaptures => "QRecaptures",
}
}
}
impl fmt::Display for Pick {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.pad(&self.to_string())
}
}