]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/property-iterator.hh
08f7a983b8c3b78db6b55178c615f3959de084be
[lilypond.git] / lily / include / property-iterator.hh
1 /*
2   This file is part of LilyPond, the GNU music typesetter.
3
4   Copyright (C) 1997--2012 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 #ifndef PROPERTY_ITERATOR_HH
21 #define PROPERTY_ITERATOR_HH
22
23 #include "simple-music-iterator.hh"
24
25 /**
26    Iterate a property.
27 */
28 class Property_iterator : public Simple_music_iterator
29 {
30 public:
31   DECLARE_SCHEME_CALLBACK (constructor, ());
32   DECLARE_SCHEME_CALLBACK (once_finalization, (SCM, SCM, SCM));
33   DECLARE_CLASSNAME (Property_iterator);
34
35 protected:
36   virtual void do_quit ();
37   virtual void process (Moment);
38 };
39
40 /**
41    Iterate a property.
42 */
43 class Property_unset_iterator : public Simple_music_iterator
44 {
45 public:
46   DECLARE_SCHEME_CALLBACK (constructor, ());
47   DECLARE_CLASSNAME (Property_unset_iterator);
48 protected:
49   virtual void process (Moment);
50 };
51
52 class Push_property_iterator : public Simple_music_iterator
53 {
54 public:
55   DECLARE_SCHEME_CALLBACK (constructor, ());
56   DECLARE_SCHEME_CALLBACK (once_finalization, (SCM, SCM));
57   DECLARE_CLASSNAME (Push_property_iterator);
58 protected:
59   virtual void process (Moment);
60   virtual void do_quit ();
61 };
62
63 class Pop_property_iterator : public Simple_music_iterator
64 {
65 public:
66   DECLARE_SCHEME_CALLBACK (constructor, ());
67   DECLARE_CLASSNAME (Pop_property_iterator);
68 protected:
69   virtual void process (Moment);
70 };
71
72 #endif // PROPERTY_ITERATOR_HH