From: Neil Puttock Date: Tue, 22 Nov 2011 17:14:09 +0000 (+0100) Subject: Implement ly:make-context-mod X-Git-Tag: release/2.15.21-1~43 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=f296029dcb6cc6dedc364847392f2ab3862e7a28;p=lilypond.git Implement ly:make-context-mod --- diff --git a/lily/context-mod-scheme.cc b/lily/context-mod-scheme.cc index b993a7de8f..4b3467eb20 100644 --- a/lily/context-mod-scheme.cc +++ b/lily/context-mod-scheme.cc @@ -21,8 +21,7 @@ #include "context.hh" #include "context-mod.hh" -LY_DEFINE (ly_get_context_mods, - "ly:get-context-mods", +LY_DEFINE (ly_get_context_mods, "ly:get-context-mods", 1, 0, 0, (SCM contextmod), "Returns the list of context modifications stored in" " @var{contextmod}.") @@ -32,8 +31,7 @@ LY_DEFINE (ly_get_context_mods, return tr->get_mods (); } -LY_DEFINE (ly_add_context_mod, - "ly:add-context-mod", +LY_DEFINE (ly_add_context_mod, "ly:add-context-mod", 2, 0, 0, (SCM contextmods, SCM modification), "Adds the given context @var{modification} to the list" " @var{contextmods} of context modifications.") @@ -44,3 +42,16 @@ LY_DEFINE (ly_add_context_mod, return SCM_UNSPECIFIED; } +LY_DEFINE (ly_make_context_mod, "ly:make-context-mod", + 0, 1, 0, (SCM mod_list), + "Creates a context modification, optionally initialized" + " via the list of modifications @var{mod-list}.") +{ + if (mod_list != SCM_UNDEFINED) + { + LY_ASSERT_TYPE (ly_cheap_is_list, mod_list, 1); + return Context_mod (mod_list).smobbed_copy (); + } + else + return Context_mod ().smobbed_copy (); +} diff --git a/lily/context-mod.cc b/lily/context-mod.cc index 5fccf6c4d2..2cfd31381e 100644 --- a/lily/context-mod.cc +++ b/lily/context-mod.cc @@ -29,6 +29,11 @@ Context_mod::Context_mod (Context_mod const &s) mods_ = s.mods_; } +Context_mod::Context_mod (SCM mod_list) +{ + mods_ = mod_list; +} + #include "ly-smobs.icc" IMPLEMENT_SIMPLE_SMOBS (Context_mod); IMPLEMENT_DEFAULT_EQUAL_P (Context_mod); diff --git a/lily/include/context-mod.hh b/lily/include/context-mod.hh index 36c8885bbc..ed31be492d 100644 --- a/lily/include/context-mod.hh +++ b/lily/include/context-mod.hh @@ -48,6 +48,7 @@ public: Context_mod (); Context_mod (Context_mod const &); + Context_mod (SCM mod_list); DECLARE_SIMPLE_SMOBS (Context_mod); };