From: David Nalesnik Date: Sat, 14 Feb 2015 20:45:07 +0000 (-0600) Subject: Add Scheme function to return column associated with Item. X-Git-Tag: release/2.19.16-1~2^2~5 X-Git-Url: https://git.donarmstrong.com/?p=lilypond.git;a=commitdiff_plain;h=2245ccb1308303639f07ccbbc6788957993248cc 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. --- 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; +}