]> git.donarmstrong.com Git - lilypond.git/commitdiff
Create ly:grob-chain-callback from chain_callback
authorMike Solomon <mike@apollinemike.com>
Thu, 12 Aug 2010 22:56:34 +0000 (23:56 +0100)
committerNeil Puttock <n.puttock@gmail.com>
Thu, 12 Aug 2010 22:56:34 +0000 (23:56 +0100)
Signed-off-by: Neil Puttock <n.puttock@gmail.com>
lily/grob-scheme.cc

index 199e6fb9b3410da8d6355aaea07782577f170223..c27a9ee8bdab5ff3dbe941a0e9bc6533857ca264 100644 (file)
@@ -402,3 +402,20 @@ LY_DEFINE (ly_grob_common_refpoint_of_array, "ly:grob-common-refpoint-of-array",
   Grob *refp = common_refpoint_of_array (ga->array (), gr, Axis (scm_to_int (axis)));
   return refp ? refp->self_scm () : SCM_BOOL_F;
 }
+
+LY_DEFINE (ly_grob_chain_callback, "ly:grob-chain-callback",
+          3, 0, 0, (SCM grob, SCM proc, SCM sym),
+          "Find the callback that is stored as property"
+          " @var{sym} of grob @var{grob} and chain @var{proc}"
+          " to the head of this, meaning that it is called"
+          " using @var{grob} and the previous callback's result.")
+{
+  Grob *gr = unsmob_grob (grob);
+
+  LY_ASSERT_SMOB (Grob, grob, 1);
+  LY_ASSERT_TYPE (ly_is_procedure, proc, 2);
+  LY_ASSERT_TYPE (ly_is_symbol, sym, 3);
+
+  chain_callback (gr, proc, sym);
+  return SCM_UNSPECIFIED;
+}