1 /* c-proto.h: macros to include or discard prototypes.
3 Copyright 1992, 1993, 1995, 1996, 2008 Karl Berry.
4 Copyright 1999, 2000, 2001, 2003, 2004, 2005 Olaf Weber.
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public License
17 along with this library; if not, see <http://www.gnu.org/licenses/>. */
19 #ifndef KPATHSEA_C_PROTO_H
20 #define KPATHSEA_C_PROTO_H
22 #if defined (KPSE_DLL) && (defined (WIN32) || defined (__CYGWIN__))
24 #define KPSEDLL __declspec(dllexport)
25 #else /* ! MAKE_KPSE_DLL */
26 #define KPSEDLL __declspec(dllimport)
28 #else /* ! (KPSE_DLL && (WIN32 || __CYGWIN__)) */
32 /* These macros munge function declarations to make them work in both
33 cases. The P?H macros are used for declarations, the P?C for
34 definitions. Cf. <ansidecl.h> from the GNU C library. P1H(void)
35 also works for definitions of routines which take no args. */
37 #ifdef HAVE_PROTOTYPES
39 #define AA(args) args /* For an arbitrary number; ARGS must be in parens. */
42 #define P2H(p1,p2) (p1, p2)
43 #define P3H(p1,p2,p3) (p1, p2, p3)
44 #define P4H(p1,p2,p3,p4) (p1, p2, p3, p4)
45 #define P5H(p1,p2,p3,p4,p5) (p1, p2, p3, p4, p5)
46 #define P6H(p1,p2,p3,p4,p5,p6) (p1, p2, p3, p4, p5, p6)
47 #define P7H(p1,p2,p3,p4,p5,p6,p7) (p1, p2, p3, p4, p5, p6, p7)
48 #define P8H(p1,p2,p3,p4,p5,p6,p7,p8) (p1, p2, p3, p4, p5, p6, p7, p8)
49 #define P9H(p1,p2,p3,p4,p5,p6,p7,p8,p9) (p1, p2, p3, p4, p5, p6, p7, p8, p9)
50 #define P10H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) \
51 (p1,p2,p3,p4,p5,p6,p7,p8,p9,p10)
52 #define P11H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11) \
53 (p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11)
54 #define P12H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12) \
55 (p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12)
56 #define P13H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13) \
57 (p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13)
58 #define P14H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14) \
59 (p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14)
60 #define P15H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15) \
61 (p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15)
62 #define P16H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16) \
63 (p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16)
64 #define P17H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17) \
65 (p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17)
68 #define P1C(t1,n1)(t1 n1)
69 #define P2C(t1,n1, t2,n2)(t1 n1, t2 n2)
70 #define P3C(t1,n1, t2,n2, t3,n3)(t1 n1, t2 n2, t3 n3)
71 #define P4C(t1,n1, t2,n2, t3,n3, t4,n4)(t1 n1, t2 n2, t3 n3, t4 n4)
72 #define P5C(t1,n1, t2,n2, t3,n3, t4,n4, t5,n5) \
73 (t1 n1, t2 n2, t3 n3, t4 n4, t5 n5)
74 #define P6C(t1,n1, t2,n2, t3,n3, t4,n4, t5,n5, t6,n6) \
75 (t1 n1, t2 n2, t3 n3, t4 n4, t5 n5, t6 n6)
76 #define P7C(t1,n1, t2,n2, t3,n3, t4,n4, t5,n5, t6,n6, t7,n7) \
77 (t1 n1, t2 n2, t3 n3, t4 n4, t5 n5, t6 n6, t7 n7)
78 #define P8C(t1,n1, t2,n2, t3,n3, t4,n4, t5,n5, t6,n6, t7,n7, t8,n8) \
79 (t1 n1, t2 n2, t3 n3, t4 n4, t5 n5, t6 n6, t7 n7, t8 n8)
80 #define P9C(t1,n1, t2,n2, t3,n3, t4,n4, t5,n5, t6,n6, t7,n7, t8,n8, t9,n9) \
81 (t1 n1, t2 n2, t3 n3, t4 n4, t5 n5, t6 n6, t7 n7, t8 n8, t9 n9)
82 #define P10C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10) \
83 (t1 n1, t2 n2, t3 n3, t4 n4, t5 n5, t6 n6, t7 n7, t8 n8, t9 n9, t10 n10)
84 #define P11C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11) \
85 (t1 n1, t2 n2, t3 n3, t4 n4, t5 n5, t6 n6, t7 n7, t8 n8, t9 n9, t10 n10, \
87 #define P12C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11,t12,n12) \
88 (t1 n1, t2 n2, t3 n3, t4 n4, t5 n5, t6 n6, t7 n7, t8 n8, t9 n9, t10 n10, \
90 #define P13C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11,t12,n12,t13,n13) \
91 (t1 n1, t2 n2, t3 n3, t4 n4, t5 n5, t6 n6, t7 n7, t8 n8, t9 n9, t10 n10, \
92 t11 n11, t12 n12, t13 n13)
93 #define P14C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11,t12,n12,t13,n13,t14,n14) \
94 (t1 n1, t2 n2, t3 n3, t4 n4, t5 n5, t6 n6, t7 n7, t8 n8, t9 n9, t10 n10, \
95 t11 n11, t12 n12, t13 n13, t14 n14)
96 #define P15C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11,t12,n12,t13,n13,t14,n14,t15,n15) \
97 (t1 n1, t2 n2, t3 n3, t4 n4, t5 n5, t6 n6, t7 n7, t8 n8, t9 n9, t10 n10, \
98 t11 n11, t12 n12, t13 n13, t14 n14, t15 n15)
99 #define P16C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11,t12,n12,t13,n13,t14,n14,t15,n15,t16,n16) \
100 (t1 n1, t2 n2, t3 n3, t4 n4, t5 n5, t6 n6, t7 n7, t8 n8, t9 n9, t10 n10, \
101 t11 n11, t12 n12, t13 n13, t14 n14, t15 n15, t16 n16)
102 #define P17C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11,t12,n12,t13,n13,t14,n14,t15,n15,t16,n16,t17,n17) \
103 (t1 n1, t2 n2, t3 n3, t4 n4, t5 n5, t6 n6, t7 n7, t8 n8, t9 n9, t10 n10, \
104 t11 n11, t12 n12, t13 n13, t14 n14, t15 n15, t16 n16, t17 n17)
106 #else /* not HAVE_PROTOTYPES */
111 #define P2H(p1, p2) ()
112 #define P3H(p1, p2, p3) ()
113 #define P4H(p1, p2, p3, p4) ()
114 #define P5H(p1, p2, p3, p4, p5) ()
115 #define P6H(p1, p2, p3, p4, p5, p6) ()
116 #define P7H(p1, p2, p3, p4, p5, p6, p7) ()
117 #define P8H(p1, p2, p3, p4, p5, p6, p7, p8) ()
118 #define P9H(p1, p2, p3, p4, p5, p6, p7, p8, p9) ()
119 #define P10H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10) ()
120 #define P11H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11) ()
121 #define P12H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12) ()
122 #define P13H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13) ()
123 #define P14H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14) ()
124 #define P15H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15) ()
125 #define P16H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16) ()
126 #define P17H(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17) ()
128 #define P1C(t1,n1) (n1) t1 n1;
129 #define P2C(t1,n1, t2,n2) (n1,n2) t1 n1; t2 n2;
130 #define P3C(t1,n1, t2,n2, t3,n3) (n1,n2,n3) t1 n1; t2 n2; t3 n3;
131 #define P4C(t1,n1, t2,n2, t3,n3, t4,n4) (n1,n2,n3,n4) \
132 t1 n1; t2 n2; t3 n3; t4 n4;
133 #define P5C(t1,n1, t2,n2, t3,n3, t4,n4, t5,n5) (n1,n2,n3,n4,n5) \
134 t1 n1; t2 n2; t3 n3; t4 n4; t5 n5;
135 #define P6C(t1,n1, t2,n2, t3,n3, t4,n4, t5,n5, t6,n6) (n1,n2,n3,n4,n5,n6) \
136 t1 n1; t2 n2; t3 n3; t4 n4; t5 n5; t6 n6;
137 #define P7C(t1,n1, t2,n2, t3,n3, t4,n4, t5,n5, t6,n6, t7,n7) \
138 (n1,n2,n3,n4,n5,n6,n7) \
139 t1 n1; t2 n2; t3 n3; t4 n4; t5 n5; t6 n6; t7 n7;
140 #define P8C(t1,n1, t2,n2, t3,n3, t4,n4, t5,n5, t6,n6, t7,n7, t8,n8) \
141 (n1,n2,n3,n4,n5,n6,n7,n8) \
142 t1 n1; t2 n2; t3 n3; t4 n4; t5 n5; t6 n6; t7 n7; t8 n8;
143 #define P9C(t1,n1, t2,n2, t3,n3, t4,n4, t5,n5, t6,n6, t7,n7, t8,n8, t9,n9) \
144 (n1,n2,n3,n4,n5,n6,n7,n8,n9) \
145 t1 n1; t2 n2; t3 n3; t4 n4; t5 n5; t6 n6; t7 n7; t8 n8; t9 n9;
146 #define P10C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10) \
147 (n1,n2,n3,n4,n5,n6,n7,n8,n9,n10) \
148 t1 n1; t2 n2; t3 n3; t4 n4; t5 n5; t6 n6; t7 n7; t8 n8; t9 n9; t10 n10;
149 #define P11C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11) \
150 (n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11) \
151 t1 n1; t2 n2; t3 n3; t4 n4; t5 n5; t6 n6; t7 n7; t8 n8; t9 n9; t10 n10; \
153 #define P12C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11,t12,n12) \
154 (n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12) \
155 t1 n1; t2 n2; t3 n3; t4 n4; t5 n5; t6 n6; t7 n7; t8 n8; t9 n9; t10 n10; \
157 #define P13C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11,t12,n12,t13,n13) \
158 (n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13) \
159 t1 n1; t2 n2; t3 n3; t4 n4; t5 n5; t6 n6; t7 n7; t8 n8; t9 n9; t10 n10; \
160 t11 n11; t12 n12; t13 n13;
161 #define P14C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11,t12,n12,t13,n13,t14,n14) \
162 (n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14) \
163 t1 n1; t2 n2; t3 n3; t4 n4; t5 n5; t6 n6; t7 n7; t8 n8; t9 n9; t10 n10; \
164 t11 n11; t12 n12; t13 n13; t14 n14;
165 #define P15C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11,t12,n12,t13,n13,t14,n14,t15,n15) \
166 (n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15) \
167 t1 n1; t2 n2; t3 n3; t4 n4; t5 n5; t6 n6; t7 n7; t8 n8; t9 n9; t10 n10; \
168 t11 n11; t12 n12; t13 n13; t14 n14; t15 n15;
169 #define P16C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11,t12,n12,t13,n13,t14,n14,t15,n15,t16,n16) \
170 (n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16) \
171 t1 n1; t2 n2; t3 n3; t4 n4; t5 n5; t6 n6; t7 n7; t8 n8; t9 n9; t10 n10; \
172 t11 n11; t12 n12; t13 n13; t14 n14; t15 n15; t16 n16;
173 #define P17C(t1,n1,t2,n2,t3,n3,t4,n4,t5,n5,t6,n6,t7,n7,t8,n8,t9,n9,t10,n10,t11,n11,t12,n12,t13,n13,t14,n14,t15,n15,t16,n16,t17,n17) \
174 (n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17) \
175 t1 n1; t2 n2; t3 n3; t4 n4; t5 n5; t6 n6; t7 n7; t8 n8; t9 n9; t10 n10; \
176 t11 n11; t12 n12; t13 n13; t14 n14; t15 n15; t16 n16; t17 n17;
178 #endif /* not HAVE_PROTOTYPES */
180 #endif /* not KPATHSEA_C_PROTO_H */