2 grob-array-scheme.cc -- implement Grob_array bindings.
4 source file of the GNU LilyPond music typesetter
6 (c) 2005--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
10 #include "grob-array.hh"
13 LY_DEFINE (ly_grob_array_length, "ly:grob-array-length",
16 "Return the grob_array length.")
18 Grob_array *me = unsmob_grob_array (grob_arr);
19 SCM_ASSERT_TYPE (me, grob_arr, SCM_ARG1, __FUNCTION__, "Grob_array");
20 return scm_from_int (me->size ());
24 LY_DEFINE (ly_grob_array_ref, "ly:grob-array-ref",
26 (SCM grob_arr, SCM index),
27 "Retrieve the @code{index} element of @code{grob-arr}.")
29 Grob_array *me = unsmob_grob_array (grob_arr);
30 SCM_ASSERT_TYPE (me, grob_arr, SCM_ARG1, __FUNCTION__, "Grob_array");
31 SCM_ASSERT_TYPE (scm_is_integer (index), index, SCM_ARG2, __FUNCTION__, "integer");
33 vsize i = scm_to_unsigned (index);
34 if (i == VPOS || i >= me->size ())
35 scm_out_of_range (NULL, scm_from_unsigned (i));
37 return me->grob (i)->self_scm ();