//----------------------------------------------------------------------------// // // // S c o r e V i s i t o r // // // //----------------------------------------------------------------------------// // <editor-fold defaultstate="collapsed" desc="hdr"> // // Copyright © Hervé Bitteur and others 2000-2013. All rights reserved. // // This software is released under the GNU General Public License. // // Goto http://kenai.com/projects/audiveris to report bugs or suggestions. // //----------------------------------------------------------------------------// // </editor-fold> package omr.score.visitor; import omr.score.Score; import omr.score.entity.Arpeggiate; import omr.score.entity.Articulation; import omr.score.entity.Barline; import omr.score.entity.Beam; import omr.score.entity.Chord; import omr.score.entity.ChordSymbol; import omr.score.entity.Clef; import omr.score.entity.Coda; import omr.score.entity.DirectionStatement; import omr.score.entity.Dynamics; import omr.score.entity.Fermata; import omr.score.entity.KeySignature; import omr.score.entity.Measure; import omr.score.entity.MeasureElement; import omr.score.entity.MeasureNode; import omr.score.entity.Note; import omr.score.entity.Ornament; import omr.score.entity.Page; import omr.score.entity.PartNode; import omr.score.entity.Pedal; import omr.score.entity.ScoreNode; import omr.score.entity.ScoreSystem; import omr.score.entity.Segno; import omr.score.entity.Slur; import omr.score.entity.Staff; import omr.score.entity.SystemPart; import omr.score.entity.Text; import omr.score.entity.TimeSignature; import omr.score.entity.Tuplet; import omr.score.entity.VisitableNode; import omr.score.entity.Wedge; /** * Interface {@code ScoreVisitor} is meant to visit any node of the * Score hierarchy. * * <p>The hierarchy is meant to be browsed "depth-first".</p> * <p> * All the polymorphic visit(node) methods return a boolean which * tells whether the visit shall continue to the children of this class. * <ul> * <li>It is true by default (the whole visitable hierarchy is meant to be * visited).</li> * <li>Returning false avoids the automatic visit of the children of the class * for the specific visitor, it is then up to the caller to potentially handle * the children by another way.</li> * </ul> * * @author Hervé Bitteur */ public interface ScoreVisitor { //~ Methods ---------------------------------------------------------------- boolean visit (Articulation node); boolean visit (Arpeggiate node); boolean visit (Barline node); boolean visit (Beam node); boolean visit (Chord node); boolean visit (ChordSymbol node); boolean visit (Clef node); boolean visit (Coda node); boolean visit (DirectionStatement node); boolean visit (Dynamics node); boolean visit (Fermata node); boolean visit (KeySignature node); boolean visit (Measure node); boolean visit (MeasureElement node); boolean visit (MeasureNode node); boolean visit (Note node); boolean visit (Ornament node); boolean visit (Page node); boolean visit (PartNode node); boolean visit (Pedal node); boolean visit (Score node); boolean visit (ScoreNode node); boolean visit (Segno node); boolean visit (Slur node); boolean visit (Staff node); boolean visit (ScoreSystem node); boolean visit (SystemPart node); boolean visit (Text node); boolean visit (TimeSignature node); boolean visit (Tuplet node); boolean visit (VisitableNode node); boolean visit (Wedge node); }