2 * Some macros for facade function implementation.
3 * @author Sebastian Hack
10 #define _IMPL1(name,prefix,ret,res,t1) \
12 ret prefix ## name (p1); \
15 #define _IMPL2(name,prefix,ret,res,t1,t2) \
16 res name (t1 p1, t2 p2) { \
17 ret prefix ## name (p1, p2); \
20 #define _IMPL3(name,prefix,ret,res,t1,t2,t3) \
21 res name (t1 p1, t2 p2, t3 p3) { \
22 ret prefix ## name (p1, p2, p3); \
25 #define _IMPL4(name,prefix,ret,res,t1,t2,t3,t4) \
26 res name (t1 p1, t2 p2, t3 p3, t4 p4) { \
27 ret prefix ## name (p1, p2, p3, p4); \
30 #define IMPL1_VOID(name,prefix,t1) \
31 _IMPL1(name, prefix, (void), void, t1)
33 #define IMPL2_VOID(name,prefix,t1,t2) \
34 _IMPL2(name, prefix, (void), void, t1, t2)
36 #define IMPL3_VOID(name,prefix,t1,t2,t3) \
37 _IMPL3(name, prefix, (void), void, t1, t2, t3)
39 #define IMPL4_VOID(name,prefix,t1,t2,t3,t4) \
40 _IMPL4(name, prefix, (void), void, t1, t2, t3, t4)
43 #define IMPL1(name,type,prefix,t1) \
44 _IMPL1(name, prefix, return, type, t1)
46 #define IMPL2(name,type,prefix,t1,t2) \
47 _IMPL2(name, prefix, return, type, t1, t2)
49 #define IMPL3(name,type,prefix,t1,t2,t3) \
50 _IMPL3(name, prefix, return, type, t1, t2, t3)
52 #define IMPL4(name,type,prefix,t1,t2,t3,t4) \
53 _IMPL4(name, prefix, return, type, t1, t2, t3, t4)
56 #define FIRM_IMPL1(name,type,t1) \
57 _IMPL1(name, __, return, type, t1, p1)
59 #define FIRM_IMPL2(name,type,t1,t2) \
60 _IMPL2(name, __, return, type, t1, t2)
62 #define FIRM_IMPL3(name,type,t1,t2,t3) \
63 _IMPL3(name, __, return, type, t1, t2, t3)
65 #define FIRM_IMPL4(name,type,t1,t2,t3,t4) \
66 _IMPL4(name, __, return, type, t1, t2, t3, t4)
69 #define FIRM_IMPL1_VOID(name,t1) \
70 _IMPL1(name, __, (void), void, p1)
72 #define FIRM_IMPL2_VOID(name,t1,t2) \
73 _IMPL2(name, __, (void), void, t1, t2)
75 #define FIRM_IMPL3_VOID(name,t1,t2,t3) \
76 _IMPL3(name, __, (void), void, t1, t2, t3)
78 #define FIRM_IMPL4_VOID(name,t1,t2,t3,t4) \
79 _IMPL4(name, __, (void), void, t1, t2, t3, t4)