1 
2 // list.h
3 
4 #ifndef LIST_H
5 #define LIST_H
6 
7 // includes
8 
9 #include "board.h"
10 #include "move.h"
11 #include "util.h"
12 
13 // defines
14 
15 #define ListSize 256
16 
17 // types
18 
19 typedef struct {
20    sint16 size;
21    move_t move[ListSize];
22    sint16 value[ListSize];
23 } list_t;
24 
25 // functions
26 
27 extern bool list_is_ok    (const list_t * list);
28 
29 extern void list_clear    (list_t * list);
30 extern void list_add      (list_t * list, int move);
31 extern void list_add_ex   (list_t * list, int move, int value);
32 
33 extern void list_remove   (list_t * list, int index);
34 
35 extern bool list_is_empty (const list_t * list);
36 extern int  list_size     (const list_t * list);
37 
38 extern int  list_move     (const list_t * list, int index);
39 extern int  list_value    (const list_t * list, int index);
40 
41 extern void list_copy     (list_t * dst, const list_t * src);
42 
43 extern void list_note     (list_t * list);
44 extern void list_sort     (list_t * list);
45 
46 extern bool list_contain  (const list_t * list, int move);
47 extern bool list_equal    (list_t * list_1, list_t * list_2);
48 
49 extern void list_disp     (const list_t * list, const board_t * board);
50 
51 #endif // !defined LIST_H
52 
53 // end of list.h
54 
55