]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 4351/1: Rename Engraver_void_function_engraver_grob_info to Translator::Grob_in...
authorDavid Kastrup <dak@gnu.org>
Mon, 20 Apr 2015 12:41:15 +0000 (14:41 +0200)
committerDavid Kastrup <dak@gnu.org>
Mon, 27 Apr 2015 15:06:59 +0000 (17:06 +0200)
This is somewhat more descriptive.  Since the general dispatcher
management is done in Translator rather than Engraver, making this
typedef local to Engraver instead would really complicate things.

lily/include/lily-proto.hh
lily/include/translator-dispatch-list.hh
lily/include/translator.hh
lily/include/translator.icc
lily/translator-dispatch-list.cc
lily/translator.cc

index 6a69e371dbf74147521aa437837efbb0ae1d2053..98c805ad2ca8335c1b53c200a4b2f6e9ed38b1dd 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "flower-proto.hh"
 
+class Acknowledge_information;
 class All_font_metrics;
 class Audio_column;
 class Audio_control_function_value_change;
@@ -172,7 +173,6 @@ class Timing_translator;
 class Translator;
 class Translator_group;
 
-typedef void (Engraver::*Engraver_void_function_engraver_grob_info) (Grob_info);
 typedef void (Translator::*Translator_void_method_ptr) ();
 
 #endif /* LILY_PROTO_HH */
index ee109db6b22b2d8da7c0f120b2476d83ae3959c9..6c365d088effb2540559b99b2445849cc952e7b8 100644 (file)
 #include "lily-proto.hh"
 #include "std-vector.hh"
 #include "smobs.hh"
+#include "translator.hh"
 
 struct Engraver_dispatch_entry
 {
   Engraver *engraver_;
-  Engraver_void_function_engraver_grob_info function_;
+  Translator::Grob_info_callback function_;
 };
 
 class Engraver_dispatch_list : public Simple_smob<Engraver_dispatch_list>
index d342d3363cbcfb03c1159c1d57eb894f287a85d7..92f411d5086c5e68f73be9112cf7762feef8848f 100644 (file)
 #include "std-vector.hh"
 #include "protected-scm.hh"
 
-struct Acknowledge_information
-{
-  SCM symbol_;
-  Engraver_void_function_engraver_grob_info function_;
-
-  Acknowledge_information ()
-  {
-    symbol_ = SCM_EOL;
-    function_ = 0;
-  }
-};
-
 /*
   Each translator class has a static list of listener records. Each
   record makes one explains how to register one of the class's stream event
@@ -61,7 +49,6 @@ typedef struct translator_listener_record
 } translator_listener_record;
 
 #define TRANSLATOR_DECLARATIONS_NO_LISTENER(NAME)                       \
-private:                                                                \
   public:                                                               \
   NAME ();                                                              \
   VIRTUAL_COPY_CONSTRUCTOR (Translator, NAME);                          \
@@ -70,13 +57,13 @@ private:                                                                \
   virtual void fetch_precomputable_methods (Translator_void_method_ptr methods[]); \
   virtual SCM static_translator_description () const;                   \
   virtual SCM translator_description () const;                          \
-  static Engraver_void_function_engraver_grob_info static_get_acknowledger (SCM sym); \
-  static Engraver_void_function_engraver_grob_info static_get_end_acknowledger(SCM); \
-  virtual Engraver_void_function_engraver_grob_info get_acknowledger (SCM sym) \
+  static Grob_info_callback static_get_acknowledger (SCM sym);          \
+  static Grob_info_callback static_get_end_acknowledger(SCM);           \
+  virtual Grob_info_callback get_acknowledger (SCM sym)                 \
   {                                                                     \
     return static_get_acknowledger (sym);                               \
   }                                                                     \
-  virtual Engraver_void_function_engraver_grob_info get_end_acknowledger (SCM sym) \
+  virtual Grob_info_callback get_end_acknowledger (SCM sym)             \
   {                                                                     \
     return static_get_end_acknowledger (sym);                           \
   } \
@@ -120,6 +107,10 @@ enum Translator_precompute_index
 class Translator : public Smob<Translator>
 {
 public:
+  // We don't make Grob_info_callback specific to Engraver since we
+  // otherwise get into a circular mess with regard to the definitions
+  // as the timing of Engraver is exercised from within Translator
+  typedef void (Translator::*Grob_info_callback) (Grob_info);
   int print_smob (SCM, scm_print_state *);
   SCM mark_smob ();
   static const char type_p_name_[];
@@ -172,6 +163,19 @@ protected:                      // should be private.
   friend class Translator_group;
 };
 
+struct Acknowledge_information
+{
+  SCM symbol_;
+  Translator::Grob_info_callback function_;
+
+  Acknowledge_information ()
+  {
+    symbol_ = SCM_EOL;
+    function_ = 0;
+  }
+};
+
+
 void add_translator (Translator *trans);
 
 Translator *get_translator (SCM s);
index 0362b5b6c5971e5a04458464507a70ec9168821f..114cda85ab47adcb106bbe3c3909883e4f1ade50 100644 (file)
@@ -1,4 +1,4 @@
-/*
+/* -*- c++ -*-
   This file is part of LilyPond, the GNU music typesetter.
 
   Copyright (C) 2005--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 #define DEFINE_ACKNOWLEDGERS(classname) \
   Drul_array< vector<Acknowledge_information> > classname::acknowledge_static_array_drul_;      \
-  Engraver_void_function_engraver_grob_info                             \
+  Translator::Grob_info_callback                                        \
   classname::static_get_acknowledger (SCM sym)                          \
   {                                                                     \
     return generic_get_acknowledger (sym, &acknowledge_static_array_drul_[START]);      \
   }                                                                     \
-  Engraver_void_function_engraver_grob_info                             \
-  classname::static_get_end_acknowledger (SCM sym)                              \
+  Translator::Grob_info_callback                                        \
+  classname::static_get_end_acknowledger (SCM sym)                      \
   {                                                                     \
     return generic_get_acknowledger (sym, &acknowledge_static_array_drul_[STOP]);       \
   }                                                                     \
       : (Translator_void_method_ptr) & T::process_acknowledged;         \
   }
 
-void add_acknowledger (Engraver_void_function_engraver_grob_info ptr,
+void add_acknowledger (Translator::Grob_info_callback ptr,
                        char const *func_name,
                        vector<Acknowledge_information> *ack_array);
 
-Engraver_void_function_engraver_grob_info
+Translator::Grob_info_callback
 generic_get_acknowledger (SCM sym,
                           vector<Acknowledge_information> const *ack_array);
 
 #define ADD_ACKNOWLEDGER(CLASS, NAME)                                   \
   void CLASS ## NAME ## _ack_adder ()                                   \
   {                                                                     \
-    add_acknowledger ((Engraver_void_function_engraver_grob_info) & CLASS::acknowledge_ ## NAME, #NAME, &CLASS::acknowledge_static_array_drul_[START]); \
+    add_acknowledger (static_cast<Translator::Grob_info_callback> (&CLASS::acknowledge_ ## NAME), #NAME, &CLASS::acknowledge_static_array_drul_[START]); \
   }                                                                     \
   ADD_SCM_INIT_FUNC (CLASS ## NAME ## _ack_adder_initclass, CLASS ## NAME ## _ack_adder);
 
 #define ADD_END_ACKNOWLEDGER(CLASS, NAME)                                       \
   void CLASS ## NAME ## _end_ack_adder ()                                       \
   {                                                                     \
-    add_acknowledger ((Engraver_void_function_engraver_grob_info) & CLASS::acknowledge_end_ ## NAME, #NAME, &CLASS::acknowledge_static_array_drul_[STOP]); \
+    add_acknowledger (static_cast<Translator::Grob_info_callback> (&CLASS::acknowledge_end_ ## NAME), #NAME, &CLASS::acknowledge_static_array_drul_[STOP]); \
   }                                                                     \
   ADD_SCM_INIT_FUNC (CLASS ## NAME ## _end_ack_adder_initclass, CLASS ## NAME ## _end_ack_adder);
 
index 5174bb33d3859129ab6386520b36e4e61ef07f1c..ed968c571a5d504484cd99b1951af5b3b14b7c38 100644 (file)
@@ -55,7 +55,7 @@ Engraver_dispatch_list::create (SCM trans_list,
       entry.engraver_ = eng;
       for (SCM i = iface_list; scm_is_pair (i); i = scm_cdr (i))
         {
-          Engraver_void_function_engraver_grob_info ptr
+          Translator::Grob_info_callback ptr
             = (start_end == START)
               ? eng->get_acknowledger (scm_car (i))
               : eng->get_end_acknowledger (scm_car (i));
index ca96aa5429e2c696732520150f4b204706f65b41..d6874ef78ca35d90a0e4a088405183961f17870c 100644 (file)
@@ -240,7 +240,7 @@ Translator::print_smob (SCM port, scm_print_state *)
 }
 
 void
-add_acknowledger (Engraver_void_function_engraver_grob_info ptr,
+add_acknowledger (Translator::Grob_info_callback ptr,
                   char const *func_name,
                   vector<Acknowledge_information> *ack_array)
 {
@@ -259,7 +259,7 @@ add_acknowledger (Engraver_void_function_engraver_grob_info ptr,
   ack_array->push_back (inf);
 }
 
-Engraver_void_function_engraver_grob_info
+Translator::Grob_info_callback
 generic_get_acknowledger (SCM sym, vector<Acknowledge_information> const *ack_array)
 {
   for (vsize i = 0; i < ack_array->size (); i++)