Compare commits
10 Commits
Engine/bit
...
Engine/mov
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f39c113ef9 | ||
|
|
f417a7e47c | ||
|
|
547b0e51cb | ||
|
|
5340744abe | ||
|
|
f64ebfa47f | ||
|
|
4e7ac2a195 | ||
|
|
dc176c103b | ||
|
|
85a7fa37ef | ||
|
|
a60658763d | ||
|
|
b76a009e4e |
@@ -4,5 +4,6 @@ mod legality;
|
||||
mod checkinfo;
|
||||
mod attacks;
|
||||
mod bitmove;
|
||||
mod movebuffer;
|
||||
|
||||
pub mod board;
|
||||
44
engine/src/bitboard/movebuffer.rs
Normal file
44
engine/src/bitboard/movebuffer.rs
Normal file
@@ -0,0 +1,44 @@
|
||||
use super::bitmove::BitMove;
|
||||
|
||||
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
|
||||
};
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn add(&mut self, bitmove: BitMove) {
|
||||
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;
|
||||
}
|
||||
#[inline(always)]
|
||||
pub fn count(&self) -> usize{
|
||||
return self.count;
|
||||
}
|
||||
#[inline(always)]
|
||||
pub fn get(&self, idx: usize) -> &BitMove {
|
||||
return &self.buffer[idx];
|
||||
}
|
||||
#[inline(always)]
|
||||
pub fn contents(&self) -> &[BitMove] {
|
||||
return &self.buffer[0..self.count];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user