aboutsummaryrefslogtreecommitdiffstats
path: root/libft/src/ft_printf_process.c
diff options
context:
space:
mode:
authorRudy Bousset <rbousset@z2r4p3.le-101.fr>2020-01-17 19:34:53 +0100
committerRudy Bousset <rbousset@z2r4p3.le-101.fr>2020-01-17 19:34:53 +0100
commita287db1124beda38507739f892c085bd3654ebd7 (patch)
treec439a25efe0309de08087d439a597f84583b257f /libft/src/ft_printf_process.c
parentRemoved libft (diff)
download42-cub3d-a287db1124beda38507739f892c085bd3654ebd7.tar.gz
42-cub3d-a287db1124beda38507739f892c085bd3654ebd7.tar.bz2
42-cub3d-a287db1124beda38507739f892c085bd3654ebd7.tar.xz
42-cub3d-a287db1124beda38507739f892c085bd3654ebd7.tar.zst
42-cub3d-a287db1124beda38507739f892c085bd3654ebd7.zip
Added libft
Diffstat (limited to 'libft/src/ft_printf_process.c')
-rw-r--r--libft/src/ft_printf_process.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/libft/src/ft_printf_process.c b/libft/src/ft_printf_process.c
new file mode 100644
index 0000000..6979ad6
--- /dev/null
+++ b/libft/src/ft_printf_process.c
@@ -0,0 +1,46 @@
+/* ************************************************************************** */
+/* LE - / */
+/* / */
+/* ft_printf_process.c .:: .:/ . .:: */
+/* +:+:+ +: +: +:+:+ */
+/* By: rbousset <marvin@le-101.fr> +:+ +: +: +:+ */
+/* #+# #+ #+ #+# */
+/* Created: 2019/12/13 00:32:59 by rbousset #+# ## ## #+# */
+/* Updated: 2019/12/13 00:33:04 by rbousset ### #+. /#+ ###.fr */
+/* / */
+/* / */
+/* ************************************************************************** */
+
+#include <libft.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <inttypes.h>
+#include <limits.h>
+
+/*
+** calls the corresponding function to
+** the right conv using:
+** FT_PRINTF_CONV_CHARSET "cspdiuxX%"
+*/
+
+void
+ ft_printf_process(const char *format, va_list arg, t_printflist *pflist)
+{
+ int conv;
+ void (*fun_ptr[9])(va_list, t_printflist *);
+
+ fun_ptr[0] = ft_printf_put_c;
+ fun_ptr[1] = ft_printf_put_s;
+ fun_ptr[2] = ft_printf_put_p;
+ fun_ptr[3] = ft_printf_put_d;
+ fun_ptr[4] = ft_printf_put_d;
+ fun_ptr[5] = ft_printf_put_u;
+ fun_ptr[6] = ft_printf_put_x;
+ fun_ptr[7] = ft_printf_put_big_x;
+ fun_ptr[8] = ft_printf_put_perc;
+ if ((conv = ft_strlchr(FT_PRINTF_CONV_CHARSET,
+ *(format + pflist->flaglen + 1))) >= 0)
+ (*fun_ptr[conv])(arg, pflist);
+ else
+ ft_printf_put_none(pflist);
+}