Merge branch 'new_unitype' of https://github.com/Timerix22/kerep into new_unitype

This commit is contained in:
timerix 2022-09-06 15:55:09 +06:00
commit d449901ab6
2 changed files with 49 additions and 18 deletions

7
chmod_scripts.sh Normal file
View File

@ -0,0 +1,7 @@
#!/bin/bash
SCRIPTS="$(find build_scripts -name '*.sh')"
for F in $SCRIPTS
do
echo $F
chmod +x $F
done

View File

@ -8,43 +8,67 @@ extern "C" {
#include "kprint_colors.h" #include "kprint_colors.h"
#include "kprint_format.h" #include "kprint_format.h"
#define __count_va_args(\ #define __count_args(\
a0, a1, a2, a3, a4, a5, a6, a7,\ a0, a1, a2, a3, a4, a5, a6, a7,\
a8, a9, a10,a11,a12,a13,a14,a15,\ a8, a9, a10,a11,a12,a13,a14,a15,\
a16,a17,a18,a19,a20,a21,a22,a23,\ a16,a17,a18,a19,a20,a21,a22,a23,\
a24,a25,a26,a27,a28,a29,a30,a31,\ a24,a25,a26,a27,a28,a29,a30,a31,\
a32) a32 a32) a32
#define count_va_args(ARGS...) __count_va_args(\ #define count_args(ARGS...) __count_args(\
ARGS,\ ARGS,\
32,31,30,29,28,27,26,25,\ 32,31,30,29,28,27,26,25,\
24,23,22,21,20,19,18,17,\ 24,23,22,21,20,19,18,17,\
16,15,14,13,12,11,10,9,\ 16,15,14,13,12,11,10,9,\
8, 7, 6, 5, 4, 3, 2, 1, 0) 8, 7, 6, 5, 4, 3, 2, 1, 0)
#define __get_va_args_sizes(\ #define __kprint_argsToFormats8(\
a0, a1, a2, a3, a4, a5, a6, a7)\
(kprint_format[]{ a0,a2,a4,a6 })
#define __kprint_argsToObjects8(\
a0, a1, a2, a3, a4, a5, a6, a7)\
(void*[]{ a1,a3,a5,a7 })
#define __kprint_argsToFormats16(\
a0, a1, a2, a3, a4, a5, a6, a7,\
a8, a9, a10,a11,a12,a13,a14,a15)\
(kprint_format[]{ a0,a2,a4,a6,a8,a10,a12,a14 })
#define __kprint_argsToObjects16(\
a0, a1, a2, a3, a4, a5, a6, a7,\
a8, a9, a10,a11,a12,a13,a14,a15)\
(void*[]{ a1,a3,a5,a7,a9,a11,a13,a15 })
#define __kprint_argsToFormats32(\
a0, a1, a2, a3, a4, a5, a6, a7,\ a0, a1, a2, a3, a4, a5, a6, a7,\
a8, a9, a10,a11,a12,a13,a14,a15,\ a8, a9, a10,a11,a12,a13,a14,a15,\
a16,a17,a18,a19,a20,a21,a22,a23,\ a16,a17,a18,a19,a20,a21,a22,a23,\
a24,a25,a26,a27,a28,a29,a30,a31)\ a24,a25,a26,a27,a28,a29,a30,a31)\
(uint16[]{\ (kprint_format[]{ a0,a2,a4,a6,a8,a10,a12,a14,a16,a18,a20,a22,a24,a26,a28,a30 }
sizeof(a0), sizeof(a1), sizeof(a2), sizeof(a3), sizeof(a4), sizeof(a5), sizeof(a6), sizeof(a7),\ #define __kprint_argsToObjects32(\
sizeof(a8), sizeof(a9), sizeof(a10),sizeof(a11),sizeof(a12),sizeof(a13),sizeof(a14),sizeof(a15),\ a0, a1, a2, a3, a4, a5, a6, a7,\
sizeof(a16),sizeof(a17),sizeof(a18),sizeof(a19),sizeof(a20),sizeof(a21),sizeof(a22),sizeof(a23),\ a8, a9, a10,a11,a12,a13,a14,a15,\
sizeof(a24),sizeof(a25),sizeof(a26),sizeof(a27),sizeof(a28),sizeof(a29),sizeof(a30),sizeof(a31)\ a16,a17,a18,a19,a20,a21,a22,a23,\
}) a24,a25,a26,a27,a28,a29,a30,a31)\
#define get_va_args_sizes(ARGS...) __get_va_args_sizes(ARGS,\ (void*[]{ a1,a3,a5,a7,a9,a11,a13,a15,a17,a19,a21,a23,a25,a27,a29,a31 })
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) #define __32zeroes 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
#define __kprint_argsToArrs(COUNT,ARGS...)(\
(COUNT<=8 __kprint_argsToFormats8(ARGS,__32zeroes) :\
COUNT<=16 __kprint_argsToFormats16(ARGS,__32zeroes) :\
__kprint_argsToFormats32(ARGS,__32zeroes)),\
(COUNT<=8 __kprint_argsToObjects8(ARGS,__32zeroes) :\
COUNT<=16 __kprint_argsToObjects16(ARGS) :\
__kprint_argsToObjects32(ARGS,__32zeroes))
Maybe __ksprint(uint8 n, uint16 sizes[32], ...); Maybe __ksprint(uint8 n, kprint_format* formats, void** objects);
#define ksprint(ARGS...) __ksprint(count_va_args(ARGS), get_va_args_sizes(ARGS), ARGS) #define ksprint(ARGS...) __ksprint(count_args(ARGS), __kprint_argsToArrs(count_args(ARGS),ARGS))
Maybe __kfprint(FILE* fd, uint8 n, uint16 sizes[32], ...); Maybe __kfprint(FILE* fd, uint8 n, kprint_format* formats, void** objects);
#define kfprint(FD, ARGS...) __kfprint(FD, count_va_args(ARGS), get_va_args_sizes(ARGS), ARGS) #define kfprint(FD, ARGS...) __kfprint(FD, count_args(ARGS), __kprint_argsToArrs(count_args(ARGS),ARGS))
void __kprint(uint8 n, uint16 sizes[32], ...); void __kprint(uint8 n, kprint_format* formats, void** objects);
#define kprint(ARGS...) __kprint(count_va_args(ARGS), get_va_args_sizes(ARGS), ARGS) #define kprint(ARGS...) __kprint(count_args(ARGS), __kprint_argsToArrs(count_args(ARGS),ARGS))
#if __cplusplus #if __cplusplus
} }