removed wrong INLINE
[libfirm] / ir / adt / impl.h
1 /**
2  * Some macros for wrapper function implementation.
3  * @author Sebastian Hack
4  * @date 9.12.2004
5  */
6
7 #ifndef _IMPL_H
8 #define _IMPL_H
9
10 #define _HEAD1(name,res,t1) \
11         res (name)(t1 p1)
12
13 #define _HEAD2(name,res,t1,t2) \
14         res (name)(t1 p1, t2 p2)
15
16 #define _HEAD3(name,res,t1,t2,t3) \
17         res (name)(t1 p1, t2 p2, t3 p3)
18
19 #define _HEAD4(name,res,t1,t2,t3,t4) \
20         res (name)(t1 p1, t2 p2, t3 p3, t4 p4)
21
22
23 #define _IMPL1(name,prefix,ret,res,t1) \
24 _HEAD1(name, res, t1) { \
25         ret prefix ## name (p1); \
26 }
27
28 #define _IMPL2(name,prefix,ret,res,t1,t2) \
29 _HEAD2(name, res, t1, t2) { \
30         ret prefix ## name (p1, p2); \
31 }
32
33 #define _IMPL3(name,prefix,ret,res,t1,t2,t3) \
34 _HEAD3(name, res, t1, t2, t3) { \
35         ret prefix ## name (p1, p2, p3); \
36 }
37
38 #define _IMPL4(name,prefix,ret,res,t1,t2,t3,t4) \
39 _HEAD4(name, res, t1, t2, t3, t4) { \
40         ret prefix ## name (p1, p2, p3, p4); \
41 }
42
43 #define IMPL1_VOID(name,prefix,t1) \
44   _IMPL1(name, prefix, (void), void, t1)
45
46 #define IMPL2_VOID(name,prefix,t1,t2) \
47   _IMPL2(name, prefix, (void), void, t1, t2)
48
49 #define IMPL3_VOID(name,prefix,t1,t2,t3) \
50   _IMPL3(name, prefix, (void), void, t1, t2, t3)
51
52 #define IMPL4_VOID(name,prefix,t1,t2,t3,t4) \
53   _IMPL4(name, prefix, (void), void, t1, t2, t3, t4)
54
55
56 #define IMPL1(name,type,prefix,t1) \
57   _IMPL1(name, prefix, return, type, t1)
58
59 #define IMPL2(name,type,prefix,t1,t2) \
60   _IMPL2(name, prefix, return, type, t1, t2)
61
62 #define IMPL3(name,type,prefix,t1,t2,t3) \
63   _IMPL3(name, prefix, return, type, t1, t2, t3)
64
65 #define IMPL4(name,type,prefix,t1,t2,t3,t4) \
66   _IMPL4(name, prefix, return, type, t1, t2, t3, t4)
67
68
69 #define FIRM_IMPL1(name,type,t1) \
70   _IMPL1(name, __, return, type, t1)
71
72 #define FIRM_IMPL2(name,type,t1,t2) \
73   _IMPL2(name, __, return, type, t1, t2)
74
75 #define FIRM_IMPL3(name,type,t1,t2,t3) \
76   _IMPL3(name, __, return, type, t1, t2, t3)
77
78 #define FIRM_IMPL4(name,type,t1,t2,t3,t4) \
79   _IMPL4(name, __, return, type, t1, t2, t3, t4)
80
81
82 #define FIRM_IMPL1_VOID(name,t1) \
83   _IMPL1(name, __, (void), void, t1)
84
85 #define FIRM_IMPL2_VOID(name,t1,t2) \
86   _IMPL2(name, __, (void), void, t1, t2)
87
88 #define FIRM_IMPL3_VOID(name,t1,t2,t3) \
89   _IMPL3(name, __, (void), void, t1, t2, t3)
90
91 #define FIRM_IMPL4_VOID(name,t1,t2,t3,t4) \
92   _IMPL4(name, __, (void), void, t1, t2, t3, t4)
93
94 #define FIRM_PROTO1(name,type,t1)                                               _HEAD1(name, type, t1)
95 #define FIRM_PROTO2(name,type,t1,t2)                                    _HEAD2(name, type, t1, t2)
96 #define FIRM_PROTO3(name,type,t1,t2,t3)                         _HEAD3(name, type, t1, t2, t3)
97 #define FIRM_PROTO4(name,type,t1,t2,t3,t4)              _HEAD4(name, type, t1, t2, t3, t4)
98
99 #endif