From: David Kastrup Date: Mon, 20 Apr 2015 12:41:15 +0000 (+0200) Subject: Issue 4351/1: Rename Engraver_void_function_engraver_grob_info to Translator::Grob_in... X-Git-Tag: release/2.19.20-1~33^2~4 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=20a1118d86072c27a1f3eacbaa888c4ee3287ec6;p=lilypond.git Issue 4351/1: Rename Engraver_void_function_engraver_grob_info to Translator::Grob_info_callback 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. --- diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 6a69e371db..98c805ad2c 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -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 */ diff --git a/lily/include/translator-dispatch-list.hh b/lily/include/translator-dispatch-list.hh index ee109db6b2..6c365d088e 100644 --- a/lily/include/translator-dispatch-list.hh +++ b/lily/include/translator-dispatch-list.hh @@ -23,11 +23,12 @@ #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 diff --git a/lily/include/translator.hh b/lily/include/translator.hh index d342d3363c..92f411d508 100644 --- a/lily/include/translator.hh +++ b/lily/include/translator.hh @@ -28,18 +28,6 @@ #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 { 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); diff --git a/lily/include/translator.icc b/lily/include/translator.icc index 0362b5b6c5..114cda85ab 100644 --- a/lily/include/translator.icc +++ b/lily/include/translator.icc @@ -1,4 +1,4 @@ -/* +/* -*- c++ -*- This file is part of LilyPond, the GNU music typesetter. Copyright (C) 2005--2015 Han-Wen Nienhuys @@ -53,13 +53,13 @@ #define DEFINE_ACKNOWLEDGERS(classname) \ Drul_array< vector > 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]); \ } \ @@ -105,25 +105,25 @@ : (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 *ack_array); -Engraver_void_function_engraver_grob_info +Translator::Grob_info_callback generic_get_acknowledger (SCM sym, vector 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 (&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 (&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); diff --git a/lily/translator-dispatch-list.cc b/lily/translator-dispatch-list.cc index 5174bb33d3..ed968c571a 100644 --- a/lily/translator-dispatch-list.cc +++ b/lily/translator-dispatch-list.cc @@ -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)); diff --git a/lily/translator.cc b/lily/translator.cc index ca96aa5429..d6874ef78c 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -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 *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 const *ack_array) { for (vsize i = 0; i < ack_array->size (); i++)