X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fgrob-array-scheme.cc;h=2f472af3e45e7945a83a9f5b536aff14c4c17228;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=e408a39b36ccf20c43e54c55b9ba8fbac1398038;hpb=7ba314d34db2c69e7b87bb926705863c80aeb99f;p=lilypond.git diff --git a/lily/grob-array-scheme.cc b/lily/grob-array-scheme.cc index e408a39b36..2f472af3e4 100644 --- a/lily/grob-array-scheme.cc +++ b/lily/grob-array-scheme.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2005 Han-Wen Nienhuys + (c) 2005--2008 Han-Wen Nienhuys */ @@ -13,10 +13,11 @@ LY_DEFINE (ly_grob_array_length, "ly:grob-array-length", 1, 0, 0, (SCM grob_arr), - "Return the grob_array length.") + "Return the length of @var{grob-arr}.") { + LY_ASSERT_SMOB (Grob_array, grob_arr, 1); + Grob_array *me = unsmob_grob_array (grob_arr); - SCM_ASSERT_TYPE (me, grob_arr, SCM_ARG1, __FUNCTION__, "Grob_array"); return scm_from_int (me->size ()); } @@ -24,17 +25,15 @@ LY_DEFINE (ly_grob_array_length, "ly:grob-array-length", LY_DEFINE (ly_grob_array_ref, "ly:grob-array-ref", 2, 0, 0, (SCM grob_arr, SCM index), - "Retrieve the @code{index} element of @code{grob-arr}.") + "Retrieve the @var{index}th element of @var{grob-arr}.") { Grob_array *me = unsmob_grob_array (grob_arr); - SCM_ASSERT_TYPE (me, grob_arr, SCM_ARG1, __FUNCTION__, "Grob_array"); - SCM_ASSERT_TYPE (scm_is_integer (index), index, SCM_ARG2, __FUNCTION__, "integer"); - - int i = scm_to_int (index); - if (i < 0 || i >= me->size ()) - { - scm_out_of_range (NULL, scm_from_int (i)); - } + LY_ASSERT_SMOB (Grob_array, grob_arr, 1); + LY_ASSERT_TYPE (scm_is_integer, index, 2); + + vsize i = scm_to_unsigned (index); + if (i == VPOS || i >= me->size ()) + scm_out_of_range (NULL, scm_from_unsigned (i)); return me->grob (i)->self_scm (); }