Main: include/kernaux/printf_fmt.h: Don't pass unnecessary format param

This commit is contained in:
Alex Kotov 2022-05-27 02:50:01 +03:00
parent 67bd18d582
commit 58bc12c539
Signed by: kotovalexarian
GPG Key ID: 553C0EBBEB5D5F08
5 changed files with 19 additions and 19 deletions

View File

@ -2,6 +2,7 @@
* include/kernaux/printf_fmt.h: Auxiliary API moved to a separate module
* include/kernaux/printf_fmt.h: Add function to parse type
* include/kernaux/printf_fmt.h: Don't pass unnecessary format param
2022-05-24 Alex Kotov <kotovalexarian@gmail.com>

View File

@ -10,10 +10,10 @@ int main()
struct KernAux_PrintfFmt_Spec spec = KernAux_PrintfFmt_Spec_create();
KernAux_PrintfFmt_Spec_eval_flags(&spec, &format);
if (KernAux_PrintfFmt_Spec_eval_width1(&spec, &format)) {
KernAux_PrintfFmt_Spec_eval_width2(&spec, &format, 0);
KernAux_PrintfFmt_Spec_eval_width2(&spec, 0);
}
if (KernAux_PrintfFmt_Spec_eval_precision1(&spec, &format)) {
KernAux_PrintfFmt_Spec_eval_precision2(&spec, &format, 0);
KernAux_PrintfFmt_Spec_eval_precision2(&spec, 0);
}
KernAux_PrintfFmt_Spec_eval_length(&spec, &format);
KernAux_PrintfFmt_Spec_eval_type(&spec, &format);
@ -37,10 +37,10 @@ int main()
struct KernAux_PrintfFmt_Spec spec = KernAux_PrintfFmt_Spec_create();
KernAux_PrintfFmt_Spec_eval_flags(&spec, &format);
if (KernAux_PrintfFmt_Spec_eval_width1(&spec, &format)) {
KernAux_PrintfFmt_Spec_eval_width2(&spec, &format, 12);
KernAux_PrintfFmt_Spec_eval_width2(&spec, 12);
}
if (KernAux_PrintfFmt_Spec_eval_precision1(&spec, &format)) {
KernAux_PrintfFmt_Spec_eval_precision2(&spec, &format, 34);
KernAux_PrintfFmt_Spec_eval_precision2(&spec, 34);
}
KernAux_PrintfFmt_Spec_eval_length(&spec, &format);
KernAux_PrintfFmt_Spec_eval_type(&spec, &format);

View File

@ -48,9 +48,9 @@ void KernAux_PrintfFmt_Spec_init(struct KernAux_PrintfFmt_Spec *spec);
void KernAux_PrintfFmt_Spec_eval_flags(struct KernAux_PrintfFmt_Spec *spec, const char **format);
bool KernAux_PrintfFmt_Spec_eval_width1(struct KernAux_PrintfFmt_Spec *spec, const char **format);
void KernAux_PrintfFmt_Spec_eval_width2(struct KernAux_PrintfFmt_Spec *spec, const char **format, int width);
void KernAux_PrintfFmt_Spec_eval_width2(struct KernAux_PrintfFmt_Spec *spec, int width);
bool KernAux_PrintfFmt_Spec_eval_precision1(struct KernAux_PrintfFmt_Spec *spec, const char **format);
void KernAux_PrintfFmt_Spec_eval_precision2(struct KernAux_PrintfFmt_Spec *spec, const char **format, int precision);
void KernAux_PrintfFmt_Spec_eval_precision2(struct KernAux_PrintfFmt_Spec *spec, int precision);
void KernAux_PrintfFmt_Spec_eval_length(struct KernAux_PrintfFmt_Spec *spec, const char **format);
void KernAux_PrintfFmt_Spec_eval_type(struct KernAux_PrintfFmt_Spec *spec, const char **format);

View File

@ -156,11 +156,11 @@ int _vsnprintf(out_fct_type out, char* buffer, const size_t maxlen, const char*
KernAux_PrintfFmt_Spec_eval_flags(&spec, &format);
if (KernAux_PrintfFmt_Spec_eval_width1(&spec, &format)) {
KernAux_PrintfFmt_Spec_eval_width2(&spec, &format, va_arg(va, int));
KernAux_PrintfFmt_Spec_eval_width2(&spec, va_arg(va, int));
}
if (KernAux_PrintfFmt_Spec_eval_precision1(&spec, &format)) {
KernAux_PrintfFmt_Spec_eval_precision2(&spec, &format, va_arg(va, int));
KernAux_PrintfFmt_Spec_eval_precision2(&spec, va_arg(va, int));
}
KernAux_PrintfFmt_Spec_eval_length(&spec, &format);

View File

@ -63,16 +63,17 @@ bool KernAux_PrintfFmt_Spec_eval_width1(struct KernAux_PrintfFmt_Spec *const spe
if (isdigit(**format)) {
spec->width = _atoi(format);
return false;
} else if (**format == '*') {
++(*format);
return true;
} else {
return **format == '*';
return false;
}
}
void KernAux_PrintfFmt_Spec_eval_width2(struct KernAux_PrintfFmt_Spec *const spec, const char **const format, const int width)
void KernAux_PrintfFmt_Spec_eval_width2(struct KernAux_PrintfFmt_Spec *const spec, const int width)
{
KERNAUX_NOTNULL_RETURN(spec);
KERNAUX_NOTNULL_RETURN(format);
KERNAUX_NOTNULL_RETURN(*format);
if (width < 0) {
spec->flags |= KERNAUX_PRINTF_FMT_FLAGS_LEFT; // reverse padding
@ -80,8 +81,6 @@ void KernAux_PrintfFmt_Spec_eval_width2(struct KernAux_PrintfFmt_Spec *const spe
} else {
spec->width = (unsigned int)width;
}
++(*format);
}
bool KernAux_PrintfFmt_Spec_eval_precision1(struct KernAux_PrintfFmt_Spec *const spec, const char **const format)
@ -96,22 +95,22 @@ bool KernAux_PrintfFmt_Spec_eval_precision1(struct KernAux_PrintfFmt_Spec *const
if (isdigit(**format)) {
spec->precision = _atoi(format);
return false;
} else if (**format == '*') {
++(*format);
return true;
} else {
return **format == '*';
return false;
}
} else {
return false;
}
}
void KernAux_PrintfFmt_Spec_eval_precision2(struct KernAux_PrintfFmt_Spec *const spec, const char **const format, const int precision)
void KernAux_PrintfFmt_Spec_eval_precision2(struct KernAux_PrintfFmt_Spec *const spec, const int precision)
{
KERNAUX_NOTNULL_RETURN(spec);
KERNAUX_NOTNULL_RETURN(format);
KERNAUX_NOTNULL_RETURN(*format);
spec->precision = precision > 0 ? (unsigned int)precision : 0u;
++(*format);
}
void KernAux_PrintfFmt_Spec_eval_length(struct KernAux_PrintfFmt_Spec *const spec, const char **const format)