-
Notifications
You must be signed in to change notification settings - Fork 0
/
libft.h
207 lines (184 loc) · 7.65 KB
/
libft.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
/* ************************************************************************** */
/* */
/* :::::::: */
/* libft.h :+: :+: */
/* +:+ */
/* By: mmarcell <mmarcell@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2019/01/16 21:05:44 by mmarcell #+# #+# */
/* Updated: 2021/05/14 13:26:33 by mmarcell ######## odam.nl */
/* */
/* ************************************************************************** */
#ifndef LIBFT_H
# define LIBFT_H
# include <stdarg.h>
# include <stdio.h>
# define TRUE 1
# define FALSE 0
# define SUCCESS TRUE
# define ERROR FALSE
# define FT_INT_MAX 2147483647
# define FT_INT_MIN -2147483648
# define BUFF_SIZE 512
# define FD_MAX 4864
# define CONV_CHAR_START 'B'
# define CONV_CHAR_END 121
typedef struct s_list
{
void *content;
size_t content_size;
struct s_list *next;
} t_list;
typedef struct s_flags
{
unsigned int hh : 1;
unsigned int h : 1;
unsigned int ll : 1;
unsigned int l : 1;
unsigned int lll : 1;
unsigned int hsh : 1;
unsigned int zr : 1;
unsigned int mns : 1;
unsigned int pls : 1;
unsigned int spc : 1;
unsigned int dt : 1;
unsigned int j : 1;
unsigned int z : 1;
unsigned int is_cap : 1;
unsigned int is_signed : 1;
unsigned int pdn;
unsigned int prcs;
unsigned char conv;
unsigned int base;
} t_flags;
typedef struct s_buffer
{
char str[BUFF_SIZE + 1];
ssize_t count;
ssize_t idx;
int fd;
} t_buffer;
long long int ft_atoi(const char *s);
char *ft_itoa(long long int n);
char *ft_itoa_base_unsgnd(unsigned long long int n, int base,
int is_cap, unsigned int len);
unsigned int ft_nbrlen_unsigned(long long int nbr, int base);
void ft_bzero(void *s, size_t n);
void ft_swap_ptr(void **ptr1, void **ptr2);
int ft_isint(char *str);
int ft_isalnum(int c);
int ft_isalpha(int c);
int ft_isascii(int c);
int ft_isdigit(int c);
int ft_isprint(int c);
int ft_islower(int c);
int ft_isupper(int c);
int ft_tolower(int c);
int ft_toupper(int c);
void ft_lstadd(t_list **alst, t_list *item);
void ft_lstdel(t_list **alst, void (*del)(void *, size_t));
void ft_lstdelone(t_list **alst, void (*del)(void *, size_t));
void ft_lstiter(t_list *lst, void (*f)(t_list *elem));
t_list *ft_lstmap(t_list *lst, t_list *(*f)(t_list *elem));
t_list *ft_lstnew(void const *content, size_t content_size);
void ft_lstadd_back(t_list **alst, t_list *item);
void ft_lstfold(t_list **alst, t_list *start, t_list *end);
void ft_lstadd_behind(t_list **alst, t_list *node, t_list *new_nd);
void ft_lstadd_before(t_list **alst, t_list *node, t_list *new_nd);
size_t ft_lstcount(t_list *lst);
t_list *ft_lstrev(t_list **alst);
void ft_delete(void *ptr, size_t size);
void *ft_memalloc(size_t size);
void *ft_save_memalloc(size_t size);
void *ft_memccpy(void *dst, const void *src, int c, size_t n);
void *ft_memchr(const void *s, int c, size_t n);
int ft_memcmp(const void *s1, const void *s2, size_t n);
void *ft_memcpy(void *dst, const void *src, size_t n);
void ft_memdel(void **ap);
void *ft_memmove(void *dst, const void *src, size_t len);
void *ft_memset(void *b, int c, size_t len);
void *ft_memdup(void *ptr, size_t size);
void ft_putchar(char c);
void ft_putchar_fd(char c, int fd);
void ft_putnbr(int n);
void ft_putnbr_fd(int n, int fd);
void ft_putendl(const char *s);
void ft_putendl_fd(const char *s, int fd);
void ft_putstr(const char *s);
void ft_putstr_fd(const char *s, int fd);
ssize_t ft_putnstr_fd(const char *str, size_t len, int fd);
char *ft_strcat(char *s1, const char *s2);
char *ft_strchr(const char *s, int c);
void ft_strclr(char *s);
int ft_strcmp(const char *s1, const char *s2);
char *ft_strcpy(char *dst, const char *src);
void ft_strdel(char **as);
void ft_strarrdel(char ***arr);
char *ft_strdup(const char *s);
char *ft_strndup(const char *s, size_t n);
int ft_strequ(const char *s1, const char *s2);
void ft_striter(char *s, void(*f)(char*));
void ft_striteri(char *s, void(*f)(unsigned int, char*));
char *ft_strjoin(const char *s1, const char *s2);
size_t ft_strlcat(char *s1, const char *s2, size_t size);
size_t ft_strlen(const char *s);
char *ft_strmap(const char *s, char(*f)(char));
char *ft_strmapi(const char *s, char (*f)(unsigned int, char));
char *ft_strncat(char *s1, const char *s2, size_t n);
int ft_strncmp(const char *s1, const char *s2, size_t n);
char *ft_strncpy(char *dst, const char *src, size_t len);
int ft_strnequ(const char *s1, const char *s2, size_t n);
char *ft_strnew(size_t size);
char *ft_strnstr(const char *hay, const char *needle, size_t n);
char *ft_strrchr(const char *s, int c);
char **ft_strsplit(const char *s, char c);
char *ft_strstr(const char *hay, const char *needle);
char *ft_strsub(const char *s, unsigned int start, size_t len);
char *ft_strtrim(const char *s);
char *ft_strrev(char *s);
long long int ft_absolute(long long int nbr);
unsigned int ft_absolute_doublelen(long double ld, unsigned int prcs);
unsigned int ft_absolute_nbrlen(long long int nbr, int base);
int ft_power(int base, unsigned int exp);
double ft_double_power(double base, int exp);
long double ft_ldouble_power(long double base, int exp);
int get_next_line(const int fd, char **line);
int ft_printf(const char *format, ...);
int ft_dprintf(const int fd, const char *format, ...);
typedef void (*t_conversion_table[CONV_CHAR_END - CONV_CHAR_START])
(va_list ap, t_buffer *buf, t_flags *flags);
void launch_double(va_list ap, t_buffer *buf, t_flags *flags);
void launch_int10(va_list ap, t_buffer *buf, t_flags *flags);
void launch_int10_unsgnd(va_list ap, t_buffer *buf, t_flags *flags);
void launch_int8(va_list ap, t_buffer *buf, t_flags *flags);
void launch_int16(va_list ap, t_buffer *buf, t_flags *flags);
void launch_int2(va_list ap, t_buffer *buf, t_flags *flags);
void launch_n(va_list ap, t_buffer *buf, t_flags *flags);
void launch_c(va_list ap, t_buffer *buf, t_flags *flags);
void launch_s(va_list ap, t_buffer *buf, t_flags *flags);
void handler_sc(char *s, t_buffer *buf, t_flags *flags,
char is_char);
void handle_char(char c, t_buffer *buf, t_flags *flags);
void buff_push(t_buffer *buf, char *str, size_t n);
void buff_filler(t_buffer *buf, char c, unsigned int n);
void buff_print_dump(t_buffer *buf);
char *save_wildcard(va_list ap, char *pos, t_flags *flags);
char *save_flags(va_list ap, char *pos, t_flags *flags);
void format_int_unsgnd(long long unsigned d, t_flags *flags,
t_buffer *buf);
void format_int(long long d, t_flags *flags, t_buffer *buf);
void print_number_sign(int is_positive, t_flags *flags,
t_buffer *buf);
void format_prepend(int is_positive, unsigned int nbrlen,
t_flags *flags, t_buffer *buf);
void format_append(unsigned int nbrlen, t_flags *flags,
t_buffer *buf);
long double rounder(int precision);
void ftobuf(long double f, unsigned int prcs, t_buffer *buf);
void longftobuf(long double ldb, unsigned int prcs,
unsigned int len, t_buffer *buf);
void absolute_itobuf(long long nb, unsigned int base,
t_buffer *buf, int is_cap);
void unsigned_itobuf(long long unsigned nb, unsigned int base,
t_buffer *buf, int is_cap);
#endif