// ================================================================= // // // // File : cb.h // // Purpose : define typesafe callback-factories for common types // // // // Coded by Ralf Westram (coder@reallysoft.de) in September 2010 // // Institute of Microbiology (Technical University Munich) // // http://www.arb-home.de/ // // // // ================================================================= // #ifndef CB_H #define CB_H #ifndef ARBDB_BASE_H #include #endif class AW_root; class AW_window; class AW_awar; // generic callback parameter (used like a void*) typedef long AW_CL; // client data (casted from pointer or value) // simplest callback flavours of each type typedef AW_window *(*CreateWindowCallbackSimple)(AW_root*); // use makeCreateWindowCallback if you need parameters typedef void (*RootCallbackSimple)(AW_root*); // use makeRootCallback if you need parameters typedef void (*WindowCallbackSimple)(AW_window*); // use makeWindowCallback if you need parameters // --------------------------- // typesafe callbacks #ifndef CBTYPES_H #include #endif // @@@ the definition of some of these cb-types may be moved into WINDOW DECLARE_CBTYPE_FVV_AND_BUILDERS(RootCallback, void, AW_root*); // generates makeRootCallback DECLARE_CBTYPE_FVV_AND_BUILDERS(TimedCallback, unsigned, AW_root*); // generates makeTimedCallback (return value: 0->do not call again, else: call again after XXX ms) DECLARE_CBTYPE_FVV_AND_BUILDERS(WindowCallback, void, AW_window*); // generates makeWindowCallback DECLARE_CBTYPE_FVV_AND_BUILDERS(CreateWindowCallback, AW_window*, AW_root*); // generates makeCreateWindowCallback DECLARE_CBTYPE_FVF_AND_BUILDERS(DatabaseCallback, void, GBDATA*, GB_CB_TYPE); // generates makeDatabaseCallback DECLARE_CBTYPE_FFV_AND_BUILDERS(TreeAwarCallback, void, AW_awar*, bool); // generates makeTreeAwarCallback // Note: For rarely used callback-types a simpler idiom can be used. // see e.g. ../../AWT/awt_modules.hxx@UNTYPED #else #error cb.h included twice #endif // CB_H