X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmusic-scheme.cc;h=27e5db98804752020a1460fb1cff339eac7f1398;hb=cd586e589daa7a550fa39200a78cb2012e853d99;hp=114f42e645fbddea0045ae256d48b3cee16d5e19;hpb=2c22efe5a46a37065b10c3f51c5d7db00d07d318;p=lilypond.git diff --git a/lily/music-scheme.cc b/lily/music-scheme.cc index 114f42e645..27e5db9880 100644 --- a/lily/music-scheme.cc +++ b/lily/music-scheme.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2005 Han-Wen Nienhuys + (c) 2005--2006 Han-Wen Nienhuys */ #include "duration.hh" @@ -11,6 +11,7 @@ #include "music.hh" #include "pitch.hh" + LY_DEFINE (ly_music_length, "ly:music-length", 1, 0, 0, (SCM mus), "Get the length of music expression @var{mus}, and return as a @code{Moment} object.") @@ -21,15 +22,13 @@ LY_DEFINE (ly_music_length, "ly:music-length", } LY_DEFINE (ly_music_property, - "ly:music-property", 2, 0, 0, (SCM mus, SCM sym), + "ly:music-property", 2, 1, 0, (SCM mus, SCM sym, SCM dfault), "Get the property @var{sym} of music expression @var{mus}.\n" - "If @var{sym} is undefined, return @code{' ()}.\n") + "If @var{sym} is undefined, return @code{'()}.\n") { Music *sc = unsmob_music (mus); SCM_ASSERT_TYPE (sc, mus, SCM_ARG1, __FUNCTION__, "music"); - SCM_ASSERT_TYPE (scm_is_symbol (sym), sym, SCM_ARG2, __FUNCTION__, "symbol"); - - return sc->internal_get_property (sym); + return ly_prob_property (mus,sym,dfault); } LY_DEFINE (ly_music_set_property, "ly:music-set-property!", @@ -38,27 +37,9 @@ LY_DEFINE (ly_music_set_property, "ly:music-set-property!", { Music *sc = unsmob_music (mus); SCM_ASSERT_TYPE (sc, mus, SCM_ARG1, __FUNCTION__, "music"); - SCM_ASSERT_TYPE (scm_is_symbol (sym), sym, SCM_ARG2, __FUNCTION__, "symbol"); - - bool ok = type_check_assignment (sym, val, ly_symbol2scm ("music-type?")); - if (ok) - { - sc->internal_set_property (sym, val); - } - - return SCM_UNSPECIFIED; + return ly_prob_set_property_x (mus, sym, val); } -LY_DEFINE (ly_music_name, "ly:music-name", - 1, 0, 0, (SCM mus), - "Return the name of @var{music}.") -{ - Music *m = unsmob_music (mus); - SCM_ASSERT_TYPE (m, mus, SCM_ARG1, __FUNCTION__, "music"); - - char const *nm = classname (m); - return scm_makfrom0str (nm); -} /* todo: property args */ LY_DEFINE (ly_make_music, "ly:make-music", @@ -74,6 +55,13 @@ LY_DEFINE (ly_make_music, "ly:make-music", return ms->unprotect (); } +LY_DEFINE (ly_music_p, "ly:music?", + 1, 0, 0, (SCM obj), + "Type predicate") +{ + return scm_from_bool (unsmob_music (obj)); +} + /* todo: property args */ LY_DEFINE (ly_music_mutable_properties, "ly:music-mutable-properties", 1, 0, 0, (SCM mus), @@ -226,3 +214,4 @@ LY_DEFINE (ly_transpose_key_alist, "ly:transpose-key-alist", } return scm_reverse_x (newlist, SCM_EOL); } +