From fdb2804883deb31e3aeb15bbe588dcc9b7b76bd0 Mon Sep 17 00:00:00 2001 From: Mica White Date: Mon, 8 Dec 2025 19:56:48 -0500 Subject: Stuff --- ampere.h | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 ampere.h (limited to 'ampere.h') diff --git a/ampere.h b/ampere.h new file mode 100755 index 0000000..eed0159 --- /dev/null +++ b/ampere.h @@ -0,0 +1,66 @@ +#ifndef AMPERE +#define AMPERE + +#include +#include + +typedef void *engine_t; +typedef void *board_t; +typedef void *move_t; + +enum color { + LIGHT = 0, + DARK = 1 +}; + +enum direction { + FORWARD_LEFT = 0, + FORWARD_RIGHT = 1, + BACKWARD_LEFT = 2, + BACKWARD_RIGHT = 3, +}; + +struct frontend { + void (*debug)(char *message); + void (*report_bestmove)(move_t move); +}; + +extern engine_t ampere_new_engine(long long int hash_size, struct frontend *frontend); +extern engine_t ampere_set_debug(engine_t engine, bool debug); +extern bool ampere_islegal(engine_t engine, move_t move); +extern void ampere_reset_position(engine_t engine); +extern void ampere_set_position(engine_t engine, board_t board); +extern void ampere_play_move(engine_t engine, move_t move); +extern move_t ampere_evaluate(engine_t engine, bool *cancel, int nodes, int depth, int time); +extern void ampere_starteval_limited(engine_t engine, bool ponder, int nodes, int depth, int time); +extern void ampere_starteval_unlimited(engine_t engine, bool ponder); +extern void ampere_stopeval(engine_t engine); +extern void ampere_destroy_engine(engine_t engine); + +extern board_t ampere_board_starting_position(); +extern board_t ampere_board_new(uint32_t pieces, uint32_t color, uint32_t kings, enum color turn); +extern board_t ampere_board_clone(board_t board); +extern bool ampere_board_equal(board_t a, board_t b); +extern uint64_t ampere_board_hash(board_t board); +extern uint32_t *ampere_board_pieces(board_t board); +extern uint32_t *ampere_board_colors(board_t board); +extern uint32_t *ampere_board_kings(board_t board); +extern enum color *ampere_board_turn(board_t board); +extern bool ampere_board_has_piece_at(board_t board, int square); +extern enum color ampere_board_color_at(board_t board, int square); +extern bool ampere_board_king_at(board_t board, int square); +extern void ampere_board_move_piece(board_t board, int start, int dest); +extern void ampere_board_clear_piece(board_t board, int square); +extern void ampere_board_destroy(board_t board); + +extern move_t ampere_move_new(int start, enum direction direction, bool jump); +extern move_t ampere_move_clone(move_t move); +extern bool ampere_move_equal(move_t a, move_t b); +extern int ampere_move_start(move_t move); +extern enum direction ampere_move_direction(move_t move); +extern bool ampere_move_is_jump(move_t move); +extern int ampere_move_jump_position(move_t move); +extern int ampere_move_end(move_t move); +extern void ampere_move_destroy(move_t move); + +#endif -- cgit v1.2.3