32 lines
900 B
C
32 lines
900 B
C
#include <stdio.h>
|
|
#include <stdint.h>
|
|
#include <chess/move.h>
|
|
|
|
#define fprintArray(file, printer, arr) \
|
|
do { \
|
|
fprintf(file, "{"); \
|
|
for(size_t i = 0; i < LENGTH(arr); ++i) { \
|
|
printer(file, arr[i]); \
|
|
if (i < LENGTH(arr) - 1) { \
|
|
fprintf(file, ", "); \
|
|
} \
|
|
} \
|
|
fprintf(file, " }"); \
|
|
} while(0)
|
|
|
|
#define fdefineArray(file, declaration, printer, arr) \
|
|
do { \
|
|
fprintf(file, "%s[%zu] = ", declaration, LENGTH(arr)); \
|
|
fprintArray(file, printer, arr); \
|
|
fprintf(file, ";\n"); \
|
|
} while(0)
|
|
|
|
#define defineArray(declaration, printer, arr) fdefineArray(stdout, declaration, printer, arr)
|
|
|
|
void printerll(FILE *file, long long num);
|
|
void printerull(FILE *file, unsigned long long num);
|
|
void printPieceMask(uint_least64_t mask);
|
|
void fieldToString(uint_least8_t field, char *output);
|
|
void printMove(const struct move_t move);
|
|
void printMoveln(const struct move_t move);
|