]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/include/group-interface.hh (extract_grob_array): rename
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 9 Mar 2005 00:13:59 +0000 (00:13 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 9 Mar 2005 00:13:59 +0000 (00:13 +0000)
from Pointer_group_interface__extract_grobs

21 files changed:
ChangeLog
lily/accidental-placement.cc
lily/align-interface.cc
lily/ambitus.cc
lily/beam-concave.cc
lily/beam-quanting.cc
lily/beam.cc
lily/break-align-interface.cc
lily/dot-column.cc
lily/group-interface.cc
lily/horizontal-bracket.cc
lily/include/group-interface.hh
lily/ledger-line-spanner.cc
lily/lyric-extender.cc
lily/slur-configuration.cc
lily/slur-scoring.cc
lily/slur.cc
lily/stem.cc
lily/system.cc
lily/tie-column.cc
lily/tuplet-bracket.cc

index 587ba152e7eec3d75fd66255f2643af8008e41d2..da0021e5a8b1730fee2c955d6025e49bee90b589 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2005-03-09  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
+       * lily/include/group-interface.hh (extract_grob_array): rename
+       from Pointer_group_interface__extract_grobs
+
        * input/regression/ledger-line-minimum.ly (texidoc): new file.
 
        * lily/ledger-line-spanner.cc (set_spacing_rods): new
index 2fae8292a380faa3e5736489b934db2a137a55b8..91e0de193b0707084327a3e57e559a6b7ff92d7b 100644 (file)
@@ -312,7 +312,7 @@ Accidental_placement::position_accidentals (Grob * me)
       if (Note_collision_interface::has_interface (c))
        {
          Link_array<Grob> gs =
-           Pointer_group_interface__extract_grobs (c, (Grob*)0, "elements");
+           extract_grob_array (c, ly_symbol2scm ("elements"));
       
          note_cols.concat (gs);
        }
@@ -320,10 +320,7 @@ Accidental_placement::position_accidentals (Grob * me)
   
   for (int i = note_cols.size () ; i--;)
     {
-      heads.concat (Pointer_group_interface__extract_grobs (note_cols[i],
-                                                           (Grob*)0,
-                                                           "note-heads"));
-      
+      heads.concat (extract_grob_array (note_cols[i], ly_symbol2scm ("note-heads")));
     }
   heads.default_sort ();
   heads.uniq ();
index 0486f09d3a68b2cf7a5e5f345f4920f85340d26f..89c19910771b013470895d1bbf9f32129816881e 100644 (file)
@@ -58,7 +58,7 @@ Align_interface::align_to_fixed_distance (Grob *me , Axis a)
   Real dy = robust_scm2double (me->get_property ("forced-distance"), 0.0);
   
   Link_array<Grob> elems
-    = Pointer_group_interface__extract_grobs (me, (Grob*) 0, "elements");
+    = extract_grob_array (me, ly_symbol2scm ("elements"));
 
   Real where_f = 0;
 
@@ -134,7 +134,7 @@ Align_interface::align_elements_to_extents (Grob * me, Axis a)
 
   Link_array<Grob> elems;
   Link_array<Grob> all_grobs
-    = Pointer_group_interface__extract_grobs (me, (Grob*) 0, "elements");
+    = extract_grob_array (me, ly_symbol2scm ("elements"));
   for (int i = 0; i < all_grobs.size (); i++) 
     {
       Interval y = all_grobs[i]->extent (me, a);
index 7f8cf43fcfb869ac565211c995f333b9c2030544..43c9f0a01b6b5cb6f53f9bcaadf92078a2cd5c37 100644 (file)
@@ -25,7 +25,7 @@ Ambitus::print (SCM smob)
   Stencil stencil;
 
   // join heads
-  Link_array<Grob> heads (Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-heads"));
+  Link_array<Grob> heads (extract_grob_array (me, ly_symbol2scm ("note-heads")));
   if (to_boolean (me->get_property ("join-heads"))
       && heads.size() > 1)
     {
index ea040131cbd51d0ca7f441e574a2100b9145244b..0f2cb2fb9c896174f4e3f2fa259d36dc310deef5 100644 (file)
@@ -89,7 +89,7 @@ Beam::check_concave (SCM smob)
   Grob *me = unsmob_grob (smob);
 
   Link_array<Grob> stems = 
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
 
   if (is_knee (me))
     return SCM_UNSPECIFIED;
index 54cee073b983a1a1a78794b2759402c24c53d213..a3197932f69089bc663223039a5652f3b10f416e 100644 (file)
@@ -138,7 +138,7 @@ Beam::quanting (SCM smob)
     precompute for every stem 2 factors.
    */
   Link_array<Grob> stems =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
   Array<Stem_info> stem_infos;
   Array<Real> base_lengths;
   Array<Real> stem_xposns;  
index 33672e4608161a9e2fcb3c520efb649b4a0ee26b..3880f691bd4b56fc991f147a6d085d33eac7ca99 100644 (file)
@@ -229,7 +229,7 @@ void
 Beam::connect_beams (Grob *me)
 {
   Link_array<Grob> stems =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
 
   Slice last_int;
   last_int.set_empty ();
@@ -309,7 +309,7 @@ Beam::print (SCM grob)
   position_beam (me);
   
   Link_array<Grob> stems =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
   Grob* xcommon = common_refpoint_of_array (stems, me, X_AXIS);
 
   xcommon = me->get_bound (LEFT)->common_refpoint (xcommon, X_AXIS);
@@ -545,7 +545,7 @@ Beam::get_default_dir (Grob *me)
   Direction d = DOWN;
 
   Link_array<Grob> stems =
-       Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
+       extract_grob_array (me, ly_symbol2scm ("stems"));
 
   for (int i = 0; i < stems.size (); i++)
     do {
@@ -584,7 +584,7 @@ void
 Beam::set_stem_directions (Grob *me, Direction d)
 {
   Link_array<Grob> stems
-    = Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
+    = extract_grob_array (me, ly_symbol2scm ("stems"));
   
   for (int i = 0; i <stems.size (); i++)
     {
@@ -614,7 +614,7 @@ Beam::consider_auto_knees (Grob* me)
   gaps.set_full ();
 
   Link_array<Grob> stems =
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
   
   Grob *common = common_refpoint_of_array (stems, me,  Y_AXIS);
   Real staff_space = Staff_symbol_referencer::staff_space (me);
@@ -828,7 +828,7 @@ Beam::least_squares (SCM smob)
 
   Array<Real> x_posns ;
   Link_array<Grob> stems =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
   Grob *commonx = common_refpoint_of_array (stems, me, X_AXIS);
   Grob *commony = common_refpoint_of_array (stems, me, Y_AXIS);  
 
@@ -941,7 +941,7 @@ Beam::shift_region_to_valid (SCM grob)
    */
   Array<Real> x_posns ;
   Link_array<Grob> stems =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
   Grob *commonx = common_refpoint_of_array (stems, me, X_AXIS);
   Grob *commony = common_refpoint_of_array (stems, me, Y_AXIS);  
 
@@ -1145,7 +1145,7 @@ void
 Beam::set_stem_lengths (Grob *me)
 {
   Link_array<Grob> stems =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
 
   if (!stems.size ())
     return;
@@ -1200,7 +1200,7 @@ void
 Beam::set_beaming (Grob *me, Beaming_info_list *beaming)
 {
   Link_array<Grob> stems =
-    Pointer_group_interface__extract_grobs (me, (Grob *)0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
   
   Direction d = LEFT;
   for (int i = 0; i  < stems.size (); i++)
@@ -1238,7 +1238,7 @@ int
 Beam::forced_stem_count (Grob *me) 
 {
   Link_array<Grob>stems = 
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
   int f = 0;
   for (int i = 0; i < stems.size (); i++)
     {
@@ -1263,7 +1263,7 @@ int
 Beam::visible_stem_count (Grob *me) 
 {
   Link_array<Grob>stems = 
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
   int c = 0;
   for (int i = stems.size (); i--;)
     {
@@ -1277,7 +1277,7 @@ Grob*
 Beam::first_visible_stem (Grob *me) 
 {
   Link_array<Grob>stems = 
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
   
   for (int i = 0; i < stems.size (); i++)
     {
@@ -1291,7 +1291,7 @@ Grob*
 Beam::last_visible_stem (Grob *me) 
 {
   Link_array<Grob>stems = 
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
   for (int i = stems.size (); i--;)
     {
       if (!Stem::is_invisible (stems[i]))
@@ -1419,7 +1419,7 @@ int
 Beam::get_direction_beam_count (Grob *me, Direction d )
 {
   Link_array<Grob>stems = 
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems");
+    extract_grob_array (me, ly_symbol2scm ("stems"));
   int bc = 0;
   
   for (int i = stems.size (); i--;)
index fec794675291753d698e8fd156e52d30ec8cba60..36966bcd139a95c2e26b0913b3a2bbca2a1ec92a 100644 (file)
@@ -76,8 +76,7 @@ Break_align_interface::ordered_elements (Grob *grob)
   SCM order_vec = me->get_property ("break-align-orders");
   if (!scm_is_vector (order_vec)
       || scm_c_vector_length (order_vec) < 3)
-    return  Pointer_group_interface__extract_grobs (me, (Grob*)0,
-                                                   "elements");
+    return  extract_grob_array (me, ly_symbol2scm ("elements"));
   SCM order = scm_vector_ref (order_vec,
                              scm_int2num (me->break_status_dir () + 1));
 
index f30c544b814aeada86872244881597cb4c1fac51..48e325e133083c142375560f9f9cf193b9fc6dbb 100644 (file)
@@ -231,7 +231,7 @@ SCM
 Dot_column::do_shifts (Grob*me)
 {
   Link_array<Grob> dots =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "dots");
+    extract_grob_array (me, ly_symbol2scm ("dots"));
 
   { /*
       Trigger note collision resolution first, since that may kill off
index 95d388cc0716becf0ce4db0e04c26c9f3774bd0d..eccb1210da2ae3f95be1c1580a9ac6bb1603fe6a 100644 (file)
@@ -8,6 +8,7 @@
  */
 
 #include "group-interface.hh"
+#include "item.hh"
 
 void
 Group_interface::add_thing (Grob*me, SCM sym, SCM thing)
@@ -28,3 +29,35 @@ Pointer_group_interface::add_grob (Grob*me, SCM name, Grob*p)
 {
   Group_interface::add_thing (me, name, p->self_scm ());
 }
+
+
+
+Link_array<Grob>
+extract_grob_array (Grob const *elt, SCM symbol)
+{
+  Link_array<Grob> arr;
+
+  for (SCM s = elt->internal_get_property (symbol); scm_is_pair (s); s = scm_cdr (s))
+    {
+      SCM e = scm_car (s);
+      arr.push (unsmob_grob (e));
+    }
+
+  arr.reverse ();
+  return arr;
+}
+
+
+Link_array<Item>
+extract_item_array (Grob const *elt, SCM symbol)
+{
+  Link_array<Item> arr;
+  for (SCM s = elt->internal_get_property (symbol); scm_is_pair (s); s = scm_cdr (s))
+    {
+      SCM e = scm_car (s);
+      arr.push (dynamic_cast<Item*> (unsmob_grob (e)));
+    }
+
+  arr.reverse ();
+  return arr;
+}
index 98f905f766034948dc8ceaad45e4a3d411fd48ba..1abe992ae4b72135a5cac94856501fbdb47d9cff 100644 (file)
@@ -36,7 +36,7 @@ Horizontal_bracket::print (SCM smob)
 {
   Grob * me = unsmob_grob (smob);
   Spanner *sp = dynamic_cast<Spanner*> (me);
-  Link_array<Grob> gs = Pointer_group_interface__extract_grobs (me, (Grob*)0, "columns");
+  Link_array<Grob> gs = extract_grob_array (me, ly_symbol2scm ("columns"));
 
   if (!gs.size ())
     {
index 228f58b6a1d18f859e96928275a8ca0519038112..6471007845f6f2a282cea7733e27db265c821dfb 100644 (file)
@@ -32,21 +32,8 @@ public:
   static void add_grob (Grob*, SCM nm, Grob*e);
 };
 
-template<class T>
-Link_array<T>
-Pointer_group_interface__extract_grobs (Grob const *elt, T *, const char* name)
-{
-  Link_array<T> arr;
-
-  for (SCM s = elt->get_property (name); scm_is_pair (s); s = scm_cdr (s))
-    {
-      SCM e = scm_car (s);
-      arr.push (dynamic_cast<T*> (unsmob_grob (e)));
-    }
-
-  arr.reverse ();
-  return arr;
-}
+Link_array<Grob> extract_grob_array (Grob const *elt, SCM symbol);
+Link_array<Item> extract_item_array (Grob const *elt, SCM symbol);
 
 
 
index 0af662952fc07f7e540a7b298c2d9c94e21f1089..903a97bb1f88d3c46f450f02e4463944862e6809 100644 (file)
@@ -96,7 +96,7 @@ Ledger_line_spanner::set_spacing_rods (SCM smob)
   if (!staff)
     return SCM_EOL;
 
-  Link_array<Grob> heads (Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-heads"));
+  Link_array<Grob> heads (extract_grob_array (me, ly_symbol2scm ("note-heads")));
   
   if (heads.is_empty ())
     return SCM_EOL;
@@ -200,7 +200,7 @@ SCM
 Ledger_line_spanner::print (SCM smob)
 {
   Spanner *me = dynamic_cast<Spanner*> (unsmob_grob (smob));
-  Link_array<Grob> heads (Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-heads"));
+  Link_array<Grob> heads (extract_grob_array (me, ly_symbol2scm ("note-heads")));
 
   if (heads.is_empty ())
     return SCM_EOL;
index 700fbf40cdbab136708b6d34262f120358d4909e..b71d4337c38fcc4c7eabc9b75237d6c043ab611a 100644 (file)
@@ -32,8 +32,7 @@ Lyric_extender::print (SCM smob)
   
   common = common->common_refpoint (me->get_bound (RIGHT), X_AXIS);
   Real sl = me->get_layout ()->get_dimension (ly_symbol2scm ("linethickness"));  
-  Link_array<Grob> heads (Pointer_group_interface__extract_grobs (me, (Grob*)0,
-                                                                 "heads"));
+  Link_array<Grob> heads (extract_grob_array (me, ly_symbol2scm ("heads")));
 
   if (!heads.size ())
     return SCM_EOL;
index 0b9dc137d2b861b26120b58b9787e1cf721a07b8..ec1bb088408c5f384e293a296579e0e4e840cde7 100644 (file)
@@ -115,7 +115,7 @@ Slur_configuration::generate_curve (Slur_score_state const &state,
     }
 
   Link_array<Grob> extra_encompasses
-    = Pointer_group_interface__extract_grobs (state.slur_, (Grob *)0, "encompass-objects");
+    = extract_grob_array (state.slur_, ly_symbol2scm ("encompass-objects"));
   for (int i = 0;  i < extra_encompasses.size (); i++)
     if (Slur::has_interface (extra_encompasses[i]))
       {
index 4ead1be2b5ee7057b66133b272fa79ce1eafbf49..b06a1b019efa16e093a5fe7a3c031e968afc1421 100644 (file)
@@ -277,7 +277,7 @@ Slur_score_state::fill (Grob *me)
 {
   slur_ = dynamic_cast<Spanner*> (me);
   columns_ 
-    = Pointer_group_interface__extract_grobs (me, (Grob *) 0, "note-columns");
+    = extract_grob_array (me, ly_symbol2scm ("note-columns"));
   
   if (columns_.is_empty ())
     {
@@ -705,8 +705,7 @@ Array<Extra_collision_info>
 Slur_score_state::get_extra_encompass_infos () const
 {
   Link_array<Grob> encompasses
-    = Pointer_group_interface__extract_grobs (slur_, (Grob *)0,
-                                             "encompass-objects");
+    = extract_grob_array (slur_, ly_symbol2scm ("encompass-objects"));
   Array<Extra_collision_info> collision_infos;
   for (int i = encompasses.size (); i--; )
     {
index 5d8138b36ec2d78df30e820c8fc210d9bd6a01b0..c219eb06072a109f7537d605c42e56e3a95c908e 100644 (file)
@@ -203,7 +203,7 @@ static Direction
 get_default_dir (Grob*me)
 {
   Link_array<Grob> encompasses
-    = Pointer_group_interface__extract_grobs (me, (Grob*) 0, "note-columns");
+    = extract_grob_array (me, ly_symbol2scm ("note-columns"));
 
   Direction d = DOWN;
   for (int i = 0; i < encompasses.size (); i ++)
index b4de3c1ce5c2a03e0c49a6aa86fabd71d7a43c10..f3ed96697595dd6e2aa92ab9d4ecfd3f12e54b7e 100644 (file)
@@ -393,7 +393,7 @@ Stem::position_noteheads (Grob *me)
     return;
 
   Link_array<Grob> heads =
-    Pointer_group_interface__extract_grobs (me, (Grob*) 0, "note-heads");
+    extract_grob_array (me, ly_symbol2scm ("note-heads"));
 
   heads.sort (compare_position);
   Direction dir = get_direction (me);
index d667bdd2a0a22d32a5f58879e04c61b5075ad131..c8aea6b379f9b5714849a9d996c11abe9035a324 100644 (file)
@@ -461,7 +461,7 @@ Link_array<Grob>
 System::columns () const
 {
   Link_array<Grob> acs
-    = Pointer_group_interface__extract_grobs (this, (Grob*) 0, "columns");
+    = extract_grob_array (this, ly_symbol2scm ("columns"));
   bool found = false;
   for (int i = acs.size (); i--;)
     {
index dbe70e3ee8f6c9fbdca8cfe434ca637c0bdfb208..a6f053376e2dfbf1dbcd33cde29e43a22e22d01e 100644 (file)
@@ -74,7 +74,7 @@ void
 Tie_column::werner_directions (Grob *me)
 {
   Link_array<Grob> ties =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "ties");
+    extract_grob_array (me, ly_symbol2scm ("ties"));
 
   if (!ties.size ())
     return ;
index 380a5f43637dde5470f42f920f85d0882bcc07b5..2db6fca93fd8db07203507fbb0cec142ea288a51 100644 (file)
@@ -79,9 +79,7 @@ Tuplet_bracket::parallel_beam (Grob *me, Link_array<Grob> const &cols, bool *equ
   if (! (b1 && (b1 == b2) && !sp->is_broken ()))
       return 0;
 
-  Link_array<Grob> beam_stems = Pointer_group_interface__extract_grobs
-    (b1, (Grob*)0, "stems");
-
+  Link_array<Grob> beam_stems = extract_grob_array (b1, ly_symbol2scm ("stems"));
   if (beam_stems.size () == 0)
     {
       programming_error ("Beam under tuplet bracket has no stems!");
@@ -108,13 +106,11 @@ Tuplet_bracket::print (SCM smob)
   Grob *me = unsmob_grob (smob);
   Stencil  mol;
   Link_array<Grob> columns =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-columns");
+    extract_grob_array (me, ly_symbol2scm ("note-columns"));
 
   if (!columns.size ())
     return mol.smobbed_copy ();
 
-  
-
   {
     SCM lp = me->get_property ("left-position");
     SCM rp = me->get_property ("right-position");  
@@ -307,7 +303,7 @@ void
 Tuplet_bracket::calc_position_and_height (Grob*me, Real *offset, Real * dy) 
 {
   Link_array<Grob> columns =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-columns");
+    extract_grob_array (me, ly_symbol2scm ("note-columns"));
 
   SCM cols = me->get_property ("note-columns");
   Grob * commony = common_refpoint_of_list (cols, me, Y_AXIS);
@@ -419,7 +415,7 @@ Tuplet_bracket::before_line_breaking (SCM smob)
 {
   Grob *me = unsmob_grob (smob);
   Link_array<Grob> columns =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-columns");
+    extract_grob_array (me, ly_symbol2scm ("note-columns"));
 
 
   for (int i = columns.size (); i--;)
@@ -439,7 +435,7 @@ Tuplet_bracket::after_line_breaking (SCM smob)
 {
   Grob * me = unsmob_grob (smob);
   Link_array<Grob> columns =
-    Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-columns");
+    extract_grob_array (me, ly_symbol2scm ("note-columns"));
 
   if (!columns.size ())
     {