home /
fornax-v3-0 /
src /
move.h
move.h
//
// move.h
// fornax3
//
// Created by Anders on 10/01/2021.
//
#ifndef move_h
#define move_h
#include <future>
typedef uint16_t move;
typedef uint32_t evalmove;
#define MOVE_GET_ORIGIN(move) (move & 0x3F)
#define MOVE_GET_DEST(move) ( move >> 6 & 0x3F)
#define MOVE_CREATE(origin, dest) ((move) (origin | (dest << 6)))
#define MOVE_GET_PROMOTION(move) ((piecetype) (move >> 12 & 0x7))
#define MOVE_ADD_PROMOTION(mv, promotion) ((move) (mv | (promotion << 12)))
#define MOVE_VALUE(evalmove) ((eval) (evalmove >> 16))
#define MOVE_WCQ 132
#define MOVE_WCK 388
#define MOVE_BCQ 3772
#define MOVE_BCK 4028
#define MOVE_NONE 0
static inline std::future<move> move_now(move m) {
std::promise<move> p;
p.set_value(m);
return p.get_future();
}
static inline std::future<move> move_none() {
return move_now(MOVE_NONE);
}
#endif /* move_h */