X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=flower%2Finclude%2Finterval-set.hh;h=84f6debb30a6a7839025e1f07a9fad30fdd6cadb;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=b0acda65096bc8a75358c28d0a6c907a55ec9492;hpb=08560a1b8076630c4fc6cb9b902614d8b74fd6fc;p=lilypond.git diff --git a/flower/include/interval-set.hh b/flower/include/interval-set.hh index b0acda6509..84f6debb30 100644 --- a/flower/include/interval-set.hh +++ b/flower/include/interval-set.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2004--2012 Han-Wen Nienhuys + Copyright (C) 2004--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,20 +23,20 @@ #include "std-vector.hh" #include "interval.hh" -/* - A union of intervals in the real line. - - Abysmal performance (quadratic) for large N, hopefully we don't have - that large N. In any case, this should probably be rewritten to use - a balanced tree. -*/ -struct Interval_set +class Interval_set { - vector allowed_regions_; - +public: Interval_set (); - void set_full (); - void remove_interval (Interval rm); + + static Interval_set interval_union (vector); + + vector const &intervals () const { return intervals_; } + vector::const_iterator upper_bound (Real x) const; + Real nearest_point (Real x, Direction dir = CENTER) const; + Interval_set complement () const; + +private: + vector intervals_; }; #endif /* INTERVAL_SET_HH */