flext 0.6.2
fldefs_methcb.h
Go to the documentation of this file.
1/*
2flext - C++ layer for Max and Pure Data externals
3
4Copyright (c) 2001-2015 Thomas Grill (gr@grrrr.org)
5For information on usage and redistribution, and for a DISCLAIMER OF ALL
6WARRANTIES, 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) \
25static 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) \
30static 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) \
35static 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) \
40static 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) \
45static 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\
51FLEXT_CALLBACK_X(M_FUN)
52
54#define FLEXT_CALLBACK_B(M_FUN) \
55static 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) \
60static 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) \
65static 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) \
70static 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) \
75static 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) \
80static 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\
89FLEXT_CALLBACK_1(M_FUN,float)
90
92#define FLEXT_CALLBACK_FF(M_FUN) \
93\
94FLEXT_CALLBACK_2(M_FUN,float,float)
95
97#define FLEXT_CALLBACK_FFF(M_FUN) \
98\
99FLEXT_CALLBACK_3(M_FUN,float,float,float)
100
102#define FLEXT_CALLBACK_I(M_FUN) \
103\
104FLEXT_CALLBACK_1(M_FUN,int)
105
107#define FLEXT_CALLBACK_II(M_FUN) \
108\
109FLEXT_CALLBACK_2(M_FUN,int,int)
110
112#define FLEXT_CALLBACK_III(M_FUN) \
113\
114FLEXT_CALLBACK_3(M_FUN,int,int,int)
115
117#define FLEXT_CALLBACK_S(M_FUN) \
118\
119FLEXT_CALLBACK_1(M_FUN,t_symptr)
120
121
123#define FLEXT_CALLBACK_G FLEXT_CALLBACK_V
124
126
127#endif