9#ifndef RSMC_DIRECTIONS_H
10#define RSMC_DIRECTIONS_H
34static inline uint8_t rsmc_direction_to_number(
const RsmcCoords direction)
36 return 3 * (direction.
x + 1) + (direction.
y + 1);
39static inline uint64_t rsmc_shift_in_direction(
const uint64_t mask,
42 const uint64_t NotX0 = 0xFEFEFEFEFEFEFEFE;
43 const uint64_t NotX7 = 0x7F7F7F7F7F7F7F7F;
51 return (mask << 1) & NotX0;
53 return (mask >> 1) & NotX7;
55 return (mask << 9) & NotX0;
57 return (mask >> 7) & NotX0;
59 return (mask << 7) & NotX7;
61 return (mask >> 9) & NotX7;
Thin abstract layer for rsmc.
@ RsmcDownLeftNum
Definition directions.h:26
@ RsmcDownNum
Definition directions.h:20
@ RsmcUpNum
Definition directions.h:19
@ RsmcDownRightNum
Definition directions.h:24
@ RsmcUpRightNum
Definition directions.h:23
@ RsmcUpLeftNum
Definition directions.h:25
@ RsmcDirectionsCount
Definition directions.h:27
@ RsmcRightNum
Definition directions.h:22
@ RsmcLeftNum
Definition directions.h:21
uint8_t RsmcDirectionNum
Definition directions.h:17
Stores coords for the board. Coords might be invalid and negative.
Definition abstractions.h:55
int8_t x
Definition abstractions.h:56
int8_t y
Definition abstractions.h:57