X-Git-Url: https://git.donarmstrong.com/lilypond.git?a=blobdiff_plain;f=lily%2Fseparating-group-spanner.cc;h=cc6f70c219ac5450617da42981eb1e009d08677b;hb=3c2f386f1385a10dafbb811be245f5a75d6b132c;hp=6b5c2302a82d96992e443e587bb8022ab18e2345;hpb=cb788160bb99e5c6d1e28ba9dd3be955b2a99edc;p=lilypond.git diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc index 6b5c2302a8..cc6f70c219 100644 --- a/lily/separating-group-spanner.cc +++ b/lily/separating-group-spanner.cc @@ -14,8 +14,8 @@ #include "dimensions.hh" #include "group-interface.hh" -static Rod -make_rod (Item *l, Item *r) +static void +do_rod (Item *l, Item *r) { Rod rod; @@ -31,16 +31,16 @@ make_rod (Item *l, Item *r) rod.distance_f_ = li[RIGHT] - ri[LEFT]; rod.columnize (); - return rod; + rod.add_to_cols (); } - -Array -Separating_group_spanner::get_rods () const +MAKE_SCHEME_CALLBACK(Separating_group_spanner,set_spacing_rods); +SCM +Separating_group_spanner::set_spacing_rods (SCM smob) { - Array a; + Score_element*me = unsmob_element (smob); - for (SCM s = get_elt_property ("elements"); gh_pair_p (s) && gh_pair_p (gh_cdr (s)); s = gh_cdr (s)) + for (SCM s = me->get_elt_property ("elements"); gh_pair_p (s) && gh_pair_p (gh_cdr (s)); s = gh_cdr (s)) { /* Order of elements is reversed! @@ -60,29 +60,28 @@ Separating_group_spanner::get_rods () const Item *rb = dynamic_cast(r->find_prebroken_piece (LEFT)); - a.push (make_rod(l, r)); + do_rod(l, r); if (lb) { - Rod rod(make_rod (lb, r)); - a.push (rod); + do_rod (lb, r); } if (rb) { - a.push (make_rod (l, rb)); + do_rod (l, rb); } if (lb && rb) { - Rod rod(make_rod (lb, rb)); - a.push (rod); + do_rod (lb, rb); + } } /* We've done our job, so we get lost. */ - for (SCM s = get_elt_property ("elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = me->get_elt_property ("elements"); gh_pair_p (s); s = gh_cdr (s)) { Item * it =dynamic_cast(unsmob_element (gh_car (s))); if (it && it->broken_b ()) @@ -92,10 +91,8 @@ Separating_group_spanner::get_rods () const } it->suicide (); } - - ((Separating_group_spanner *)this)->suicide (); - - return a; + me->suicide (); + return SCM_UNDEFINED ; } void @@ -106,8 +103,8 @@ Separating_group_spanner::add_spacing_unit (Score_element* me ,Item*i) } -Separating_group_spanner::Separating_group_spanner (SCM s) - : Spanner (s) +void +Separating_group_spanner::set_interface (Score_element*me) { - set_elt_property ("elements", SCM_EOL); + me->set_elt_property ("elements", SCM_EOL); }