From: fred Date: Sun, 24 Mar 2002 19:50:32 +0000 (+0000) Subject: lilypond-0.1.1 X-Git-Tag: release/1.5.59~4308 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=32533bde39e382f923c9f05facaf7a636b5ad15c;p=lilypond.git lilypond-0.1.1 --- diff --git a/lily/score-elem.cc b/lily/score-elem.cc index c95817d9fd..3e945a5e2b 100644 --- a/lily/score-elem.cc +++ b/lily/score-elem.cc @@ -67,18 +67,22 @@ Score_elem::TeX_string() const } - -Score_elem::Score_elem(Score_elem const&s) +void +Score_elem::copy_dependencies(Score_elem const &s) { - transparent_b_ = s.transparent_b_; - empty_b_ = s.empty_b_; /* called from derived ctor, so most info points to the same deps as (Directed_graph_node&)s. Nobody points to us, so don't copy dependents. */ copy_edges_out(s); - x_group_element_i_ = 0; - y_group_element_i_ = 0; +} + +Score_elem::Score_elem(Score_elem const&s) +{ + transparent_b_ = s.transparent_b_; + empty_b_ = s.empty_b_; + x_group_l_ = 0; + y_group_l_ = 0; status_ = s.status_; assert(!s.output); output = 0; @@ -93,7 +97,7 @@ Score_elem::~Score_elem() delete output; status_ = DELETED; output = 0; - assert(!x_group_element_i_ && !y_group_element_i_); + } void @@ -192,8 +196,8 @@ Score_elem::print()const Score_elem::Score_elem() { transparent_b_ = empty_b_ = false; - x_group_element_i_ = 0; - y_group_element_i_ =0; + x_group_l_ = 0; + y_group_l_ =0; pscore_l_=0; offset_ = Offset(0,0); output = 0; @@ -240,7 +244,10 @@ Score_elem::breakable_col_processing() if (status_ >= PREBROKEN ) return; - assert(status_ != PREBREAKING); // cyclic dependency + if(status_== PREBREAKING) { + status_ = PREBROKEN; + return ; + } status_ = PREBREAKING; for (int i=0; i < dependency_size(); i++) @@ -257,7 +264,10 @@ Score_elem::break_processing() if (status_ >= BROKEN ) return; - assert(status_ != BREAKING); // cyclic dependency + if (status_ == BREAKING) { + status_ = BROKEN; + return; + } status_ = BREAKING; for (int i=0; i < dependency_size(); i++) @@ -266,6 +276,7 @@ Score_elem::break_processing() do_break_processing(); status_ = BROKEN; + } void @@ -338,8 +349,13 @@ Score_elem::do_substitute_dependency(Score_elem*,Score_elem*) { } void -Score_elem::do_substitute_dependent(Score_elem*,Score_elem*) +Score_elem::do_substitute_dependent(Score_elem*o,Score_elem*n) { + if ( o== y_group_l_ ) { + y_group_l_ = n ? n->vertical_group() : 0; + } else if (o == x_group_l_ ) { + x_group_l_ = n ? n->horizontal_group() : 0; + } } @@ -387,6 +403,14 @@ Score_elem::substitute_dependency(Score_elem* old, Score_elem* new_l) old->do_substitute_dependent(this, 0); } +void +Score_elem::junk_dependencies() +{ + while ( dependency_size() ) { + remove_edge_out( dependency( 0 )); + } +} + void Score_elem::handle_broken_dependencies() { @@ -421,10 +445,6 @@ Score_elem::handle_broken_dependencies() for (int i=0; i unlink_all(); junk_links(); - y_group_element_i_ = 0; - x_group_element_i_ = 0; + y_group_l_ = 0; + x_group_l_ = 0; } void