From b76a009e4e69652518fe54b41e1ec9b79e5796a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Wed, 19 Nov 2025 14:57:36 +0100 Subject: [PATCH 01/10] added file and module structure for movebuffer.rs --- engine/src/bitboard.rs | 1 + engine/src/bitboard/movebuffer.rs | 0 2 files changed, 1 insertion(+) create mode 100644 engine/src/bitboard/movebuffer.rs diff --git a/engine/src/bitboard.rs b/engine/src/bitboard.rs index 405141f..1486484 100644 --- a/engine/src/bitboard.rs +++ b/engine/src/bitboard.rs @@ -4,5 +4,6 @@ mod legality; mod checkinfo; mod attacks; mod bitmove; +mod movebuffer; pub mod board; \ No newline at end of file diff --git a/engine/src/bitboard/movebuffer.rs b/engine/src/bitboard/movebuffer.rs new file mode 100644 index 0000000..e69de29 From a60658763dc36f4fbedb3fd1a8e4375da0768f05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Wed, 19 Nov 2025 15:06:37 +0100 Subject: [PATCH 02/10] defined shape of struct MoveBuffer --- engine/src/bitboard/movebuffer.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/engine/src/bitboard/movebuffer.rs b/engine/src/bitboard/movebuffer.rs index e69de29..4fb78ca 100644 --- a/engine/src/bitboard/movebuffer.rs +++ b/engine/src/bitboard/movebuffer.rs @@ -0,0 +1,7 @@ +use super::bitmove::BitMove; + +pub struct MoveBuffer { + + buffer: [BitMove; 256], + count: usize +} \ No newline at end of file From 85a7fa37ef47b141e0d13b56e9c096a8332e4e03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Wed, 19 Nov 2025 15:22:15 +0100 Subject: [PATCH 03/10] added parameterless constructor for struct MoveBuffer --- engine/src/bitboard/movebuffer.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/engine/src/bitboard/movebuffer.rs b/engine/src/bitboard/movebuffer.rs index 4fb78ca..00b5dda 100644 --- a/engine/src/bitboard/movebuffer.rs +++ b/engine/src/bitboard/movebuffer.rs @@ -4,4 +4,14 @@ pub struct MoveBuffer { buffer: [BitMove; 256], count: usize +} + +impl MoveBuffer { + + pub fn new() -> Self { + return Self { + buffer: [BitMove::quiet(0, 0, None); 256], + count: 0 + }; + } } \ No newline at end of file From dc176c103b5c6c21a73425a9ed0b43a848ac0405 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Wed, 19 Nov 2025 15:40:11 +0100 Subject: [PATCH 04/10] implemented method add for struct MoveBuffer --- engine/src/bitboard/movebuffer.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/engine/src/bitboard/movebuffer.rs b/engine/src/bitboard/movebuffer.rs index 00b5dda..b21a45b 100644 --- a/engine/src/bitboard/movebuffer.rs +++ b/engine/src/bitboard/movebuffer.rs @@ -14,4 +14,9 @@ impl MoveBuffer { count: 0 }; } + #[inline] + pub fn add(&mut self, bitmove: BitMove) { + self.buffer[self.count] = bitmove; + self.count += 1; + } } \ No newline at end of file From 4e7ac2a19527db8370dfc44b8de45090081a46e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Wed, 19 Nov 2025 15:50:03 +0100 Subject: [PATCH 05/10] added getter for field count in struct MoveBuffer --- engine/src/bitboard/movebuffer.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/engine/src/bitboard/movebuffer.rs b/engine/src/bitboard/movebuffer.rs index b21a45b..7b2c2cb 100644 --- a/engine/src/bitboard/movebuffer.rs +++ b/engine/src/bitboard/movebuffer.rs @@ -14,9 +14,14 @@ impl MoveBuffer { count: 0 }; } + #[inline] pub fn add(&mut self, bitmove: BitMove) { self.buffer[self.count] = bitmove; self.count += 1; } + #[inline(always)] + pub fn count(&self) -> usize{ + return self.count; + } } \ No newline at end of file From f64ebfa47f5f42a602e991536fd161a87cc3c406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Wed, 19 Nov 2025 15:53:39 +0100 Subject: [PATCH 06/10] implemented method get for struct MoveBuffer --- engine/src/bitboard/movebuffer.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/engine/src/bitboard/movebuffer.rs b/engine/src/bitboard/movebuffer.rs index 7b2c2cb..b0da949 100644 --- a/engine/src/bitboard/movebuffer.rs +++ b/engine/src/bitboard/movebuffer.rs @@ -24,4 +24,8 @@ impl MoveBuffer { pub fn count(&self) -> usize{ return self.count; } + #[inline(always)] + pub fn get(&self, idx: usize) -> &BitMove { + return &self.buffer[idx]; + } } \ No newline at end of file From 5340744abec33c5575eee7d389f04c7ac4304604 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Wed, 19 Nov 2025 15:56:57 +0100 Subject: [PATCH 07/10] implemented method clear for struct MoveBuffer --- engine/src/bitboard/movebuffer.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/engine/src/bitboard/movebuffer.rs b/engine/src/bitboard/movebuffer.rs index b0da949..20aac6b 100644 --- a/engine/src/bitboard/movebuffer.rs +++ b/engine/src/bitboard/movebuffer.rs @@ -20,6 +20,10 @@ impl MoveBuffer { self.buffer[self.count] = bitmove; self.count += 1; } + #[inline] + pub fn clear(&mut self) { + self.count = 0; + } #[inline(always)] pub fn count(&self) -> usize{ return self.count; From 547b0e51cbf3827bbe59670e5f772083e8d326d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Wed, 19 Nov 2025 16:00:09 +0100 Subject: [PATCH 08/10] corrected annotation for method clear in struct MoveBuffer --- engine/src/bitboard/movebuffer.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/src/bitboard/movebuffer.rs b/engine/src/bitboard/movebuffer.rs index 20aac6b..2f92f9e 100644 --- a/engine/src/bitboard/movebuffer.rs +++ b/engine/src/bitboard/movebuffer.rs @@ -20,7 +20,7 @@ impl MoveBuffer { self.buffer[self.count] = bitmove; self.count += 1; } - #[inline] + #[inline(always)] pub fn clear(&mut self) { self.count = 0; } From f417a7e47c72849df9f10151dde7d62fd13d8947 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Wed, 19 Nov 2025 16:09:31 +0100 Subject: [PATCH 09/10] implemented getter for field buffer i struct MoveBuffer --- engine/src/bitboard/movebuffer.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/engine/src/bitboard/movebuffer.rs b/engine/src/bitboard/movebuffer.rs index 2f92f9e..8c463cf 100644 --- a/engine/src/bitboard/movebuffer.rs +++ b/engine/src/bitboard/movebuffer.rs @@ -32,4 +32,8 @@ impl MoveBuffer { pub fn get(&self, idx: usize) -> &BitMove { return &self.buffer[idx]; } + #[inline(always)] + pub fn contents(&self) -> &[BitMove] { + return &self.buffer[0..self.count]; + } } \ No newline at end of file From f39c113ef9e3768220d2e30453b42ee68cf8a429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Varga=20D=C3=A1vid=20Lajos?= Date: Wed, 19 Nov 2025 16:13:34 +0100 Subject: [PATCH 10/10] implemented method append for struct MoveBuffer --- engine/src/bitboard/movebuffer.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/engine/src/bitboard/movebuffer.rs b/engine/src/bitboard/movebuffer.rs index 8c463cf..61a7844 100644 --- a/engine/src/bitboard/movebuffer.rs +++ b/engine/src/bitboard/movebuffer.rs @@ -20,6 +20,11 @@ impl MoveBuffer { self.buffer[self.count] = bitmove; self.count += 1; } + #[inline] + pub fn append(&mut self, other: &MoveBuffer) { + self.buffer[self.count..self.count + other.count()].copy_from_slice(other.contents()); + self.count += other.count(); + } #[inline(always)] pub fn clear(&mut self) { self.count = 0;