From 2ad2b80e8a87957622f7c36c6756de299712321c Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Sun, 19 Feb 2012 02:31:11 +0100 Subject: [PATCH] GTP play: Add support for a trailing engine-specific argument --- engine.h | 2 +- gtp.c | 4 +++- joseki/joseki.c | 2 +- patternscan/patternscan.c | 2 +- uct/uct.c | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/engine.h b/engine.h index f665ac9..8094132 100644 --- a/engine.h +++ b/engine.h @@ -8,7 +8,7 @@ struct move_queue; typedef enum parse_code (*engine_notify)(struct engine *e, struct board *b, int id, char *cmd, char *args, char **reply); -typedef char *(*engine_notify_play)(struct engine *e, struct board *b, struct move *m); +typedef char *(*engine_notify_play)(struct engine *e, struct board *b, struct move *m, char *enginearg); typedef char *(*engine_undo)(struct engine *e, struct board *b); typedef char *(*engine_result)(struct engine *e, struct board *b); typedef char *(*engine_chat)(struct engine *e, struct board *b, char *cmd); diff --git a/gtp.c b/gtp.c index 564f3bc..a8e2d66 100644 --- a/gtp.c +++ b/gtp.c @@ -270,6 +270,8 @@ gtp_parse(struct board *board, struct engine *engine, struct time_info *ti, char next_tok(arg); coord_t *c = str2coord(arg, board_size(board)); m.coord = *c; coord_done(c); + next_tok(arg); + char *enginearg = arg; char *reply = NULL; if (DEBUGL(5)) @@ -279,7 +281,7 @@ gtp_parse(struct board *board, struct engine *engine, struct time_info *ti, char time_start_timer(&ti[stone_other(m.color)]); if (engine->notify_play) - reply = engine->notify_play(engine, board, &m); + reply = engine->notify_play(engine, board, &m, enginearg); if (board_play(board, &m) < 0) { if (DEBUGL(0)) { fprintf(stderr, "! ILLEGAL MOVE %d,%d,%d\n", m.color, coord_x(m.coord, board), coord_y(m.coord, board)); diff --git a/joseki/joseki.c b/joseki/joseki.c index bf05b2e..d5bf25b 100644 --- a/joseki/joseki.c +++ b/joseki/joseki.c @@ -26,7 +26,7 @@ struct joseki_engine { static char * -joseki_play(struct engine *e, struct board *b, struct move *m) +joseki_play(struct engine *e, struct board *b, struct move *m, char *enginearg) { struct joseki_engine *j = e->data; diff --git a/patternscan/patternscan.c b/patternscan/patternscan.c index db837b5..441617d 100644 --- a/patternscan/patternscan.c +++ b/patternscan/patternscan.c @@ -118,7 +118,7 @@ process_pattern(struct patternscan *ps, struct board *b, struct move *m, char ** } static char * -patternscan_play(struct engine *e, struct board *b, struct move *m) +patternscan_play(struct engine *e, struct board *b, struct move *m, char *enginearg) { struct patternscan *ps = e->data; diff --git a/uct/uct.c b/uct/uct.c index 1bbe15d..5bd7aa5 100644 --- a/uct/uct.c +++ b/uct/uct.c @@ -134,7 +134,7 @@ uct_printhook_ownermap(struct board *board, coord_t c, char *s, char *end) } static char * -uct_notify_play(struct engine *e, struct board *b, struct move *m) +uct_notify_play(struct engine *e, struct board *b, struct move *m, char *enginearg) { struct uct *u = e->data; if (!u->t) { -- 2.11.4.GIT