X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fgrob-array-scheme.cc;h=b62c629224b5402c06586fe60d6a84a84c90977d;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=1c10f6488a9b9c74250b64fcdcd0192d5cfa26d5;hpb=e18531db1f79fb685fbd16d6a2a67bf4b6c09915;p=lilypond.git diff --git a/lily/grob-array-scheme.cc b/lily/grob-array-scheme.cc index 1c10f6488a..b62c629224 100644 --- a/lily/grob-array-scheme.cc +++ b/lily/grob-array-scheme.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2005--2010 Han-Wen Nienhuys + Copyright (C) 2005--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -22,30 +22,39 @@ #include "grob.hh" LY_DEFINE (ly_grob_array_length, "ly:grob-array-length", - 1, 0, 0, - (SCM grob_arr), - "Return the length of @var{grob-arr}.") + 1, 0, 0, + (SCM grob_arr), + "Return the length of @var{grob-arr}.") { LY_ASSERT_SMOB (Grob_array, grob_arr, 1); - Grob_array *me = unsmob_grob_array (grob_arr); - return scm_from_int (me->size ()); + Grob_array *me = Grob_array::unsmob (grob_arr); + return scm_from_int (me->size ()); } - LY_DEFINE (ly_grob_array_ref, "ly:grob-array-ref", - 2, 0, 0, - (SCM grob_arr, SCM index), - "Retrieve the @var{index}th element of @var{grob-arr}.") + 2, 0, 0, + (SCM grob_arr, SCM index), + "Retrieve the @var{index}th element of @var{grob-arr}.") { - Grob_array *me = unsmob_grob_array (grob_arr); + Grob_array *me = Grob_array::unsmob (grob_arr); LY_ASSERT_SMOB (Grob_array, grob_arr, 1); LY_ASSERT_TYPE (scm_is_integer, index, 2); - vsize i = scm_to_unsigned (index); + vsize i = scm_to_uint (index); if (i == VPOS || i >= me->size ()) - scm_out_of_range (NULL, scm_from_unsigned (i)); - + scm_out_of_range (NULL, scm_from_unsigned_integer (i)); + return me->grob (i)->self_scm (); } +LY_DEFINE (ly_grob_array_2_list, "ly:grob-array->list", + 1, 0, 0, + (SCM grob_arr), + "Return the elements of @var{grob-arr} as a Scheme list.") +{ + Grob_array *me = Grob_array::unsmob (grob_arr); + LY_ASSERT_SMOB (Grob_array, grob_arr, 1); + + return grob_array_to_list (me); +}