X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fgrob-scheme.cc;h=1bbc53212ab2b04fa3280fcbd1639d3b2b4a1182;hb=0f9658c1391e09387e050231279d86c9f25ae485;hp=3983cac70c2f1f2a7ba2c83356b89e8a2c2e4802;hpb=7ce94ab2bcd9d12b6f7e40020db4c51185fe99db;p=lilypond.git diff --git a/lily/grob-scheme.cc b/lily/grob-scheme.cc index 3983cac70c..1bbc53212a 100644 --- a/lily/grob-scheme.cc +++ b/lily/grob-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2011 Jan Nieuwenhuizen + Copyright (C) 1998--2014 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -25,6 +25,7 @@ #include "paper-score.hh" #include "simple-closure.hh" #include "system.hh" +#include "unpure-pure-container.hh" #include "warn.hh" // error () LY_DEFINE (ly_grob_property_data, "ly:grob-property-data", @@ -66,7 +67,7 @@ LY_DEFINE (ly_grob_set_nested_property_x, "ly:grob-set-nested-property!", LY_ASSERT_SMOB (Grob, grob, 1); - bool type_ok = ly_cheap_is_list (symlist); + bool type_ok = scm_is_pair (symlist); if (type_ok) for (SCM s = symlist; scm_is_pair (s) && type_ok; s = scm_cdr (s)) @@ -74,7 +75,10 @@ LY_DEFINE (ly_grob_set_nested_property_x, "ly:grob-set-nested-property!", SCM_ASSERT_TYPE (type_ok, symlist, SCM_ARG2, __FUNCTION__, "list of symbols"); - set_nested_property (sc, symlist, val); + if (scm_is_pair (scm_cdr (symlist))) + set_nested_property (sc, symlist, val); + else + ly_grob_set_property_x (grob, scm_car (symlist), val); return SCM_UNSPECIFIED; } @@ -447,9 +451,34 @@ LY_DEFINE (ly_grob_chain_callback, "ly:grob-chain-callback", Grob *gr = unsmob_grob (grob); LY_ASSERT_SMOB (Grob, grob, 1); - LY_ASSERT_TYPE (ly_is_procedure, proc, 2); + SCM_ASSERT_TYPE (ly_is_procedure (proc) || is_unpure_pure_container (proc), proc, SCM_ARG2, __FUNCTION__, "procedure or unpure pure container"); LY_ASSERT_TYPE (ly_is_symbol, sym, 3); chain_callback (gr, proc, sym); return SCM_UNSPECIFIED; } + +LY_DEFINE (ly_grob_vertical_less_p, "ly:grob-vertical