diff options
-rw-r--r-- | src/base/range_map.hh | 124 | ||||
-rw-r--r-- | src/unittest/SConscript | 1 | ||||
-rw-r--r-- | src/unittest/rangemultimaptest.cc | 80 |
3 files changed, 0 insertions, 205 deletions
diff --git a/src/base/range_map.hh b/src/base/range_map.hh index 0be228228..a9774274e 100644 --- a/src/base/range_map.hh +++ b/src/base/range_map.hh @@ -197,128 +197,4 @@ class range_map } }; - -template <class T,class V> -class range_multimap -{ - private: - typedef std::multimap<Range<T>,V> RangeMap; - RangeMap tree; - - public: - typedef typename RangeMap::iterator iterator; - - template <class U> - std::pair<iterator,iterator> find(const Range<U> &r) - { - iterator i; - iterator j; - - i = tree.lower_bound(r); - - if (i == tree.begin()) { - if (i->first.start <= r.end && i->first.end >= r.start) - return std::make_pair<iterator, iterator>(i,i); - else - // Nothing could match, so return end() - return std::make_pair<iterator, iterator>(tree.end(), tree.end()); - } - i--; - - if (i->first.start <= r.end && i->first.end >= r.start) { - // we have at least one match - j = i; - - i--; - while (i->first.start <= r.end && i->first.end >= - r.start) { - if (i == tree.begin()) - break; - i--; - } - if (i == tree.begin() && i->first.start <= r.end && i->first.end >= - r.start) - return std::make_pair<iterator, iterator>(i,j); - i++; - return std::make_pair<iterator, iterator>(i,j); - - } - - return std::make_pair<iterator, iterator>(tree.end(), tree.end()); - } - - template <class U> - bool - intersect(const Range<U> &r) - { - std::pair<iterator,iterator> p; - p = find(r); - if (p.first != tree.end()) - return true; - return false; - } - - - template <class U,class W> - iterator - insert(const Range<U> &r, const W d) - { - std::pair<iterator,iterator> p; - p = find(r); - if ((p.first->first.start == r.start && p.first->first.end == r.end) || - p.first == tree.end()) - return tree.insert(std::make_pair<Range<T>,V>(r, d)); - else - return tree.end(); - } - - size_t - erase(T k) - { - return tree.erase(k); - } - - void - erase(iterator p) - { - tree.erase(p); - } - - void - erase(iterator p, iterator q) - { - tree.erase(p,q); - } - - void - clear() - { - tree.erase(tree.begin(), tree.end()); - } - - iterator - begin() - { - return tree.begin(); - } - - iterator - end() - { - return tree.end(); - } - - size_t - size() - { - return tree.size(); - } - - bool - empty() - { - return tree.empty(); - } -}; - #endif //__BASE_RANGE_MAP_HH__ diff --git a/src/unittest/SConscript b/src/unittest/SConscript index d409ec9a5..3ae92194c 100644 --- a/src/unittest/SConscript +++ b/src/unittest/SConscript @@ -45,7 +45,6 @@ UnitTest('nmtest', 'nmtest.cc') UnitTest('offtest', 'offtest.cc') UnitTest('rangetest', 'rangetest.cc') UnitTest('rangemaptest', 'rangemaptest.cc') -UnitTest('rangemultimaptest', 'rangemultimaptest.cc') UnitTest('refcnttest', 'refcnttest.cc') UnitTest('strnumtest', 'strnumtest.cc') UnitTest('trietest', 'trietest.cc') diff --git a/src/unittest/rangemultimaptest.cc b/src/unittest/rangemultimaptest.cc deleted file mode 100644 index b5d114301..000000000 --- a/src/unittest/rangemultimaptest.cc +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2006 The Regents of The University of Michigan - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer; - * redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution; - * neither the name of the copyright holders nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * Authors: Ali Saidi - */ - -#include <cassert> -#include <iostream> - -#include "base/range_map.hh" -#include "base/types.hh" - -using namespace std; - -int -main() -{ - typedef range_multimap<Addr, int> multimap_t; - - multimap_t r; - multimap_t::iterator i; - std::pair<multimap_t::iterator, multimap_t::iterator> jk; - - i = r.insert(RangeIn<Addr>(10,40),5); - assert(i != r.end()); - i = r.insert(RangeIn<Addr>(10,40),6); - assert(i != r.end()); - i = r.insert(RangeIn<Addr>(60,90),3); - assert(i != r.end()); - - jk = r.find(RangeIn(20,30)); - assert(jk.first != r.end()); - cout << jk.first->first << " " << jk.first->second << endl; - cout << jk.second->first << " " << jk.second->second << endl; - - i = r.insert(RangeIn<Addr>(0,3),5); - assert(i != r.end()); - - for( i = r.begin(); i != r.end(); i++) - cout << i->first << " " << i->second << endl; - - jk = r.find(RangeIn(20,30)); - assert(jk.first != r.end()); - cout << jk.first->first << " " << jk.first->second << endl; - cout << jk.second->first << " " << jk.second->second << endl; - - -} - - - - - - - - |