1 #ifndef _ANSIDECL_H
2 #define _ANSIDECL_H
3 
4 #ifndef PTR
5 #ifndef __STDC__
6 #define PTR char *
7 #else
8 #define PTR void *
9 #endif
10 #endif
11 
12 #ifndef PARAMS
13 #if !defined(__STDC__)
14 #define PARAMS(ARGS)  ARGS
15 #else
16 #define PARAMS(ARGS)  ()
17 #endif
18 #endif
19 
20 #ifndef __attribute__
21 # if !defined __GNUC__ || !defined __GNUC_MINOR__
22 #  define __attribute__(x)
23 # elif  (__GNUC__ * 1000 + __GNUC_MINOR__) < 2007
24 #  define __attribute__(x)
25 # endif
26 #endif
27 
28 /* Attribute __malloc__ on functions was valid as of gcc 2.96. */
29 #ifndef ATTRIBUTE_MALLOC
30 # if (__GNUC__ * 1000 + __GNUC_MINOR__) >= 2096
31 #  define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
32 # else
33 #  define ATTRIBUTE_MALLOC
34 # endif /* GNUC >= 2.96 */
35 #endif /* ATTRIBUTE_MALLOC */
36 
37 /* Attribute __const__ on functions was valid as of gcc 2.96. */
38 #ifndef ATTRIBUTE_CONST
39 # if (__GNUC__ * 1000 + __GNUC_MINOR__) >= 2096
40 #  define ATTRIBUTE_CONST __attribute__ ((__const__))
41 # else
42 #  define ATTRIBUTE_CONST
43 # endif /* GNUC >= 2.96 */
44 #endif /* ATTRIBUTE_CONST */
45 
46 /* Attribute __pure__ on functions was valid as of gcc 2.96. */
47 #ifndef ATTRIBUTE_PURE
48 # if (__GNUC__ * 1000 + __GNUC_MINOR__) >= 2096
49 #  define ATTRIBUTE_PURE __attribute__ ((__pure__))
50 # else
51 #  define ATTRIBUTE_PURE
52 # endif /* GNUC >= 2.96 */
53 #endif /* ATTRIBUTE_PURE */
54 
55 #ifndef ATTRIBUTE_UNUSED
56 # define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
57 #endif /* ATTRIBUTE_UNUSED */
58 
59 #ifndef ATTRIBUTE_NORETURN
60 # define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
61 #endif /* ATTRIBUTE_NORETURN */
62 
63 #ifndef ATTRIBUTE_PRINTF
64 # define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n)))
65 #endif /* ATTRIBUTE_PRINTF */
66 
67 #define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2)
68 #define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3)
69 #define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4)
70 #define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5)
71 #define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6)
72 
73 #endif
74