1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #ifndef XSTRTOL_H_
20 # define XSTRTOL_H_ 1
21
22 # include <inttypes.h>
23
24 # ifndef _STRTOL_ERROR
25 enum strtol_error
26 {
27 LONGINT_OK = 0,
28
29
30
31 LONGINT_OVERFLOW = 1,
32 LONGINT_INVALID_SUFFIX_CHAR = 2,
33
34 LONGINT_INVALID_SUFFIX_CHAR_WITH_OVERFLOW = (LONGINT_INVALID_SUFFIX_CHAR
35 | LONGINT_OVERFLOW),
36 LONGINT_INVALID = 4
37 };
38 typedef enum strtol_error strtol_error;
39 # endif
40
41 # define _DECLARE_XSTRTOL(name, type) \
42 strtol_error name (const char *, char **, int, type *, const char *);
43 _DECLARE_XSTRTOL (xstrtol, long int)
44 _DECLARE_XSTRTOL (xstrtoul, unsigned long int)
45 _DECLARE_XSTRTOL (xstrtoll, long long int)
46 _DECLARE_XSTRTOL (xstrtoull, unsigned long long int)
47 _DECLARE_XSTRTOL (xstrtoimax, intmax_t)
48 _DECLARE_XSTRTOL (xstrtoumax, uintmax_t)
49
50 #endif