]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/music-wrapper.cc
* scm/editor.scm: add char argument.
[lilypond.git] / lily / music-wrapper.cc
index a17a631039383001e0e3a71c5ed2c94f9db1a7b9..7106707d5a4abe8f2f6e23df8959cb801a664253 100644 (file)
@@ -1,37 +1,45 @@
-/*   
-  music-wrapper.cc --  implement Music_wrapper
-  
+/*
+  music-wrapper.cc -- implement Music_wrapper
+
   source file of the GNU LilyPond music typesetter
-  
-  (c) 1998--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-  
- */
+
+  (c) 1998--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
 
 #include "music-wrapper.hh"
 
-Music_wrapper::Music_wrapper ()
-  : Music ()
+Music_wrapper::Music_wrapper (SCM x)
+  : Music (x)
+{
+  if (!ly_c_procedure_p (length_callback_))
+    length_callback_ = length_callback_proc;
+  if (!ly_c_procedure_p (start_callback_))
+    start_callback_ = length_callback_proc;
+}
+
+MAKE_SCHEME_CALLBACK (Music_wrapper, start_callback, 1);
+SCM
+Music_wrapper::start_callback (SCM m)
 {
+  Music *me = unsmob_music (m);
+  Music *elt = unsmob_music (me->get_property ("element"));
+  return elt->start_mom ().smobbed_copy ();
 }
 
-Moment
-Music_wrapper::get_length () const
+MAKE_SCHEME_CALLBACK (Music_wrapper, length_callback, 1);
+SCM
+Music_wrapper::length_callback (SCM m)
 {
-  return element ()->get_length ();
+  Music *me = unsmob_music (m);
+  Music *elt = unsmob_music (me->get_property ("element"));
+  return elt->get_length ().smobbed_copy ();
 }
 
-Music*
+Music *
 Music_wrapper::element () const
 {
   return unsmob_music (get_property ("element"));
 }
 
-
 ADD_MUSIC (Music_wrapper);
 
-
-Moment
-Music_wrapper::start_mom () const
-{
-  return element ()->start_mom ();
-}