CVSROOT: /cvsroot/lilypond Module name: lilypond Branch: Changes by: Han-Wen Nienhuys <[EMAIL PROTECTED]> 05/07/19 00:41:14
Modified files: . : ChangeLog lily : dynamic-performer.cc grob-smob.cc item.cc note-head.cc spanner.cc system.cc lily/include : grob.hh item.hh spanner.hh system.hh translator.hh translator.icc Log message: * lily/include/translator.icc (IMPLEMENT_FETCH_PRECOMPUTABLE_METHODS): directly jump into Translator methods, without _static helper. * lily/grob-smob.cc (derived_mark): rename from do_derived_mark(). Don't return SCM. * lily/item.cc (handle_prebroken_dependencies): use a vector of 3 booleans for break-visibility. * lily/include/translator.icc: new file. * lily/include/translator.hh (class Translator): rename process_acknowledged_grobs() to process_acknowledged() and move to Translator. * lily/note-head.cc (internal_print): only call glyph-name-procedure if style != default. 3 % speed increase (wtk2-fugue1). CVSWeb URLs: http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.3889&tr2=1.3890&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/dynamic-performer.cc.diff?tr1=1.43&tr2=1.44&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/grob-smob.cc.diff?tr1=1.1&tr2=1.2&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/item.cc.diff?tr1=1.117&tr2=1.118&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/note-head.cc.diff?tr1=1.144&tr2=1.145&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/spanner.cc.diff?tr1=1.134&tr2=1.135&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/system.cc.diff?tr1=1.109&tr2=1.110&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/grob.hh.diff?tr1=1.60&tr2=1.61&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/item.hh.diff?tr1=1.57&tr2=1.58&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/spanner.hh.diff?tr1=1.75&tr2=1.76&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/system.hh.diff?tr1=1.20&tr2=1.21&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/translator.hh.diff?tr1=1.86&tr2=1.87&r1=text&r2=text http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/translator.icc.diff?tr1=1.1&tr2=1.2&r1=text&r2=text Patches: Index: lilypond/ChangeLog diff -u lilypond/ChangeLog:1.3889 lilypond/ChangeLog:1.3890 --- lilypond/ChangeLog:1.3889 Tue Jul 19 00:08:00 2005 +++ lilypond/ChangeLog Tue Jul 19 00:41:14 2005 @@ -1,5 +1,12 @@ 2005-07-19 Han-Wen Nienhuys <[EMAIL PROTECTED]> + * lily/include/translator.icc + (IMPLEMENT_FETCH_PRECOMPUTABLE_METHODS): directly jump into + Translator methods, without _static helper. + + * lily/grob-smob.cc (derived_mark): rename from + do_derived_mark(). Don't return SCM. + * scm/define-context-properties.scm (all-internal-translation-properties): remove tweakCount/tweakRank. Index: lilypond/lily/dynamic-performer.cc diff -u lilypond/lily/dynamic-performer.cc:1.43 lilypond/lily/dynamic-performer.cc:1.44 --- lilypond/lily/dynamic-performer.cc:1.43 Mon Jul 18 23:37:24 2005 +++ lilypond/lily/dynamic-performer.cc Tue Jul 19 00:41:14 2005 @@ -10,6 +10,8 @@ #include "audio-item.hh" #include "music.hh" +#include "translator.icc" + /* TODO: @@ -23,25 +25,25 @@ public: TRANSLATOR_DECLARATIONS (Dynamic_performer); protected: - virtual bool try_music (Music *req); + virtual bool try_music (Music *event); PRECOMPUTED_VIRTUAL void stop_translation_timestep (); virtual void create_audio_elements (); private: - Music *script_req_; + Music *script_event_; Audio_dynamic *audio_; }; Dynamic_performer::Dynamic_performer () { - script_req_ = 0; + script_event_ = 0; audio_ = 0; } void Dynamic_performer::create_audio_elements () { - if (script_req_) + if (script_event_) { SCM proc = get_property ("dynamicAbsoluteVolumeFunction"); @@ -49,7 +51,7 @@ if (ly_is_procedure (proc)) { // urg - svolume = scm_call_1 (proc, script_req_->get_property ("text")); + svolume = scm_call_1 (proc, script_event_->get_property ("text")); } Real volume = robust_scm2double (svolume, 0.5); @@ -95,9 +97,9 @@ } audio_ = new Audio_dynamic (volume); - Audio_element_info info (audio_, script_req_); + Audio_element_info info (audio_, script_event_); announce_element (info); - script_req_ = 0; + script_event_ = 0; } } @@ -114,18 +116,16 @@ bool Dynamic_performer::try_music (Music *r) { - if (!script_req_) + if (!script_event_) { if (r->is_mus_type ("absolute-dynamic-event")) // fixme. { - script_req_ = r; + script_event_ = r; return true; } } return false; } - -#include "translator.icc" ADD_TRANSLATOR (Dynamic_performer, /*descr*/ "", Index: lilypond/lily/grob-smob.cc diff -u lilypond/lily/grob-smob.cc:1.1 lilypond/lily/grob-smob.cc:1.2 --- lilypond/lily/grob-smob.cc:1.1 Sat Jul 16 13:25:52 2005 +++ lilypond/lily/grob-smob.cc Tue Jul 19 00:41:14 2005 @@ -16,6 +16,7 @@ IMPLEMENT_SMOBS (Grob); IMPLEMENT_DEFAULT_EQUAL_P (Grob); +IMPLEMENT_TYPE_P (Grob, "ly:grob?"); SCM Grob::mark_smob (SCM ses) @@ -45,7 +46,7 @@ if (s->pscore_) scm_gc_mark (s->pscore_->self_scm ()); - s->do_derived_mark (); + s->derived_mark (); scm_gc_mark (s->object_alist_); scm_gc_mark (s->interfaces_); @@ -65,11 +66,7 @@ return 1; } -SCM -Grob::do_derived_mark () const +void +Grob::derived_mark () const { - return SCM_EOL; } - -IMPLEMENT_TYPE_P (Grob, "ly:grob?"); - Index: lilypond/lily/include/grob.hh diff -u lilypond/lily/include/grob.hh:1.60 lilypond/lily/include/grob.hh:1.61 --- lilypond/lily/include/grob.hh:1.60 Sat Jul 16 12:23:33 2005 +++ lilypond/lily/include/grob.hh Tue Jul 19 00:41:14 2005 @@ -100,7 +100,7 @@ virtual void do_break_processing (); virtual Grob *find_broken_piece (System *) const; virtual void discretionary_processing (); - virtual SCM do_derived_mark () const; + virtual void derived_mark () const; Stencil *get_stencil () const; SCM get_uncached_stencil () const; Index: lilypond/lily/include/item.hh diff -u lilypond/lily/include/item.hh:1.57 lilypond/lily/include/item.hh:1.58 --- lilypond/lily/include/item.hh:1.57 Thu Mar 10 14:36:12 2005 +++ lilypond/lily/include/item.hh Tue Jul 19 00:41:14 2005 @@ -41,7 +41,7 @@ protected: virtual void discretionary_processing (); void copy_breakable_items (); - virtual SCM do_derived_mark () const; + virtual void derived_mark () const; }; #endif Index: lilypond/lily/include/spanner.hh diff -u lilypond/lily/include/spanner.hh:1.75 lilypond/lily/include/spanner.hh:1.76 --- lilypond/lily/include/spanner.hh:1.75 Sat Jul 16 12:23:33 2005 +++ lilypond/lily/include/spanner.hh Tue Jul 19 00:41:14 2005 @@ -56,7 +56,7 @@ static int compare (Spanner *const &, Spanner *const &); virtual Grob *find_broken_piece (System *) const; - virtual SCM do_derived_mark () const; + virtual void derived_mark () const; static bool has_interface (Grob *); virtual System *get_system () const; Index: lilypond/lily/include/system.hh diff -u lilypond/lily/include/system.hh:1.20 lilypond/lily/include/system.hh:1.21 --- lilypond/lily/include/system.hh:1.20 Sat Jul 16 12:23:33 2005 +++ lilypond/lily/include/system.hh Tue Jul 19 00:41:14 2005 @@ -45,7 +45,7 @@ void pre_processing (); protected: - virtual SCM do_derived_mark () const; + virtual void derived_mark () const; virtual Grob *clone (int count) const; }; Index: lilypond/lily/include/translator.hh diff -u lilypond/lily/include/translator.hh:1.86 lilypond/lily/include/translator.hh:1.87 --- lilypond/lily/include/translator.hh:1.86 Mon Jul 18 23:37:26 2005 +++ lilypond/lily/include/translator.hh Tue Jul 19 00:41:14 2005 @@ -20,13 +20,8 @@ typedef void (*Translator_void_method_ptr)(Translator*); -#define DECLARE_STATIC_METHOD(x) static void x ## _static (Translator*) #define TRANSLATOR_DECLARATIONS(NAME) \ public: \ - DECLARE_STATIC_METHOD(start_translation_timestep); \ - DECLARE_STATIC_METHOD(stop_translation_timestep); \ - DECLARE_STATIC_METHOD(process_music); \ - DECLARE_STATIC_METHOD(process_acknowledged); \ NAME (); \ VIRTUAL_COPY_CONSTRUCTOR (Translator, NAME); \ static SCM static_description_; \ Index: lilypond/lily/include/translator.icc diff -u lilypond/lily/include/translator.icc:1.1 lilypond/lily/include/translator.icc:1.2 --- lilypond/lily/include/translator.icc:1.1 Mon Jul 18 23:37:26 2005 +++ lilypond/lily/include/translator.icc Tue Jul 19 00:41:14 2005 @@ -29,7 +29,6 @@ ADD_GLOBAL_CTOR (_ ## T ## _adder); #define ADD_TRANSLATOR(classname, desc, grobs, accepted, acked, read, write) \ - DEFINE_STATIC_METHODS(classname);\ IMPLEMENT_FETCH_PRECOMPUTABLE_METHODS(classname); \ ADD_THIS_TRANSLATOR (classname); \ SCM \ @@ -59,25 +58,6 @@ return static_properties; \ } - -/* - FIXME: should be able to cast statically to (T*) -iow.- remove - Translator as a virtual base class. - */ -#define DEFINE_STATIC_METHOD(T, x) \ -void \ -T::x ## _static (Translator* tr) \ -{ \ - T * t_ptr = (T*) (tr); \ - t_ptr->x ();\ -} - -#define DEFINE_STATIC_METHODS(T) \ - DEFINE_STATIC_METHOD(T,start_translation_timestep)\ - DEFINE_STATIC_METHOD(T,stop_translation_timestep)\ - DEFINE_STATIC_METHOD(T,process_music)\ - DEFINE_STATIC_METHOD(T,process_acknowledged) - #define IMPLEMENT_FETCH_PRECOMPUTABLE_METHODS(T) \ void \ T::fetch_precomputable_methods (Translator_void_method_ptr ptrs[])\ @@ -86,22 +66,22 @@ ((Translator_void_method_ptr) &T::start_translation_timestep == \ (Translator_void_method_ptr) &Translator::start_translation_timestep) \ ? 0 \ - : &T::start_translation_timestep_static; \ + : (Translator_void_method_ptr) &T::start_translation_timestep; \ \ ptrs[STOP_TRANSLATION_TIMESTEP] = \ ((Translator_void_method_ptr) &T::stop_translation_timestep == (Translator_void_method_ptr) &Translator::stop_translation_timestep) \ ? 0 \ - : &T::stop_translation_timestep_static; \ + : (Translator_void_method_ptr) &T::stop_translation_timestep; \ \ ptrs[PROCESS_MUSIC] = \ ((Translator_void_method_ptr) &T::process_music == (Translator_void_method_ptr) &Translator::process_music) \ ? 0 \ - : &T::process_music_static; \ + : (Translator_void_method_ptr) &T::process_music; \ \ ptrs[PROCESS_ACKNOWLEDGED] = \ ((Translator_void_method_ptr) &T::process_acknowledged == (Translator_void_method_ptr) &Translator::process_acknowledged) \ ? 0 \ - : &T::process_acknowledged_static; \ + : (Translator_void_method_ptr) &T::process_acknowledged; \ } Index: lilypond/lily/item.cc diff -u lilypond/lily/item.cc:1.117 lilypond/lily/item.cc:1.118 --- lilypond/lily/item.cc:1.117 Tue Jul 19 00:04:11 2005 +++ lilypond/lily/item.cc Tue Jul 19 00:41:14 2005 @@ -159,14 +159,13 @@ } } -SCM -Item::do_derived_mark () const +void +Item::derived_mark () const { if (broken_to_drul_[LEFT]) scm_gc_mark (broken_to_drul_[LEFT]->self_scm ()); if (broken_to_drul_[RIGHT]) scm_gc_mark (broken_to_drul_[RIGHT]->self_scm ()); - return SCM_EOL; } Item * Index: lilypond/lily/note-head.cc diff -u lilypond/lily/note-head.cc:1.144 lilypond/lily/note-head.cc:1.145 --- lilypond/lily/note-head.cc:1.144 Mon Jul 18 23:37:25 2005 +++ lilypond/lily/note-head.cc Tue Jul 19 00:41:14 2005 @@ -48,23 +48,18 @@ Font_metric *fm = Font_interface::get_default_font (me); - Direction stem_dir = CENTER; - if (Grob *stem = unsmob_grob (me->get_object ("stem"))) - { - stem_dir = get_grob_direction (stem); - if (stem_dir == CENTER) - programming_error ("must have stem dir for note head"); - } + String idx = "noteheads.s" + suffix; - Stencil out; - - String prefix = "noteheads."; - String idx - = prefix + ((stem_dir == UP) ? "u" : "d") + suffix; - out = fm->find_by_name (idx); + Stencil out = fm->find_by_name (idx); if (out.is_empty ()) { - idx = prefix + "s" + suffix; + String prefix = "noteheads."; + Grob *stem = unsmob_grob (me->get_object ("stem")); + Direction stem_dir = stem ? get_grob_direction (stem) : CENTER; + + if (stem_dir == CENTER) + programming_error ("must have stem dir for note head"); + String idx = prefix + ((stem_dir == UP) ? "u" : "d") + suffix; out = fm->find_by_name (idx); } Index: lilypond/lily/spanner.cc diff -u lilypond/lily/spanner.cc:1.134 lilypond/lily/spanner.cc:1.135 --- lilypond/lily/spanner.cc:1.134 Mon Jul 18 23:37:25 2005 +++ lilypond/lily/spanner.cc Tue Jul 19 00:41:14 2005 @@ -288,16 +288,9 @@ return 0.0; } -SCM -Spanner::do_derived_mark () const +void +Spanner::derived_mark () const { -#if 0 - /* - We'd be fucked if this is called before spanned_drul_[] is inited. */ - if (status_ == ORPHAN) - return SCM_EOL; -#endif - Direction d = LEFT; do if (spanned_drul_[d]) @@ -307,8 +300,6 @@ for (int i = broken_intos_.size (); i--;) scm_gc_mark (broken_intos_[i]->self_scm ()); - - return SCM_EOL; } /* Index: lilypond/lily/system.cc diff -u lilypond/lily/system.cc:1.109 lilypond/lily/system.cc:1.110 --- lilypond/lily/system.cc:1.109 Tue Jul 19 00:04:11 2005 +++ lilypond/lily/system.cc Tue Jul 19 00:41:14 2005 @@ -87,8 +87,8 @@ } } -SCM -System::do_derived_mark () const +void +System::derived_mark () const { if (!all_elements_->is_empty ()) { @@ -100,7 +100,7 @@ ptr ++; } } - return Spanner::do_derived_mark (); + Spanner::derived_mark (); } static void _______________________________________________ Lilypond-cvs mailing list Lilypond-cvs@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-cvs