X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fgrob-info.cc;h=48af87615360c93d684f863be09d7cb4aece5dc8;hb=4a401ca1c60f428daa242dbdd102fdb3f327ebfb;hp=5ad3d5701e36fa6525fd422d017dcdd19528662a;hpb=b6a8afbd0a9a0b36b07c114503d81a7c420e09e7;p=lilypond.git diff --git a/lily/grob-info.cc b/lily/grob-info.cc index 5ad3d5701e..48af876153 100644 --- a/lily/grob-info.cc +++ b/lily/grob-info.cc @@ -1,14 +1,24 @@ /* - grob-info.cc -- implement Grob_info + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 1997--2011 Han-Wen Nienhuys - (c) 1997--2006 Han-Wen Nienhuys + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #include "context.hh" #include "grob-info.hh" -#include "grob.hh" #include "item.hh" #include "music.hh" #include "spanner.hh" @@ -20,6 +30,12 @@ Grob_info::Grob_info (Translator *t, Grob *g) origin_trans_ = t; grob_ = g; start_end_ = START; + rerouting_daddy_context_ = 0; + + /* + assert here, because this is easier to debug. + */ + assert (g); } Grob_info::Grob_info () @@ -27,24 +43,7 @@ Grob_info::Grob_info () grob_ = 0; start_end_ = START; origin_trans_ = 0; -} - -/* ES TODO: Junk this when no more engravers use try_music */ -Music * -Grob_info::music_cause () const -{ - SCM cause = grob_->get_property ("cause"); - - Music *ret = unsmob_music (cause); - if (ret) - return ret; - else - { - Stream_event *ev = unsmob_stream_event (cause); - if (!ev) - return 0; - return unsmob_music (ev->get_property ("music-cause")); - } + rerouting_daddy_context_ = 0; } Stream_event * @@ -54,11 +53,11 @@ Grob_info::event_cause () const return unsmob_stream_event (cause); } -vector +vector Grob_info::origin_contexts (Translator *end) const { Context *t = origin_trans_->context (); - vector r; + vector r; do { r.push_back (t); @@ -98,24 +97,8 @@ Grob_info::ultimate_event_cause () const return unsmob_stream_event (cause); } -/* -ES TODO: Junk this when no more engraver uses try_music -*/ -Music * -Grob_info::ultimate_music_cause () const +bool +Grob_info::less (Grob_info i, Grob_info j) { - SCM cause = grob_->self_scm (); - while (unsmob_grob (cause)) - { - cause = unsmob_grob (cause)->get_property ("cause"); - } - - Music *ret = unsmob_music (cause); - if (ret) - return ret; - else - { - Stream_event *ev = unsmob_stream_event (cause); - return unsmob_music (ev->get_property ("music-cause")); - } + return Grob::less (i.grob (), j.grob ()); }