- Input *ip = unsmob_input (get_mus_property ("origin"));
- return ip ? ip : & dummy_input_global;
-}
-
-
-Music::~Music ()
-{
-
-}
-
-LY_DEFINE(ly_get_music_length,
- "ly:get-music-length", 1, 0, 0, (SCM mus),
- "Get the length (in musical time) of music expression @var{mus}.")
-{
- Music * sc = unsmob_music (mus);
- SCM_ASSERT_TYPE(sc, mus, SCM_ARG1, __FUNCTION__, "music");
- return sc->get_length().smobbed_copy();
-}
-
-LY_DEFINE(ly_get_mus_property,
- "ly:get-mus-property", 2, 0, 0, (SCM mus, SCM sym),
- "Get the property @var{sym} of music expression @var{mus}.\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(gh_symbol_p (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");
-
- return sc->internal_get_mus_property (sym);
-}
-
-LY_DEFINE(ly_set_mus_property,
- "ly:set-mus-property!", 3, 0, 0,
- (SCM mus, SCM sym, SCM val),
- "Set property @var{sym} in music expression @var{mus} to @var{val}.")
-{
- Music * sc = unsmob_music (mus);
- SCM_ASSERT_TYPE(sc, mus, SCM_ARG1, __FUNCTION__, "music");
- SCM_ASSERT_TYPE(gh_symbol_p (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");
-
- bool ok = type_check_assignment (sym, val, ly_symbol2scm ("music-type?"));
- if (ok)
- {
- sc->internal_set_mus_property (sym, val);
- }
-
- return SCM_UNSPECIFIED;
-}
-
-
-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");
-
- const char * nm = classname (m);
- return scm_makfrom0str (nm);