if (nr && nr->in_event_class ("note-event"))
{
Pitch pitch = *unsmob_pitch (nr->get_property ("pitch"));
- if (pitch_interval_.is_empty())
- causes_[UP] = causes_[DOWN] = nr;
- Direction expand_dir = pitch_interval_.add_point (pitch);
- if (expand_dir)
- causes_[expand_dir] = nr;
+ Drul_array<bool> expands = pitch_interval_.add_point (pitch);
+ if (expands[UP])
+ causes_[UP] = nr;
+ if (expands[DOWN])
+ causes_[DOWN] = nr;
}
}
public:
Pitch_interval ();
Pitch_interval (Pitch, Pitch);
- Direction add_point (Pitch);
+ Drul_array<bool> add_point (Pitch);
bool is_empty () const;
};
public:
Pitch_lexicographic_interval ();
Pitch_lexicographic_interval (Pitch, Pitch);
- Direction add_point (Pitch);
+ Drul_array<bool> add_point (Pitch);
bool is_empty () const;
};
return at (LEFT) > at (RIGHT);
}
-Direction
+Drul_array<bool>
Pitch_interval::add_point (Pitch p)
{
- if (is_empty())
- {
- at (LEFT) = at (RIGHT) = p;
- return CENTER;
- }
- else if (at (LEFT).tone_pitch () > p.tone_pitch ())
+ Drul_array<bool> expansions(false,false);
+ if (at (LEFT).tone_pitch () > p.tone_pitch ())
{
at (LEFT) = p;
- return LEFT;
+ expansions [LEFT] = true;
}
- else if (at (RIGHT).tone_pitch () < p.tone_pitch ())
+ if (at (RIGHT).tone_pitch () < p.tone_pitch ())
{
at (RIGHT) = p;
- return RIGHT;
+ expansions [RIGHT] = true;
}
- else
- return CENTER;
+ return expansions;
}
return at (LEFT) > at (RIGHT);
}
-Direction
+Drul_array<bool>
Pitch_lexicographic_interval::add_point (Pitch p)
{
- if (is_empty())
- {
- at (LEFT) = at (RIGHT) = p;
- return CENTER;
- }
- else if (at (LEFT) > p)
+ Drul_array<bool> expansions(false,false);
+ if (at (LEFT) > p)
{
at (LEFT) = p;
- return LEFT;
+ expansions [LEFT] = true;
}
- else if (at (RIGHT) < p)
+ if (at (RIGHT) < p)
{
at (RIGHT) = p;
- return RIGHT;
+ expansions [RIGHT] = true;
}
- else
- return CENTER;
+ return expansions;
}