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
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-cvs