kprint massive rename

This commit is contained in:
2023-01-18 03:38:30 +06:00
parent 9d5dac93de
commit ab761aa395
8 changed files with 313 additions and 266 deletions

View File

@@ -8,76 +8,91 @@ extern "C" {
#include "kprint_colors.h"
#include "kprint_format.h"
/*
This file looks like a mess, but all cotnent here just solves the problem of putting variadic arguments to array of formats and array of objects.
*/
typedef union {
int64 i64;
uint64 u64;
float64 f64;
void* ptr;
} __kprint_value_union;
#define __kprintVU(value) (__kprint_value_union){ value }
} __kp_value_union;
#define __kpVU(value) (__kp_value_union){ value }
#define __kprint_argsToFormats8(\
#define __kp_argsToFmts8(\
a0, a1, a2, a3, a4, a5, a6, a7,...)\
((int32[]){ a0,a2,a4,a6 })
#define __kprint_argsToObjects8(\
#define __kp_argsToObjs8(\
a0, a1, a2, a3, a4, a5, a6, a7,...)\
((__kprint_value_union[]){ __kprintVU(a1),__kprintVU(a3),__kprintVU(a5),__kprintVU(a7) })
((__kp_value_union[]){ __kpVU(a1),__kpVU(a3),__kpVU(a5),__kpVU(a7) })
#define __kprint_argsToFormats16(\
#define __kp_argsToFmts16(\
a0, a1, a2, a3, a4, a5, a6, a7,\
a8, a9, a10,a11,a12,a13,a14,a15,...)\
((int32[]){ a0,a2,a4,a6,a8,a10,a12,a14 })
#define __kprint_argsToObjects16(\
#define __kp_argsToObjs16(\
a0, a1, a2, a3, a4, a5, a6, a7,\
a8, a9, a10,a11,a12,a13,a14,a15,...)\
((__kprint_value_union[]){ __kprintVU(a1),__kprintVU(a3),__kprintVU(a5),__kprintVU(a7),__kprintVU(a9),__kprintVU(a11),__kprintVU(a13),__kprintVU(a15) })
((__kp_value_union[]){ __kpVU(a1),__kpVU(a3),__kpVU(a5),__kpVU(a7),__kpVU(a9),__kpVU(a11),__kpVU(a13),__kpVU(a15) })
#define __kprint_argsToFormats32(\
#define __kp_argsToFmts32(\
a0, a1, a2, a3, a4, a5, a6, a7,\
a8, a9, a10,a11,a12,a13,a14,a15,\
a16,a17,a18,a19,a20,a21,a22,a23,\
a24,a25,a26,a27,a28,a29,a30,a31,...)\
((int32[]){ a0,a2,a4,a6,a8,a10,a12,a14,a16,a18,a20,a22,a24,a26,a28,a30 })
#define __kprint_argsToObjects32(\
#define __kp_argsToObjs32(\
a0, a1, a2, a3, a4, a5, a6, a7,\
a8, a9, a10,a11,a12,a13,a14,a15,\
a16,a17,a18,a19,a20,a21,a22,a23,\
a24,a25,a26,a27,a28,a29,a30,a31,...)\
((__kprint_value_union[]){ __kprintVU(a1),__kprintVU(a3),__kprintVU(a5),__kprintVU(a7),__kprintVU(a9),__kprintVU(a11),__kprintVU(a13),__kprintVU(a15),__kprintVU(a17),__kprintVU(a19),__kprintVU(a21),__kprintVU(a23),__kprintVU(a25),__kprintVU(a27),__kprintVU(a29),__kprintVU(a31) })
((__kp_value_union[]){ __kpVU(a1),__kpVU(a3),__kpVU(a5),__kpVU(a7),__kpVU(a9),__kpVU(a11),__kpVU(a13),__kpVU(a15),__kpVU(a17),__kpVU(a19),__kpVU(a21),__kpVU(a23),__kpVU(a25),__kpVU(a27),__kpVU(a29),__kpVU(a31) })
#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...)\
(kprint_format*)(COUNT<=8 ? __kprint_argsToFormats8(ARGS) :\
COUNT<=16 ? __kprint_argsToFormats16(ARGS) :\
__kprint_argsToFormats32(ARGS)),\
(__kprint_value_union*)(COUNT<=8 ? __kprint_argsToObjects8(ARGS) :\
COUNT<=16 ? __kprint_argsToObjects16(ARGS) :\
__kprint_argsToObjects32(ARGS))
#define __kp_argsToArrs(COUNT,ARGS...)\
(kp_fmt*)(\
COUNT<=8 ? __kp_argsToFmts8(ARGS) :\
COUNT<=16 ? __kp_argsToFmts16(ARGS) :\
__kp_argsToFmts32(ARGS)),\
(__kp_value_union*)(\
COUNT<=8 ? __kp_argsToObjs8(ARGS) :\
COUNT<=16 ? __kp_argsToObjs16(ARGS) :\
__kp_argsToObjs32(ARGS))
Maybe __ksprint(uint8 n, kprint_format* formats, __kprint_value_union* objects);
Maybe __ksprint(uint8 n, kp_fmt* formats, __kp_value_union* objects);
/// @param ARGS kp_fmt, value, kp_fmt, value...
///@returns Maybe<char*>
#define ksprint(ARGS...) WARNING_DISABLE( W_INT_CONVERSION,\
__ksprint(count_args(ARGS), __kprint_argsToArrs(count_args(ARGS),ARGS, __32zeroes))\
__ksprint(count_args(ARGS), __kp_argsToArrs(count_args(ARGS),ARGS, __32zeroes))\
)
/*-Wint-conversion warning was produced during value to __kp_value_union conversion*/
Maybe __kfprint(FILE* fd, uint8 n, kprint_format* formats, __kprint_value_union* objects);
Maybe __kfprint(FILE* fd, uint8 n, kp_fmt* formats, __kp_value_union* objects);
/// @param FD FILE*
/// @param ARGS kp_fmt, value, kp_fmt, value...
///@returns Maybe<void>
#define kfprint(FD, ARGS...) WARNING_DISABLE( W_INT_CONVERSION,\
__kfprint(FD, count_args(ARGS), __kprint_argsToArrs(count_args(ARGS),ARGS, __32zeroes))\
__kfprint(FD, count_args(ARGS), __kp_argsToArrs(count_args(ARGS),ARGS, __32zeroes))\
)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wint-conversion"
void __kprint(uint8 n, kprint_format* formats, __kprint_value_union* objects);
void __kprint(uint8 n, kp_fmt* formats, __kp_value_union* objects);
///can use non-catchable throw !!!
///@param ARGS kp_fmt, value, kp_fmt, value...
///@returns void
#define kprint(ARGS...) WARNING_DISABLE( W_INT_CONVERSION,\
__kprint(count_args(ARGS), __kprint_argsToArrs(count_args(ARGS),ARGS, __32zeroes))\
__kprint(count_args(ARGS), __kp_argsToArrs(count_args(ARGS),ARGS, __32zeroes))\
)
#pragma GCC diagnostic pop
// can take (bgColor | fgColor)
void kprint_setColor(kprint_format f);
///@param f bgColor | fgColor
void kprint_setColor(kp_fmt f);
#if __cplusplus
}