flext  0.6.0
fldefs_methcb.h
Go to the documentation of this file.
1 /*
2 flext - C++ layer for Max and Pure Data externals
3 
4 Copyright (c) 2001-2015 Thomas Grill (gr@grrrr.org)
5 For information on usage and redistribution, and for a DISCLAIMER OF ALL
6 WARRANTIES, see the file, "license.txt," in this distribution.
7 */
8 
14 #ifndef __FLEXT_DEFS_METHCB_H
15 #define __FLEXT_DEFS_METHCB_H
16 
17 
24 #define FLEXT_CALLBACK(M_FUN) \
25 static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c) \
26 { FLEXT_CAST<thisType *>(c)->M_FUN(); return true; }
27 
29 #define FLEXT_CALLBACK_A(M_FUN) \
30 static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,t_symbol *s,int argc,t_atom *argv) \
31 { FLEXT_CAST<thisType *>(c)->M_FUN(s,argc,argv); return true; }
32 
34 #define FLEXT_CALLBACK_V(M_FUN) \
35 static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,int argc,t_atom *argv) \
36 { FLEXT_CAST<thisType *>(c)->M_FUN(argc,argv); return true; }
37 
39 #define FLEXT_CALLBACK_X(M_FUN) \
40 static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,void *data) \
41 { FLEXT_CAST<thisType *>(c)->M_FUN(data); return true; }
42 
44 #define FLEXT_CALLBACK_AX(M_FUN) \
45 static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,t_symbol *s,int argc,t_atom *argv,void *data) \
46 { FLEXT_CAST<thisType *>(c)->M_FUN(s,argc,argv,data); return true; }
47 
49 #define FLEXT_CALLBACK_T(M_FUN) \
50 \
51 FLEXT_CALLBACK_X(M_FUN)
52 
54 #define FLEXT_CALLBACK_B(M_FUN) \
55 static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,int &arg1) \
56 { FLEXT_CAST<thisType *>(c)->M_FUN(arg1 != 0); return true; }
57 
59 #define FLEXT_CALLBACK_1(M_FUN,TP1) \
60 static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1) \
61 { FLEXT_CAST<thisType *>(c)->M_FUN(arg1); return true; }
62 
64 #define FLEXT_CALLBACK_2(M_FUN,TP1,TP2) \
65 static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2) \
66 { FLEXT_CAST<thisType *>(c)->M_FUN(arg1,arg2); return true; }
67 
69 #define FLEXT_CALLBACK_3(M_FUN,TP1,TP2,TP3) \
70 static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3) \
71 { FLEXT_CAST<thisType *>(c)->M_FUN(arg1,arg2,arg3); return true; }
72 
74 #define FLEXT_CALLBACK_4(M_FUN,TP1,TP2,TP3,TP4) \
75 static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3,TP4 &arg4) \
76 { FLEXT_CAST<thisType *>(c)->M_FUN(arg1,arg2,arg3,arg4); return true; }
77 
79 #define FLEXT_CALLBACK_5(M_FUN,TP1,TP2,TP3,TP4,TP5) \
80 static bool FLEXT_CALL_PRE(M_FUN)(flext_base *c,TP1 &arg1,TP2 &arg2,TP3 &arg3,TP4 &arg4,TP5 &arg5) \
81 { FLEXT_CAST<thisType *>(c)->M_FUN(arg1,arg2,arg3,arg4,arg5); return true; }
82 
83 
84 // Shortcuts
85 
87 #define FLEXT_CALLBACK_F(M_FUN) \
88 \
89 FLEXT_CALLBACK_1(M_FUN,float)
90 
92 #define FLEXT_CALLBACK_FF(M_FUN) \
93 \
94 FLEXT_CALLBACK_2(M_FUN,float,float)
95 
97 #define FLEXT_CALLBACK_FFF(M_FUN) \
98 \
99 FLEXT_CALLBACK_3(M_FUN,float,float,float)
100 
102 #define FLEXT_CALLBACK_I(M_FUN) \
103 \
104 FLEXT_CALLBACK_1(M_FUN,int)
105 
107 #define FLEXT_CALLBACK_II(M_FUN) \
108 \
109 FLEXT_CALLBACK_2(M_FUN,int,int)
110 
112 #define FLEXT_CALLBACK_III(M_FUN) \
113 \
114 FLEXT_CALLBACK_3(M_FUN,int,int,int)
115 
117 #define FLEXT_CALLBACK_S(M_FUN) \
118 \
119 FLEXT_CALLBACK_1(M_FUN,t_symptr)
120 
121 
123 #define FLEXT_CALLBACK_G FLEXT_CALLBACK_V
124 
126 
127 #endif