1 /* 2 This file is part of LilyPond, the GNU music typesetter. 3 4 Copyright (C) 1997--2021 Han-Wen Nienhuys <hanwen@xs4all.nl> 5 6 LilyPond is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 LilyPond is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with LilyPond. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #include "event-chord-iterator.hh" 21 22 #include "context.hh" 23 #include "duration.hh" 24 #include "input.hh" 25 #include "international.hh" 26 #include "music.hh" 27 #include "warn.hh" 28 Event_chord_iterator()29Event_chord_iterator::Event_chord_iterator () 30 { 31 } 32 33 void create_contexts()34Event_chord_iterator::create_contexts () 35 { 36 Simple_music_iterator::create_contexts (); 37 descend_to_bottom_context (); 38 } 39 40 void process(Moment m)41Event_chord_iterator::process (Moment m) 42 { 43 if (!has_started ()) 44 { 45 for (SCM s = get_property (get_music (), "elements"); 46 scm_is_pair (s); s = scm_cdr (s)) 47 { 48 Music *mus = unsmob<Music> (scm_car (s)); 49 report_event (mus); 50 } 51 for (SCM s = get_property (get_music (), "articulations"); 52 scm_is_pair (s); s = scm_cdr (s)) 53 { 54 Music *mus = unsmob<Music> (scm_car (s)); 55 report_event (mus); 56 } 57 } 58 Simple_music_iterator::process (m); 59 } 60 61 IMPLEMENT_CTOR_CALLBACK (Event_chord_iterator); 62