]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/translator.icc
Issue 4835: Move Callback_wrapper class to separate file and simplify
[lilypond.git] / lily / include / translator.icc
index 7fc128fe72f68d732fa448f9a42d4755fc17e7c3..250a92313724f9ab1a7afb0778085dcb7f9eb73b 100644 (file)
@@ -20,7 +20,7 @@
 #ifndef TRANSLATOR_ICC
 #define TRANSLATOR_ICC
 
-#include "listener.hh"
+#include "callback.hh"
 #include "std-vector.hh"
 #include "translator.hh"
 
     return Translator::static_translator_description (grobs, desc, listener_list_, read, write); \
   }
 
-#define ADD_TRANSLATOR(classname, desc, grobs, read, write)             \
+#define ADD_TRANSLATOR_FAMILY(classname)                                \
   IMPLEMENT_FETCH_PRECOMPUTABLE_METHODS (classname);                    \
+  DEFINE_ACKNOWLEDGERS(classname)                                       \
+
+#define ADD_TRANSLATOR(classname, desc, grobs, read, write)             \
+  ADD_TRANSLATOR_FAMILY (classname)                                     \
   ADD_THIS_TRANSLATOR (classname);                                      \
   DEFINE_TRANSLATOR_DOC(classname, desc, grobs, read, write)            \
-  DEFINE_ACKNOWLEDGERS(classname) \
-  DEFINE_TRANSLATOR_LISTENER_LIST(classname) \
+  DEFINE_TRANSLATOR_LISTENER_LIST(classname)                            \
 
 #define IMPLEMENT_FETCH_PRECOMPUTABLE_METHODS(T)                        \
   void                                                                  \
@@ -137,8 +140,8 @@ cl :: _internal_declare_ ## m ()                        \
 {                                                       \
   listener_list_ = scm_acons                                            \
     (event_class_symbol (#m),                                           \
-     Callback_wrapper::make_smob<cl, Stream_event *, &cl::listen_ ## m> (), \
-     listener_list_);                                                   \
+     Callback_wrapper::make_smob                                        \
+     <trampoline <cl, &cl::listen_ ## m> > (), listener_list_);         \
 }                                                                       \
                                                                         \
 ADD_SCM_INIT_FUNC (cl ## _declare_event_ ## m, cl::_internal_declare_ ## m);