simplify pos_next_legal()
This commit is contained in:
@@ -113,13 +113,12 @@ bool pseudo_is_legal(const pos_t *pos, const move_t move)
|
|||||||
*/
|
*/
|
||||||
move_t pos_next_legal(const pos_t *pos, int *start)
|
move_t pos_next_legal(const pos_t *pos, int *start)
|
||||||
{
|
{
|
||||||
int nmoves = pos->moves.nmoves;
|
const int nmoves = pos->moves.nmoves;
|
||||||
const move_t *moves = pos->moves.move;
|
const move_t *moves = pos->moves.move;
|
||||||
|
move_t move;
|
||||||
|
|
||||||
while (*start < nmoves) {
|
while (*start < nmoves) {
|
||||||
move_t move = moves[*start];
|
if (pseudo_is_legal(pos, (move = moves[(*start)++] )))
|
||||||
++*start;
|
|
||||||
if (pseudo_is_legal(pos, move))
|
|
||||||
return move;
|
return move;
|
||||||
}
|
}
|
||||||
return MOVE_NONE;
|
return MOVE_NONE;
|
||||||
@@ -131,14 +130,15 @@ move_t pos_next_legal(const pos_t *pos, int *start)
|
|||||||
* @dest: destination &movelist_t
|
* @dest: destination &movelist_t
|
||||||
*
|
*
|
||||||
* The pseudo-legal moves must be already calculated before calling this function.
|
* The pseudo-legal moves must be already calculated before calling this function.
|
||||||
|
* No check is done on @dest limits.
|
||||||
*
|
*
|
||||||
* @Return: @dest
|
* @Return: @dest
|
||||||
*/
|
*/
|
||||||
movelist_t *pos_all_legal(const pos_t *pos, movelist_t *dest)
|
movelist_t *pos_all_legal(const pos_t *pos, movelist_t *dest)
|
||||||
{
|
{
|
||||||
dest->nmoves = 0;
|
int tmp = dest->nmoves = 0;
|
||||||
move_t move;
|
move_t move;
|
||||||
int tmp = 0;
|
//int tmp = 0;
|
||||||
|
|
||||||
while ((move = pos_next_legal(pos, &tmp)) != MOVE_NONE)
|
while ((move = pos_next_legal(pos, &tmp)) != MOVE_NONE)
|
||||||
dest->move[dest->nmoves++] = move;
|
dest->move[dest->nmoves++] = move;
|
||||||
|
Reference in New Issue
Block a user