OLD | NEW |
1 /* | 1 /* |
2 This file is part of LilyPond, the GNU music typesetter. | 2 This file is part of LilyPond, the GNU music typesetter. |
3 | 3 |
4 Copyright (C) 2004--2020 Han-Wen Nienhuys <hanwen@xs4all.nl> | 4 Copyright (C) 2004--2020 Han-Wen Nienhuys <hanwen@xs4all.nl> |
5 | 5 |
6 LilyPond is free software: you can redistribute it and/or modify | 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 | 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 | 8 the Free Software Foundation, either version 3 of the License, or |
9 (at your option) any later version. | 9 (at your option) any later version. |
10 | 10 |
(...skipping 16 matching lines...) Expand all Loading... |
27 { | 27 { |
28 public: | 28 public: |
29 DECLARE_SCHEME_CALLBACK (constructor, ()); | 29 DECLARE_SCHEME_CALLBACK (constructor, ()); |
30 protected: | 30 protected: |
31 void process (Moment) override; | 31 void process (Moment) override; |
32 }; | 32 }; |
33 | 33 |
34 void | 34 void |
35 Apply_context_iterator::process (Moment m) | 35 Apply_context_iterator::process (Moment m) |
36 { | 36 { |
37 SCM proc = get_music ()->get_property ("procedure"); | 37 Music *music = get_music (); |
| 38 SCM proc = music->get_property ("procedure"); |
38 if (ly_is_procedure (proc)) | 39 if (ly_is_procedure (proc)) |
39 with_location (get_music ()->get_property ("origin"), | 40 { |
40 proc, get_outlet ()->self_scm ()); | 41 Context *context = get_outlet (); |
| 42 SCM origin = music->get_property ("origin"); |
| 43 if (!to_boolean (music->get_property ("post"))) |
| 44 context->apply (origin, proc); |
| 45 else |
| 46 context->apply_finally (origin, proc); |
| 47 } |
41 else | 48 else |
42 get_music ()->origin ()->warning (_ ("\\applycontext argument is not a proce
dure")); | 49 music->origin ()->warning (_ ("\\applycontext argument is not a procedure"))
; |
43 | 50 |
44 Simple_music_iterator::process (m); | 51 Simple_music_iterator::process (m); |
45 } | 52 } |
46 | 53 |
47 IMPLEMENT_CTOR_CALLBACK (Apply_context_iterator); | 54 IMPLEMENT_CTOR_CALLBACK (Apply_context_iterator); |
48 | 55 |
OLD | NEW |