X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmusic-function.cc;h=c485a2989c7b47738f5507931ad43153420c4b39;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=65fedab7ddd70380457a9fa1304176589749eb69;hpb=c39d188d28fdc84cef8cbaea7b8d6e2fb718c30f;p=lilypond.git diff --git a/lily/music-function.cc b/lily/music-function.cc index 65fedab7dd..c485a2989c 100644 --- a/lily/music-function.cc +++ b/lily/music-function.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2014 Han-Wen Nienhuys + Copyright (C) 2004--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -19,71 +19,23 @@ #include "music-function.hh" -#include "music.hh" -#include "ly-smobs.icc" - -class Musicfunction -{ - DECLARE_SIMPLE_SMOBS (Musicfunction); - SCM signature_; - SCM function_; -public: - Musicfunction (SCM signature, SCM function): - signature_ (signature), function_ (function) { } - SCM get_function () { return function_; } - SCM get_signature () { return signature_; } -}; - -IMPLEMENT_SIMPLE_SMOBS (Musicfunction); -IMPLEMENT_DEFAULT_EQUAL_P (Musicfunction); +const char Music_function::type_p_name_[] = "ly:music-function?"; /* Print a textual represenation of the smob to a given port. */ int -Musicfunction::print_smob (SCM b, SCM port, scm_print_state *) +Music_function::print_smob (SCM port, scm_print_state *) { scm_puts ("#get_function (), port); + scm_write (get_function (), port); scm_puts (">", port); /* Non-zero means success. */ return 1; } -bool -is_music_function (SCM music_function) -{ - return Musicfunction::unsmob (music_function); -} - -SCM -get_music_function_transform (SCM music_function) -{ - if (!is_music_function (music_function)) - return SCM_UNDEFINED; - - return Musicfunction::unsmob (music_function)->get_function (); -} - -SCM -make_music_function (SCM signature, SCM func) -{ - return Musicfunction (signature, func).smobbed_copy (); -} - -SCM -get_music_function_signature (SCM music_function) -{ - if (!is_music_function (music_function)) - return SCM_UNDEFINED; - - return Musicfunction::unsmob (music_function)->get_signature (); -} - SCM -Musicfunction::mark_smob (SCM s) +Music_function::mark_smob () { - Musicfunction *p = Musicfunction::unsmob (s); - scm_gc_mark (p->signature_); - ASSERT_LIVE_IS_ALLOWED (s); - return p->function_; + ASSERT_LIVE_IS_ALLOWED (self_scm ()); + return Smob2::mark_smob (); }