X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fgrob-property.cc;h=f174f7ee01f6128bd79c6c6d405c80998e862659;hb=05d8315484c180e02bf9297513bd0c3db1e4615a;hp=55b06d6dfa2f522052b929b881bf2a974d7609c4;hpb=229701a3277dad1c8d2057bd8cc1ba085728face;p=lilypond.git diff --git a/lily/grob-property.cc b/lily/grob-property.cc index 55b06d6dfa..f174f7ee01 100644 --- a/lily/grob-property.cc +++ b/lily/grob-property.cc @@ -191,6 +191,26 @@ Grob::internal_get_property (SCM sym) const return val; } +/* Unlike internal_get_property, this function does no caching. Use it, therefore, with caution. */ +SCM +Grob::internal_get_pure_property (SCM sym, int start, int end) const +{ + SCM val = internal_get_property_data (sym); + if (ly_is_procedure (val)) + return call_pure_function (val, scm_list_1 (self_scm ()), start, end); + if (is_simple_closure (val)) + return evaluate_with_simple_closure (self_scm (), + simple_closure_expression (val), + true, start, end); + return val; +} + +SCM +Grob::internal_get_maybe_pure_property (SCM sym, bool pure, int start, int end) const +{ + return pure ? internal_get_pure_property (sym, start, end) : internal_get_property (sym); +} + SCM Grob::try_callback_on_alist (SCM *alist, SCM sym, SCM proc) {