]> git.donarmstrong.com Git - lilypond.git/blob - lily/grob-array-scheme.cc
Merge branch 'master' of ssh+git://gpercival@git.sv.gnu.org/srv/git/lilypond
[lilypond.git] / lily / grob-array-scheme.cc
1 /*
2   grob-array-scheme.cc -- implement Grob_array bindings.
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 2005--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
7
8 */
9
10 #include "grob-array.hh"
11 #include "grob.hh"
12
13 LY_DEFINE (ly_grob_array_length, "ly:grob-array-length",
14            1, 0, 0,
15            (SCM grob_arr),
16            "Return the grob_array length.")
17 {
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 ());
21 }
22
23
24 LY_DEFINE (ly_grob_array_ref, "ly:grob-array-ref",
25            2, 0, 0,
26            (SCM grob_arr, SCM index),
27            "Retrieve the @code{index} element of @code{grob-arr}.")
28 {
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");
32
33   vsize i = scm_to_unsigned (index);
34   if (i == VPOS || i >= me->size ())
35     scm_out_of_range (NULL, scm_from_unsigned (i)); 
36   
37   return me->grob (i)->self_scm ();
38 }
39