From 3e2fca227b749858fa8bc65e3bda3efcc2aa1734 Mon Sep 17 00:00:00 2001 From: Quinten Kock Date: Tue, 16 Jun 2020 00:15:32 +0200 Subject: [PATCH] implement more Board functions outside Class definition --- Board.h | 73 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 34 deletions(-) diff --git a/Board.h b/Board.h index 9231ba3..7d05e5d 100644 --- a/Board.h +++ b/Board.h @@ -54,41 +54,11 @@ class Board { static const byte PTR_UNMOVE_LAST = 0x7E; byte PTR_UNMOVE = PTR_UNMOVE_START; - void next_unmove() { - PTR_UNMOVE++; - if(PTR_UNMOVE > PTR_UNMOVE_LAST) { - panic(F("Unmove stack overflow")); - } - if(!(PTR_UNMOVE & 0x8)) { - PTR_UNMOVE += 0x8; - } - } - void prev_unmove() { - PTR_UNMOVE--; - if(PTR_UNMOVE < PTR_UNMOVE_START) { - panic(F("Unmaking from empty stack")); - } - if(!(PTR_UNMOVE & 0x8)) { - PTR_UNMOVE -= 0x8; - } - } + void next_unmove(); + void prev_unmove(); - void store_unmove(Unmove u) { - byte *ub = (byte*) &u; - for(size_t i = 0; i < sizeof(u); i++) { - next_unmove(); - field[PTR_UNMOVE] = ub[i]; - } - } - Unmove read_unmove() { - Unmove u; - byte* ptr = (byte*) &u; - for(int i = sizeof(u) - 1; i >= 0; i--) { - ptr[i] = field[PTR_UNMOVE]; - prev_unmove(); - } - return u; - } + void store_unmove(Unmove u); + Unmove read_unmove(); }; @@ -114,4 +84,39 @@ void Board::make(Move m) { Serial.println(u2.sq_to, HEX); } +void Board::next_unmove() { + PTR_UNMOVE++; + if(PTR_UNMOVE > PTR_UNMOVE_LAST) { + panic(F("Unmove stack overflow")); + } + if(!(PTR_UNMOVE & 0x8)) { + PTR_UNMOVE += 0x8; + } +} +void Board::prev_unmove() { + PTR_UNMOVE--; + if(PTR_UNMOVE < PTR_UNMOVE_START) { + panic(F("Unmaking from empty stack")); + } + if(!(PTR_UNMOVE & 0x8)) { + PTR_UNMOVE -= 0x8; + } +} + +void Board::store_unmove(Unmove u) { + byte *ub = (byte*) &u; + for(size_t i = 0; i < sizeof(u); i++) { + next_unmove(); + field[PTR_UNMOVE] = ub[i]; + } +} +Unmove Board::read_unmove() { + Unmove u; + byte* ptr = (byte*) &u; + for(int i = sizeof(u) - 1; i >= 0; i--) { + ptr[i] = field[PTR_UNMOVE]; + prev_unmove(); + } + return u; +} #endif