]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/interval-minefield.hh
Issue 4997/3: Use Preinit in Music
[lilypond.git] / lily / include / interval-minefield.hh
1 /*
2   This file is part of LilyPond, the GNU music typesetter.
3
4   Copyright (C) 2011--2015 Mike Solomon <mike@mikesolomon.org>
5   Jan Nieuwenhuizen <janneke@gnu.org>
6
7   LilyPond is free software: you can redistribute it and/or modify
8   it under the terms of the GNU General Public License as published by
9   the Free Software Foundation, either version 3 of the License, or
10   (at your option) any later version.
11
12   LilyPond is distributed in the hope that it will be useful,
13   but WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   GNU General Public License for more details.
16
17   You should have received a copy of the GNU General Public License
18   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
19 */
20
21 #ifndef INTERVAL_MINEFIELD_HH
22 #define INTERVAL_MINEFIELD_HH
23
24 #include "lily-proto.hh"
25 #include "std-vector.hh"
26 #include "interval.hh"
27
28 class Interval_minefield
29 {
30 public:
31   Interval_minefield (Interval, Real);
32   void add_forbidden_interval (Interval forbidden);
33   Interval feasible_placements ();
34   void solve ();
35
36 private:
37   vector<Interval> forbidden_intervals_;
38   Interval feasible_placements_;
39   Real bulk_;
40 };
41
42 #endif // INTERVAL_MINEFIELD_HH