norm: splitted functions in main into appropriate file
Moved lstdelenvelem & env2lst to ms_env.c Normed out files
This commit is contained in:
97
libft/srcs/ft_printf_tools_prec_size.c
Normal file
97
libft/srcs/ft_printf_tools_prec_size.c
Normal file
@@ -0,0 +1,97 @@
|
||||
/* ************************************************************************** */
|
||||
/* */
|
||||
/* ::: :::::::: */
|
||||
/* tools_prec_size.c :+: :+: :+: */
|
||||
/* +:+ +:+ +:+ */
|
||||
/* By: klebon <klebon@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2018/10/01 15:36:42 by klebon #+# #+# */
|
||||
/* Updated: 2019/03/07 22:20:49 by tmaze ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "libft.h"
|
||||
|
||||
int set_precision_sizex(uintmax_t nb, t_conv *field)
|
||||
{
|
||||
uintmax_t tmp;
|
||||
int size;
|
||||
|
||||
if (nb == 0 && field->fl_prec == 0)
|
||||
size = 0;
|
||||
else
|
||||
size = 1;
|
||||
tmp = nb;
|
||||
while (tmp /= 16)
|
||||
++size;
|
||||
size = (size < field->fl_prec) ? field->fl_prec : size;
|
||||
size += (field->fl_hashtag) ? 2 : 0;
|
||||
return (size);
|
||||
}
|
||||
|
||||
int set_precision_sizes(uintmax_t nb, t_conv *field)
|
||||
{
|
||||
uintmax_t tmp;
|
||||
int size;
|
||||
|
||||
if (nb == 0 && field->fl_prec == 0)
|
||||
size = 0;
|
||||
else
|
||||
size = 1;
|
||||
tmp = ((intmax_t)nb >= 0) ? (uintmax_t)nb : -(uintmax_t)nb;
|
||||
while (tmp /= 10)
|
||||
++size;
|
||||
size = (size < field->fl_prec) ? field->fl_prec : size;
|
||||
size += ((intmax_t)nb < 0 || field->fl_plus || field->fl_space) ? 1 : 0;
|
||||
return (size);
|
||||
}
|
||||
|
||||
int set_precision_sizeo(uintmax_t nb, t_conv *field)
|
||||
{
|
||||
uintmax_t tmp;
|
||||
int size;
|
||||
|
||||
if (nb == 0 && field->fl_prec == 0)
|
||||
size = 0;
|
||||
else if (nb == 0)
|
||||
{
|
||||
size = 0;
|
||||
field->fl_hashtag = 0;
|
||||
}
|
||||
else
|
||||
size = 1;
|
||||
tmp = nb;
|
||||
while (tmp /= 8)
|
||||
++size;
|
||||
size += (field->fl_hashtag) ? 1 : 0;
|
||||
size = (size < field->fl_prec) ? field->fl_prec : size;
|
||||
return (size);
|
||||
}
|
||||
|
||||
int set_prec_size_wstr(const wint_t *str, t_conv *field)
|
||||
{
|
||||
int i;
|
||||
int tmp;
|
||||
|
||||
i = 0;
|
||||
field->str_size = 0;
|
||||
while (str[i] && (field->str_size < field->fl_prec))
|
||||
{
|
||||
tmp = field->str_size;
|
||||
if (str[i] < 0 || (MB_CUR_MAX == 1 && str[i] > 0xFF)
|
||||
|| (str[i] >= 0xD800 && str[i] <= 0xDFFF) || str[i] > 0x10FFFF)
|
||||
return (0);
|
||||
else if (str[i] <= 0x7F || (MB_CUR_MAX == 1 && str[i] <= 0xFF))
|
||||
field->str_size += (field->str_size + 1 <= field->fl_prec) ? 1 : 0;
|
||||
else if (str[i] <= 0x7FF)
|
||||
field->str_size += (field->str_size + 2 <= field->fl_prec) ? 2 : 0;
|
||||
else if (str[i] <= 0xFFFF)
|
||||
field->str_size += (field->str_size + 3 <= field->fl_prec) ? 3 : 0;
|
||||
else if (str[i] <= 0x10FFFF)
|
||||
field->str_size += (field->str_size + 4 <= field->fl_prec) ? 4 : 0;
|
||||
if (tmp == field->str_size)
|
||||
return (1);
|
||||
++i;
|
||||
}
|
||||
return (1);
|
||||
}
|
Reference in New Issue
Block a user