summaryrefslogtreecommitdiff
path: root/src/ipc.c
blob: 5caf71e57b519c33d8b505e9f0730c791be3efa5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#ifndef IPC_C
#define IPC_C

#include "ipc.h"

comm_moves comm_moves_init() {
  return (comm_moves) {
    malloc(sizeof(struct uci_move) * 50),
    0,
    50
  };
}

void add_comm_move(comm_moves *moves, struct uci_move move) {
  if (moves->count + 1 > moves->capacity) {
    moves->capacity += 50;
    moves->moves = realloc(
      moves->moves,
      moves->capacity * sizeof(struct uci_move)
    );
  }
  moves->moves[moves->count++] = move;
}


bool should_continue(struct engine_message *message, struct go_args* go) {
  int depth;
  int nodes;
  int mate;
  if (go->depth && (go->depth >= message->depth)) {
    return false;
  }
  if (go->nodes && (go->nodes >= message->nodes)) {
    message->node_limit = true;
    return false;
  }
  if (go->mate && message->mate && (go->mate <= message->mate)) {
    return false;
  }
  return true;
}

#include "fen.c"
#include "bitboard.c"

#endif // IPC_C