Loading...
Searching...
No Matches
Go to the documentation of this file.
17#ifndef _FL_FL_CALLBACK_MACROS_H_
18#define _FL_FL_CALLBACK_MACROS_H_
77#define FL_FUNCTION_CALLBACK_3(WIDGET, FUNC, TYPE0, VALUE0, TYPE1, VALUE1, TYPE2, VALUE2)
122#define FL_METHOD_CALLBACK_1(WIDGET, CLASS, SELF, METH, TYPE0, VALUE0)
175#define FL_INLINE_CALLBACK_2(WIDGET, TYPE0, NAME0, VALUE0, TYPE1, NAME1, VALUE1, LAMBDA)
183#define _FL_CBD_CONCAT_IMPL(x, y) x##y
184#define _FL_CBD_CONCAT(x, y) _FL_CBD_CONCAT_IMPL(x, y)
190#define _FL_CBD_CLASS_NAME _FL_CBD_CONCAT(Fl_Callback_User_Data_,__LINE__)
230#define FL_FUNCTION_CALLBACK_5(WIDGET, FUNC, TYPE0, VALUE0, TYPE1, VALUE1, TYPE2, VALUE2, TYPE3, VALUE3, TYPE4, VALUE4) \
232 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
234 TYPE0 p0_; TYPE1 p1_; TYPE2 p2_; TYPE3 p3_; TYPE4 p4_; \
235 static void cb(Fl_Widget *w, void *user_data) { \
236 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
237 FUNC(d->p0_, d->p1_, d->p2_, d->p3_, d->p4_); \
239 _FL_CBD_CLASS_NAME(TYPE0 p0, TYPE1 p1, TYPE2 p2, TYPE3 p3, TYPE4 p4) \
240 : p0_(p0), p1_(p1), p2_(p2), p3_(p3), p4_(p4) { }; \
242 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(VALUE0, VALUE1, VALUE2, VALUE3, VALUE4), true); \
245#define FL_FUNCTION_CALLBACK_4(WIDGET, FUNC, TYPE0, VALUE0, TYPE1, VALUE1, TYPE2, VALUE2, TYPE3, VALUE3) \
247 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
249 TYPE0 p0_; TYPE1 p1_; TYPE2 p2_; TYPE3 p3_; \
250 static void cb(Fl_Widget *w, void *user_data) { \
251 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
252 FUNC(d->p0_, d->p1_, d->p2_, d->p3_); \
254 _FL_CBD_CLASS_NAME(TYPE0 p0, TYPE1 p1, TYPE2 p2, TYPE3 p3) \
255 : p0_(p0), p1_(p1), p2_(p2), p3_(p3) { }; \
257 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(VALUE0, VALUE1, VALUE2, VALUE3), true); \
260#define FL_FUNCTION_CALLBACK_3(WIDGET, FUNC, TYPE0, VALUE0, TYPE1, VALUE1, TYPE2, VALUE2) \
262 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
264 TYPE0 p0_; TYPE1 p1_; TYPE2 p2_; \
265 static void cb(Fl_Widget *w, void *user_data) { \
266 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
267 FUNC(d->p0_, d->p1_, d->p2_); \
269 _FL_CBD_CLASS_NAME(TYPE0 p0, TYPE1 p1, TYPE2 p2) \
270 : p0_(p0), p1_(p1), p2_(p2) { }; \
272 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(VALUE0, VALUE1, VALUE2), true); \
275#define FL_FUNCTION_CALLBACK_2(WIDGET, FUNC, TYPE0, VALUE0, TYPE1, VALUE1) \
277 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
279 TYPE0 p0_; TYPE1 p1_; \
280 static void cb(Fl_Widget *w, void *user_data) { \
281 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
282 FUNC(d->p0_, d->p1_); \
284 _FL_CBD_CLASS_NAME(TYPE0 p0, TYPE1 p1) \
285 : p0_(p0), p1_(p1) { }; \
287 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(VALUE0, VALUE1), true); \
290#define FL_FUNCTION_CALLBACK_1(WIDGET, FUNC, TYPE0, VALUE0) \
292 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
295 static void cb(Fl_Widget *w, void *user_data) { \
296 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
299 _FL_CBD_CLASS_NAME(TYPE0 p0) \
302 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(VALUE0), true); \
305#define FL_FUNCTION_CALLBACK_0(WIDGET, FUNC) \
307 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
309 static void cb(Fl_Widget *w, void *user_data) { \
312 _FL_CBD_CLASS_NAME() { }; \
314 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(), true); \
360#define FL_METHOD_CALLBACK_5(WIDGET, CLASS, SELF, METHOD, TYPE0, VALUE0, TYPE1, VALUE1, TYPE2, VALUE2, TYPE3, VALUE3, TYPE4, VALUE4) \
362 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
365 TYPE0 p0_; TYPE1 p1_; TYPE2 p2_; TYPE3 p3_; TYPE4 p4_; \
366 static void cb(Fl_Widget *w, void *user_data) { \
367 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
368 d->self_->METHOD(d->p0_, d->p1_, d->p2_, d->p3_, d->p4_); \
370 _FL_CBD_CLASS_NAME(CLASS *self, TYPE0 p0, TYPE1 p1, TYPE2 p2, TYPE3 p3, TYPE4 p4) \
371 : self_(self), p0_(p0), p1_(p1), p2_(p2), p3_(p3), p4_(p4) { }; \
373 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(SELF, VALUE0, VALUE1, VALUE2, VALUE3, VALUE4), true); \
376#define FL_METHOD_CALLBACK_4(WIDGET, CLASS, SELF, METHOD, TYPE0, VALUE0, TYPE1, VALUE1, TYPE2, VALUE2, TYPE3, VALUE3) \
378 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
381 TYPE0 p0_; TYPE1 p1_; TYPE2 p2_; TYPE3 p3_; \
382 static void cb(Fl_Widget *w, void *user_data) { \
383 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
384 d->self_->METHOD(d->p0_, d->p1_, d->p2_, d->p3_); \
386 _FL_CBD_CLASS_NAME(CLASS *self, TYPE0 p0, TYPE1 p1, TYPE2 p2, TYPE3 p3) \
387 : self_(self), p0_(p0), p1_(p1), p2_(p2), p3_(p3) { }; \
389 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(SELF, VALUE0, VALUE1, VALUE2, VALUE3), true); \
392#define FL_METHOD_CALLBACK_3(WIDGET, CLASS, SELF, METHOD, TYPE0, VALUE0, TYPE1, VALUE1, TYPE2, VALUE2) \
394 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
397 TYPE0 p0_; TYPE1 p1_; TYPE2 p2_; \
398 static void cb(Fl_Widget *w, void *user_data) { \
399 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
400 d->self_->METHOD(d->p0_, d->p1_, d->p2_); \
402 _FL_CBD_CLASS_NAME(CLASS *self, TYPE0 p0, TYPE1 p1, TYPE2 p2) \
403 : self_(self), p0_(p0), p1_(p1), p2_(p2) { }; \
405 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(SELF, VALUE0, VALUE1, VALUE2), true); \
408#define FL_METHOD_CALLBACK_2(WIDGET, CLASS, SELF, METHOD, TYPE0, VALUE0, TYPE1, VALUE1) \
410 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
413 TYPE0 p0_; TYPE1 p1_; \
414 static void cb(Fl_Widget *w, void *user_data) { \
415 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
416 d->self_->METHOD(d->p0_, d->p1_); \
418 _FL_CBD_CLASS_NAME(CLASS *self, TYPE0 p0, TYPE1 p1) \
419 : self_(self), p0_(p0), p1_(p1) { }; \
421 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(SELF, VALUE0, VALUE1), true); \
424#define FL_METHOD_CALLBACK_1(WIDGET, CLASS, SELF, METHOD, TYPE0, VALUE0) \
426 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
430 static void cb(Fl_Widget *w, void *user_data) { \
431 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
432 d->self_->METHOD(d->p0_); \
434 _FL_CBD_CLASS_NAME(CLASS *self, TYPE0 p0) \
435 : self_(self), p0_(p0) { }; \
437 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(SELF, VALUE0), true); \
440#define FL_METHOD_CALLBACK_0(WIDGET, CLASS, SELF, METHOD) \
442 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
445 static void cb(Fl_Widget *w, void *user_data) { \
446 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
447 d->self_->METHOD(); \
449 _FL_CBD_CLASS_NAME(CLASS *self) \
452 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(SELF), true); \
506#define FL_INLINE_CALLBACK_5(WIDGET, TYPE0, NAME0, VALUE0, TYPE1, NAME1, VALUE1, TYPE2, NAME2, VALUE2, TYPE3, NAME3, VALUE3, TYPE4, NAME4, VALUE4, LAMBDA) \
508 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
510 TYPE0 p0_; TYPE1 p1_; TYPE2 p2_; TYPE3 p3_; TYPE4 p4_; \
511 static void fn(TYPE0 NAME0, TYPE1 NAME1, TYPE2 NAME2, TYPE3 NAME3, TYPE4 NAME4) \
513 static void cb(Fl_Widget *w, void *user_data) { \
514 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
515 _FL_CBD_CLASS_NAME::fn(d->p0_, d->p1_, d->p2_, d->p3_, d->p4_); \
517 _FL_CBD_CLASS_NAME(TYPE0 p0, TYPE1 p1, TYPE2 p2, TYPE3 p3, TYPE4 p4) \
518 : p0_(p0), p1_(p1), p2_(p2), p3_(p3), p4_(p4) { }; \
520 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(VALUE0, VALUE1, VALUE2, VALUE3, VALUE4), true); \
523#define FL_INLINE_CALLBACK_4(WIDGET, TYPE0, NAME0, VALUE0, TYPE1, NAME1, VALUE1, TYPE2, NAME2, VALUE2, TYPE3, NAME3, VALUE3, LAMBDA) \
525 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
527 TYPE0 p0_; TYPE1 p1_; TYPE2 p2_; TYPE3 p3_; \
528 static void fn(TYPE0 NAME0, TYPE1 NAME1, TYPE2 NAME2, TYPE3 NAME3) \
530 static void cb(Fl_Widget *w, void *user_data) { \
531 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
532 _FL_CBD_CLASS_NAME::fn(d->p0_, d->p1_, d->p2_, d->p3_); \
534 _FL_CBD_CLASS_NAME(TYPE0 p0, TYPE1 p1, TYPE2 p2, TYPE3 p3) \
535 : p0_(p0), p1_(p1), p2_(p2), p3_(p3) { }; \
537 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(VALUE0, VALUE1, VALUE2, VALUE3), true); \
540#define FL_INLINE_CALLBACK_3(WIDGET, TYPE0, NAME0, VALUE0, TYPE1, NAME1, VALUE1, TYPE2, NAME2, VALUE2, LAMBDA) \
542 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
544 TYPE0 p0_; TYPE1 p1_; TYPE2 p2_; \
545 static void fn(TYPE0 NAME0, TYPE1 NAME1, TYPE2 NAME2) \
547 static void cb(Fl_Widget *w, void *user_data) { \
548 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
549 _FL_CBD_CLASS_NAME::fn(d->p0_, d->p1_, d->p2_); \
551 _FL_CBD_CLASS_NAME(TYPE0 p0, TYPE1 p1, TYPE2 p2) \
552 : p0_(p0), p1_(p1), p2_(p2) { }; \
554 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(VALUE0, VALUE1, VALUE2), true); \
557#define FL_INLINE_CALLBACK_2(WIDGET, TYPE0, NAME0, VALUE0, TYPE1, NAME1, VALUE1, LAMBDA) \
559 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
561 TYPE0 p0_; TYPE1 p1_; \
562 static void fn(TYPE0 NAME0, TYPE1 NAME1) \
564 static void cb(Fl_Widget *w, void *user_data) { \
565 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
566 _FL_CBD_CLASS_NAME::fn(d->p0_, d->p1_); \
568 _FL_CBD_CLASS_NAME(TYPE0 p0, TYPE1 p1) \
569 : p0_(p0), p1_(p1) { }; \
571 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(VALUE0, VALUE1), true); \
574#define FL_INLINE_CALLBACK_1(WIDGET, TYPE0, NAME0, VALUE0, LAMBDA) \
576 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
579 static void fn(TYPE0 NAME0) \
581 static void cb(Fl_Widget *w, void *user_data) { \
582 _FL_CBD_CLASS_NAME *d = (_FL_CBD_CLASS_NAME*)user_data; \
583 _FL_CBD_CLASS_NAME::fn(d->p0_); \
585 _FL_CBD_CLASS_NAME(TYPE0 p0) \
588 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(VALUE0), true); \
591#define FL_INLINE_CALLBACK_0(WIDGET, LAMBDA) \
593 class _FL_CBD_CLASS_NAME : public Fl_Callback_User_Data { \
597 static void cb(Fl_Widget *w, void *user_data) { \
598 _FL_CBD_CLASS_NAME::fn(); \
600 _FL_CBD_CLASS_NAME() { }; \
602 WIDGET->callback(_FL_CBD_CLASS_NAME::cb, new _FL_CBD_CLASS_NAME(), true); \