X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fgrob-array.hh;h=c21fc3cf502e285c901e067801776521d694850f;hb=a9a451e2316c2e94815e33d51eb42eaae3649384;hp=8c5c4d54e2abd136e98b9ba0a2a0bc1b29e1b225;hpb=e6caaa132f59006e5c47d0007b24bfedd07ad145;p=lilypond.git diff --git a/lily/include/grob-array.hh b/lily/include/grob-array.hh index 8c5c4d54e2..c21fc3cf50 100644 --- a/lily/include/grob-array.hh +++ b/lily/include/grob-array.hh @@ -1,10 +1,20 @@ /* - grob-array.hh -- declare Grob_array + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2005--2012 Han-Wen Nienhuys - (c) 2005 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #ifndef GROB_ARRAY_HH @@ -12,33 +22,38 @@ #include "lily-proto.hh" #include "smobs.hh" -#include "parray.hh" +#include "std-vector.hh" class Grob_array { - Link_array grobs_; - - DECLARE_SIMPLE_SMOBS(Grob_array,); + vector grobs_; + bool ordered_; + + DECLARE_SIMPLE_SMOBS (Grob_array); + Grob_array (); public: - Item *item (int i); - Spanner *spanner (int i); - Grob * grob (int i); - int size () const; - bool is_empty () const; - void clear (); - void add (Grob *); - void set_array (Link_array const &src); - Link_array &array_reference (); - Link_array const &array () const; + bool ordered () const { return ordered_; } + void set_ordered (bool b) { ordered_ = b; } + Item *item (vsize i); + Spanner *spanner (vsize i); + Grob *grob (vsize i) { return grobs_.at (i); } + vsize size () const { return grobs_.size (); } + bool empty () const; + void remove_duplicates (); + void clear (); + void add (Grob *x) { grobs_.push_back (x); } + void set_array (vector const &src); + vector &array_reference (); + vector const &array () const; static SCM make_array (); }; DECLARE_UNSMOB (Grob_array, grob_array); -Link_array const &ly_scm2link_array (SCM x); +vector const &ly_scm2link_array (SCM x); SCM grob_list_to_grob_array (SCM lst); - +SCM grob_array_to_list (Grob_array *array); #endif /* GROB_ARRAY_HH */