43 #include "../Text/TextTools.h"
44 #include "../Clonable.h"
80 Range(
const T& a = 0,
const T& b = 0):
104 bool operator<(const Range<T>& r)
const {
237 virtual std::string
toString()
const = 0;
242 virtual bool isEmpty()
const = 0;
247 virtual size_t size()
const = 0;
257 virtual void clear() = 0;
266 return ((*a) < (*b));
288 for (
typename std::set<
Range<T>* >::iterator it =
set.
ranges_.begin(); it !=
set.ranges_.end(); ++it) {
296 for (
typename std::set<
Range<T>* >::iterator it =
set.
ranges_.begin(); it !=
set.ranges_.end(); ++it) {
313 typename std::set< Range<T>* >::iterator it =
ranges_.begin();
316 if ((**it).isEmpty()) {
317 typename std::set< Range<T>* >::iterator it2 = it;
328 typename std::set< Range<T>* >::iterator it =
ranges_.begin();
333 typename std::set< Range<T>* >::iterator it2 = it;
342 std::string s =
"{ ";
344 s += (**it).toString() +
" ";
355 typename std::set< Range<T>* >::const_iterator it =
ranges_.begin();
356 for (
size_t c = 0; c < i; ++c)
393 for (
size_t i = 0; i < mr.
ranges_.size(); ++i)
400 for (
size_t i = 0; i < mr.
ranges_.size(); ++i)
413 std::vector<size_t> overlappingPositions;
414 for (
size_t i = 0; i <
ranges_.size(); ++i) {
416 overlappingPositions.push_back(i);
419 if (overlappingPositions.size() == 0) {
424 ranges_[overlappingPositions[0]]->expandWith(r);
426 for (
size_t i = overlappingPositions.size() - 1; i > 0; --i) {
428 ranges_[overlappingPositions[0]]->expandWith(*
ranges_[overlappingPositions[i]]);
430 delete ranges_[overlappingPositions[i]];
438 for (
size_t i = 0; i <
ranges_.size(); ++i)
444 typename std::vector< Range<T>* >::iterator it =
ranges_.begin();
459 std::string s =
"{ ";
460 for (
size_t i = 0; i <
ranges_.size(); ++i)
470 std::vector<T> bounds;
471 for (
size_t i = 0; i <
ranges_.size(); ++i) {
472 bounds.push_back(
ranges_[i]->begin());
473 bounds.push_back(
ranges_[i]->end());
497 typename std::vector< Range<T>* >::iterator it =
ranges_.begin();
499 if ((**it).isEmpty()) {
509 for (
size_t i = 0; i <
ranges_.size(); ++i) {