minishell
can_add.c
Go to the documentation of this file.
1 /* ************************************************************************** */
2 /* */
3 /* ::: :::::::: */
4 /* can_add.c :+: :+: :+: */
5 /* +:+ +:+ +:+ */
6 /* By: kfujita <kfujita@student.42tokyo.jp> +#+ +:+ +#+ */
7 /* +#+#+#+#+#+ +#+ */
8 /* Created: 2023/02/06 19:14:07 by kfujita #+# #+# */
9 /* Updated: 2023/05/03 19:35:16 by kfujita ### ########.fr */
10 /* */
11 /* ************************************************************************** */
12 
13 #include "ft_math.h"
14 
15 #include <limits.h>
16 #include <stdint.h>
17 
18 bool can_add(int a, int b)
19 {
20  if ((a <= 0 && 0 <= b) || (b <= 0 && 0 <= a))
21  return (true);
22  else if (0 < a)
23  return (b <= (INT_MAX - a));
24  else
25  return ((INT_MIN - a) <= b);
26 }
27 
28 bool can_addu(unsigned int a, unsigned int b)
29 {
30  return (b <= (UINT_MAX - a));
31 }
32 
33 bool can_addl(long a, long b)
34 {
35  if ((a <= 0 && 0 <= b) || (b <= 0 && 0 <= a))
36  return (true);
37  else if (0 < a)
38  return (b <= (LONG_MAX - a));
39  else
40  return ((LONG_MIN - a) <= b);
41 }
42 
43 bool can_addp(size_t a, size_t b)
44 {
45  return (b <= (UINTPTR_MAX - a));
46 }
bool can_addu(unsigned int a, unsigned int b)
Definition: can_add.c:28
bool can_add(int a, int b)
Definition: can_add.c:18
bool can_addp(size_t a, size_t b)
Definition: can_add.c:43
bool can_addl(long a, long b)
Definition: can_add.c:33