/* ************************************************************************** */ /* LE - / */ /* / */ /* ft_select_get.c .:: .:/ . .:: */ /* +:+:+ +: +: +:+:+ */ /* By: rbousset +:+ +: +: +:+ */ /* #+# #+ #+ #+# */ /* Created: 2020/02/02 17:19:33 by rbousset #+# ## ## #+# */ /* Updated: 2020/02/02 17:19:33 by rbousset ### #+. /#+ ###.fr */ /* / */ /* / */ /* ************************************************************************** */ #include #include #include static uint8_t ft_get_id(char **words) { if (!ft_strncmp(words[0], "R", 2)) return (0); if (!ft_strncmp(words[0], "NO", 3)) return (1); if (!ft_strncmp(words[0], "SO", 3)) return (2); if (!ft_strncmp(words[0], "EA", 3)) return (3); if (!ft_strncmp(words[0], "WE", 3)) return (4); if (!ft_strncmp(words[0], "S", 2)) return (5); if (!ft_strncmp(words[0], "F", 2)) return (6); if (!ft_strncmp(words[0], "C", 2)) return (7); return (12); } uint8_t ft_select_get(char **words, t_cub *clist) { int (*fun_ptr[8])(char**, t_cub*); uint8_t id; fun_ptr[0] = ft_get_res; fun_ptr[1] = ft_get_tex_no; fun_ptr[2] = ft_get_tex_so; fun_ptr[3] = ft_get_tex_ea; fun_ptr[4] = ft_get_tex_we; fun_ptr[5] = ft_get_sprite; fun_ptr[6] = ft_get_f_color; fun_ptr[7] = ft_get_c_color; if ((id = ft_get_id(words)) == 12) { ft_free_words(words); return (12); } if ((*fun_ptr[id])(words, clist) < 0) { ft_free_words(words); return (ft_map_error(clist)); } ft_free_words(words); return (id); }