//============================================================================= // MuseScore // Music Composition & Notation // // Copyright (C) 2011 Werner Schweer // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 // as published by the Free Software Foundation and appearing in // the file LICENCE.GPL //============================================================================= #ifndef __SPANNERMAP_H__ #define __SPANNERMAP_H__ #include "thirdparty/intervaltree/IntervalTree.h" namespace Ms { class Spanner; //--------------------------------------------------------- // SpannerMap //--------------------------------------------------------- class SpannerMap : std::multimap { mutable bool dirty; mutable IntervalTree tree; std::vector< ::Interval > results; void update() const; public: SpannerMap(); const std::vector< ::Interval >& findContained(int start, int stop); const std::vector< ::Interval >& findOverlapping(int start, int stop); const std::multimap& map() const { return *this; } std::multimap::const_reverse_iterator crbegin() const { return std::multimap::crbegin(); } std::multimap::const_reverse_iterator crend() const { return std::multimap::crend(); } std::multimap::const_iterator cbegin() const { return std::multimap::cbegin(); } std::multimap::const_iterator cend() const { return std::multimap::cend(); } void addSpanner(Spanner* s); bool removeSpanner(Spanner* s); }; } // namespace Ms #endif