]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/include/translator.icc
authorhanwen <hanwen>
Tue, 19 Jul 2005 00:41:14 +0000 (00:41 +0000)
committerhanwen <hanwen>
Tue, 19 Jul 2005 00:41:14 +0000 (00:41 +0000)
(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).

13 files changed:
ChangeLog
lily/dynamic-performer.cc
lily/grob-smob.cc
lily/include/grob.hh
lily/include/item.hh
lily/include/spanner.hh
lily/include/system.hh
lily/include/translator.hh
lily/include/translator.icc
lily/item.cc
lily/note-head.cc
lily/spanner.cc
lily/system.cc

index 63eb4926174f6cce411ac49bca1b17bf5576ac8f..0d5d1f35b2d4e3762f453842cb0913f2167f00bf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2005-07-19  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
+       * 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 b264e72edd6fe84cb7a0ec09e7603b0886f66ba8..e39ea705932d1742a14c522eb14ab3f8b006a73e 100644 (file)
@@ -10,6 +10,8 @@
 
 #include "audio-item.hh"
 #include "music.hh"
+#include "translator.icc"
+
 
 /*
   TODO:
@@ -23,25 +25,25 @@ class Dynamic_performer : public Performer
 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 @@ Dynamic_performer::create_audio_elements ()
       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 @@ Dynamic_performer::create_audio_elements ()
        }
 
       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,19 +116,17 @@ Dynamic_performer::stop_translation_timestep ()
 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*/                "",
                /* creats*/ "",
index 556b68bedb2c6d5daaa7e38a0bf530441f61eba0..836d42c4c99ff93ac059b918b13c1f6e821775df 100644 (file)
@@ -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 @@ Grob::mark_smob (SCM ses)
   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 @@ Grob::print_smob (SCM s, SCM port, scm_print_state *)
   return 1;
 }
 
-SCM
-Grob::do_derived_mark () const
+void
+Grob::derived_mark () const
 {
-  return SCM_EOL;
 }
-
-IMPLEMENT_TYPE_P (Grob, "ly:grob?");
-
index 6b8d86444974ecd5d9608e811b46f4c18ea2540c..111e4b3b0b177989ab25af105064fe247755192e 100644 (file)
@@ -100,7 +100,7 @@ public:
   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 aa8bcb4b664dd7b2d36581a3c5411070467d42bb..9b50af6db3e471237fb963c5bfbf2270e3cf15ec 100644 (file)
@@ -41,7 +41,7 @@ public:
 protected:
   virtual void discretionary_processing ();
   void copy_breakable_items ();
-  virtual SCM do_derived_mark () const;
+  virtual void derived_mark () const;
 };
 
 #endif
index b06c0a4cc009da320f33c2fc58f855476993c441..d1042348e9a2b403337b1a087353f10f2df3ea00 100644 (file)
@@ -56,7 +56,7 @@ public:
 
   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 18ef76e739c21f78b63381d8c44c8653f3505be9..82d942d396dd7574faa5f73af6d4eef003406c06 100644 (file)
@@ -45,7 +45,7 @@ public:
   void pre_processing ();
 
 protected:
-  virtual SCM do_derived_mark () const;
+  virtual void derived_mark () const;
   virtual Grob *clone (int count) const;
 };
 
index 351149548c3cf4d79e997bca9b65625c9786ee65..af21e10ab95c45b44c901793d471f7cf5441495b 100644 (file)
 
 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 5bffbf8d2ad30c683c1bff63fda9081ac91637be..ce57a3c4d6ba3705a99a8912ab3911b183534c8a 100644 (file)
@@ -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                                                                  \
     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 @@ T::fetch_precomputable_methods (Translator_void_method_ptr ptrs[])\
     ((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 922faf0abd2041d62a85fcfc707eda5ed990d91f..7e36b762d9f13a384e84dfd03333425f82d0d33d 100644 (file)
@@ -159,14 +159,13 @@ Item::handle_prebroken_dependencies ()
     }
 }
 
-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 796e01b3a342eca856f5cea7140eca97db558b97..a106fd2ab0d24eb35595120cce2cac30d2f97d35 100644 (file)
@@ -48,23 +48,18 @@ internal_print (Grob *me, String *font_char)
   
   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 1909eee4feda1bc1372c0435d00263d39a595e00..a015e0355beeaf877b6207a903d5929c9acce95d 100644 (file)
@@ -288,16 +288,9 @@ Spanner::get_broken_left_end_align () const
   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 @@ Spanner::do_derived_mark () const
 
   for (int i = broken_intos_.size (); i--;)
     scm_gc_mark (broken_intos_[i]->self_scm ());
-
-  return SCM_EOL;
 }
 
 /*
index a69725d7019c72d375a8d66d23aeeabce95db9e0..898e07871d62bdec8ee23141f24a43a50bf8a97b 100644 (file)
@@ -87,8 +87,8 @@ System::typeset_grob (Grob *elem)
     }
 }
 
-SCM
-System::do_derived_mark () const
+void
+System::derived_mark () const
 {
   if (!all_elements_->is_empty ())
     {
@@ -100,7 +100,7 @@ System::do_derived_mark () const
          ptr ++;
        }
     }
-  return Spanner::do_derived_mark ();
+  Spanner::derived_mark ();
 }
 
 static void