Files
chess/include/chess/print.h
2024-03-24 16:53:44 +01:00

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);