From 2245ccb1308303639f07ccbbc6788957993248cc Mon Sep 17 00:00:00 2001 From: David Nalesnik Date: Sat, 14 Feb 2015 14:45:07 -0600 Subject: [PATCH] Add Scheme function to return column associated with Item. The C++ function Paper_column::get_column is used frequently, and it makes sense to have a Scheme function which performs the same task. An example of a practical application is the request by users to return the location of a particular grob in a score: this is done by examining the PaperColumn or NonMusicalPaperColumn associated with the grob. --- lily/item-scheme.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lily/item-scheme.cc b/lily/item-scheme.cc index 0e6b71ef30..24ccf5bf0d 100644 --- a/lily/item-scheme.cc +++ b/lily/item-scheme.cc @@ -19,6 +19,7 @@ */ #include "item.hh" +#include "paper-column.hh" LY_DEFINE (ly_item_p, "ly:item?", 1, 0, 0, (SCM g), @@ -39,3 +40,17 @@ LY_DEFINE (ly_item_break_dir, "ly:item-break-dir", Item *me = Item::unsmob (it); return scm_from_int (me->break_status_dir ()); } + +LY_DEFINE (ly_item_get_column, "ly:item-get-column", + 1, 0, 0, (SCM it), + "Return the @code{PaperColumn} or @code{NonMusicalPaperColumn}" + " associated with this @code{Item}.") +{ + LY_ASSERT_SMOB (Item, it, 1); + Item *me = Item::unsmob (it); + + if (Paper_column *col = me->get_column ()) + return col->self_scm (); + + return SCM_EOL; +} -- 2.39.2