From 029ae298e4c56984889a7fe47dbbc58f6c7055f4 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Wed, 9 Mar 2005 00:13:59 +0000 Subject: [PATCH] * lily/include/group-interface.hh (extract_grob_array): rename from Pointer_group_interface__extract_grobs --- ChangeLog | 3 +++ lily/accidental-placement.cc | 7 ++----- lily/align-interface.cc | 4 ++-- lily/ambitus.cc | 2 +- lily/beam-concave.cc | 2 +- lily/beam-quanting.cc | 2 +- lily/beam.cc | 28 ++++++++++++++-------------- lily/break-align-interface.cc | 3 +-- lily/dot-column.cc | 2 +- lily/group-interface.cc | 33 +++++++++++++++++++++++++++++++++ lily/horizontal-bracket.cc | 2 +- lily/include/group-interface.hh | 17 ++--------------- lily/ledger-line-spanner.cc | 4 ++-- lily/lyric-extender.cc | 3 +-- lily/slur-configuration.cc | 2 +- lily/slur-scoring.cc | 5 ++--- lily/slur.cc | 2 +- lily/stem.cc | 2 +- lily/system.cc | 2 +- lily/tie-column.cc | 2 +- lily/tuplet-bracket.cc | 14 +++++--------- 21 files changed, 77 insertions(+), 64 deletions(-) diff --git a/ChangeLog b/ChangeLog index 587ba152e7..da0021e5a8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-03-09 Han-Wen Nienhuys + * 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 diff --git a/lily/accidental-placement.cc b/lily/accidental-placement.cc index 2fae8292a3..91e0de193b 100644 --- a/lily/accidental-placement.cc +++ b/lily/accidental-placement.cc @@ -312,7 +312,7 @@ Accidental_placement::position_accidentals (Grob * me) if (Note_collision_interface::has_interface (c)) { Link_array 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 (); diff --git a/lily/align-interface.cc b/lily/align-interface.cc index 0486f09d3a..89c1991077 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -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 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 elems; Link_array 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); diff --git a/lily/ambitus.cc b/lily/ambitus.cc index 7f8cf43fcf..43c9f0a01b 100644 --- a/lily/ambitus.cc +++ b/lily/ambitus.cc @@ -25,7 +25,7 @@ Ambitus::print (SCM smob) Stencil stencil; // join heads - Link_array heads (Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-heads")); + Link_array heads (extract_grob_array (me, ly_symbol2scm ("note-heads"))); if (to_boolean (me->get_property ("join-heads")) && heads.size() > 1) { diff --git a/lily/beam-concave.cc b/lily/beam-concave.cc index ea040131cb..0f2cb2fb9c 100644 --- a/lily/beam-concave.cc +++ b/lily/beam-concave.cc @@ -89,7 +89,7 @@ Beam::check_concave (SCM smob) Grob *me = unsmob_grob (smob); Link_array stems = - Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems"); + extract_grob_array (me, ly_symbol2scm ("stems")); if (is_knee (me)) return SCM_UNSPECIFIED; diff --git a/lily/beam-quanting.cc b/lily/beam-quanting.cc index 54cee073b9..a3197932f6 100644 --- a/lily/beam-quanting.cc +++ b/lily/beam-quanting.cc @@ -138,7 +138,7 @@ Beam::quanting (SCM smob) precompute for every stem 2 factors. */ Link_array stems = - Pointer_group_interface__extract_grobs (me, (Grob*)0, "stems"); + extract_grob_array (me, ly_symbol2scm ("stems")); Array stem_infos; Array base_lengths; Array stem_xposns; diff --git a/lily/beam.cc b/lily/beam.cc index 33672e4608..3880f691bd 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -229,7 +229,7 @@ void Beam::connect_beams (Grob *me) { Link_array 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 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 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 stems - = Pointer_group_interface__extract_grobs (me, (Grob*) 0, "stems"); + = extract_grob_array (me, ly_symbol2scm ("stems")); for (int i = 0; i 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 x_posns ; Link_array 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 x_posns ; Link_array 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 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 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_arraystems = - 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_arraystems = - 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_arraystems = - 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_arraystems = - 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_arraystems = - 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--;) diff --git a/lily/break-align-interface.cc b/lily/break-align-interface.cc index fec7946752..36966bcd13 100644 --- a/lily/break-align-interface.cc +++ b/lily/break-align-interface.cc @@ -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)); diff --git a/lily/dot-column.cc b/lily/dot-column.cc index f30c544b81..48e325e133 100644 --- a/lily/dot-column.cc +++ b/lily/dot-column.cc @@ -231,7 +231,7 @@ SCM Dot_column::do_shifts (Grob*me) { Link_array 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 diff --git a/lily/group-interface.cc b/lily/group-interface.cc index 95d388cc07..eccb1210da 100644 --- a/lily/group-interface.cc +++ b/lily/group-interface.cc @@ -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 +extract_grob_array (Grob const *elt, SCM symbol) +{ + Link_array 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 +extract_item_array (Grob const *elt, SCM symbol) +{ + Link_array 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 (unsmob_grob (e))); + } + + arr.reverse (); + return arr; +} diff --git a/lily/horizontal-bracket.cc b/lily/horizontal-bracket.cc index 98f905f766..1abe992ae4 100644 --- a/lily/horizontal-bracket.cc +++ b/lily/horizontal-bracket.cc @@ -36,7 +36,7 @@ Horizontal_bracket::print (SCM smob) { Grob * me = unsmob_grob (smob); Spanner *sp = dynamic_cast (me); - Link_array gs = Pointer_group_interface__extract_grobs (me, (Grob*)0, "columns"); + Link_array gs = extract_grob_array (me, ly_symbol2scm ("columns")); if (!gs.size ()) { diff --git a/lily/include/group-interface.hh b/lily/include/group-interface.hh index 228f58b6a1..6471007845 100644 --- a/lily/include/group-interface.hh +++ b/lily/include/group-interface.hh @@ -32,21 +32,8 @@ public: static void add_grob (Grob*, SCM nm, Grob*e); }; -template -Link_array -Pointer_group_interface__extract_grobs (Grob const *elt, T *, const char* name) -{ - Link_array 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 (unsmob_grob (e))); - } - - arr.reverse (); - return arr; -} +Link_array extract_grob_array (Grob const *elt, SCM symbol); +Link_array extract_item_array (Grob const *elt, SCM symbol); diff --git a/lily/ledger-line-spanner.cc b/lily/ledger-line-spanner.cc index 0af662952f..903a97bb1f 100644 --- a/lily/ledger-line-spanner.cc +++ b/lily/ledger-line-spanner.cc @@ -96,7 +96,7 @@ Ledger_line_spanner::set_spacing_rods (SCM smob) if (!staff) return SCM_EOL; - Link_array heads (Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-heads")); + Link_array 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 (unsmob_grob (smob)); - Link_array heads (Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-heads")); + Link_array heads (extract_grob_array (me, ly_symbol2scm ("note-heads"))); if (heads.is_empty ()) return SCM_EOL; diff --git a/lily/lyric-extender.cc b/lily/lyric-extender.cc index 700fbf40cd..b71d4337c3 100644 --- a/lily/lyric-extender.cc +++ b/lily/lyric-extender.cc @@ -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 heads (Pointer_group_interface__extract_grobs (me, (Grob*)0, - "heads")); + Link_array heads (extract_grob_array (me, ly_symbol2scm ("heads"))); if (!heads.size ()) return SCM_EOL; diff --git a/lily/slur-configuration.cc b/lily/slur-configuration.cc index 0b9dc137d2..ec1bb08840 100644 --- a/lily/slur-configuration.cc +++ b/lily/slur-configuration.cc @@ -115,7 +115,7 @@ Slur_configuration::generate_curve (Slur_score_state const &state, } Link_array 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])) { diff --git a/lily/slur-scoring.cc b/lily/slur-scoring.cc index 4ead1be2b5..b06a1b019e 100644 --- a/lily/slur-scoring.cc +++ b/lily/slur-scoring.cc @@ -277,7 +277,7 @@ Slur_score_state::fill (Grob *me) { slur_ = dynamic_cast (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 Slur_score_state::get_extra_encompass_infos () const { Link_array encompasses - = Pointer_group_interface__extract_grobs (slur_, (Grob *)0, - "encompass-objects"); + = extract_grob_array (slur_, ly_symbol2scm ("encompass-objects")); Array collision_infos; for (int i = encompasses.size (); i--; ) { diff --git a/lily/slur.cc b/lily/slur.cc index 5d8138b36e..c219eb0607 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -203,7 +203,7 @@ static Direction get_default_dir (Grob*me) { Link_array 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 ++) diff --git a/lily/stem.cc b/lily/stem.cc index b4de3c1ce5..f3ed966975 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -393,7 +393,7 @@ Stem::position_noteheads (Grob *me) return; Link_array 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); diff --git a/lily/system.cc b/lily/system.cc index d667bdd2a0..c8aea6b379 100644 --- a/lily/system.cc +++ b/lily/system.cc @@ -461,7 +461,7 @@ Link_array System::columns () const { Link_array 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--;) { diff --git a/lily/tie-column.cc b/lily/tie-column.cc index dbe70e3ee8..a6f053376e 100644 --- a/lily/tie-column.cc +++ b/lily/tie-column.cc @@ -74,7 +74,7 @@ void Tie_column::werner_directions (Grob *me) { Link_array ties = - Pointer_group_interface__extract_grobs (me, (Grob*)0, "ties"); + extract_grob_array (me, ly_symbol2scm ("ties")); if (!ties.size ()) return ; diff --git a/lily/tuplet-bracket.cc b/lily/tuplet-bracket.cc index 380a5f4363..2db6fca93f 100644 --- a/lily/tuplet-bracket.cc +++ b/lily/tuplet-bracket.cc @@ -79,9 +79,7 @@ Tuplet_bracket::parallel_beam (Grob *me, Link_array const &cols, bool *equ if (! (b1 && (b1 == b2) && !sp->is_broken ())) return 0; - Link_array beam_stems = Pointer_group_interface__extract_grobs - (b1, (Grob*)0, "stems"); - + Link_array 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 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 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 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 columns = - Pointer_group_interface__extract_grobs (me, (Grob*)0, "note-columns"); + extract_grob_array (me, ly_symbol2scm ("note-columns")); if (!columns.size ()) { -- 2.39.5