diff --git a/src/Chess/moves.nim b/src/Chess/moves.nim index bca16d4..3c7c3ed 100644 --- a/src/Chess/moves.nim +++ b/src/Chess/moves.nim @@ -24,6 +24,39 @@ type targetSquare*: Square flags*: uint16 + MoveList* = object + ## A list of moves + data: array[218, Move] + len: int8 + + +iterator items*(self: MoveList): Move = + var i = 0 + while self.len > i: + yield self.data[i] + inc(i) + + +iterator pairs*(self: MoveList): tuple[i: int, move: Move] = + var i = 0 + for item in self: + yield (i, item) + + +func add*(self: var MoveList, move: Move) {.inline.} = + self.data[self.len] = move + inc(self.len) + + +func contains*(self: MoveList, move: Move): bool {.inline.} = + for item in self: + if move == item: + return true + return false + + +func len*(self: MoveList): int {.inline.} = self.len + func createMove*(startSquare, targetSquare: string, flags: seq[MoveFlag] = @[]): Move = result = Move(startSquare: startSquare.algebraicToSquare(),