AddrRange: Simplify Range by removing stream input/output
authorAndreas Hansson <andreas.hansson@arm.com>
Wed, 19 Sep 2012 10:15:43 +0000 (06:15 -0400)
committerAndreas Hansson <andreas.hansson@arm.com>
Wed, 19 Sep 2012 10:15:43 +0000 (06:15 -0400)
This patch simplifies the Range class in preparation for the
introduction of a more specific AddrRange class that allows
interleaving/striping.

The only place where the parsing was used was in the unit test.

src/base/SConscript
src/base/range.cc [deleted file]
src/base/range.hh
src/unittest/SConscript
src/unittest/rangetest.cc [deleted file]

index 8790942cd1a466ed56f93be6005a1a5a91768325..ff6d696d4bfb2ee018973fca6095d0e218550865 100644 (file)
@@ -52,7 +52,6 @@ Source('output.cc')
 Source('pollevent.cc')
 Source('random.cc')
 Source('random_mt.cc')
-Source('range.cc')
 if env['TARGET_ISA'] != 'no':
     Source('remote_gdb.cc')
 Source('socket.cc')
diff --git a/src/base/range.cc b/src/base/range.cc
deleted file mode 100644 (file)
index c50dff0..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (c) 2004-2005 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: Nathan Binkert
- */
-
-#include "base/intmath.hh"
-#include "base/range.hh"
-#include "base/str.hh"
-
-using namespace std;
-
-template <class T>
-bool
-__x_parse_range(const std::string &str, T &first, T &last)
-{
-    std::vector<std::string> values;
-    tokenize(values, str, ':');
-
-    T thefirst, thelast;
-
-    if (values.size() != 2)
-        return false;
-
-    std::string s = values[0];
-    std::string e = values[1];
-
-    if (!to_number(s, thefirst))
-        return false;
-
-    bool increment = (e[0] == '+');
-    if (increment)
-        e = e.substr(1);
-
-    if (!to_number(e, thelast))
-        return false;
-
-    if (increment)
-        thelast += thefirst - 1;
-
-    first = thefirst;
-    last = thelast;
-
-    return true;
-}
-
-#define RANGE_PARSE(type) \
-template<> bool \
-__parse_range(const std::string &s, type &first, type &last) \
-{ return __x_parse_range(s, first, last); }
-
-RANGE_PARSE(unsigned long long)
-RANGE_PARSE(signed long long)
-RANGE_PARSE(unsigned long)
-RANGE_PARSE(signed long)
-RANGE_PARSE(unsigned int)
-RANGE_PARSE(signed int)
-RANGE_PARSE(unsigned short)
-RANGE_PARSE(signed short)
-RANGE_PARSE(unsigned char)
-RANGE_PARSE(signed char)
index ac64a37f95c5b0cb573f16b3728723f783702c50..3b1a9277b8b4c07c137aeae171cf2879afa783ff 100644 (file)
 #ifndef __BASE_RANGE_HH__
 #define __BASE_RANGE_HH__
 
-#include <cassert>
-#include <iostream>
-#include <string>
-
-/**
- * @param s range string
- * EndExclusive Ranges are in the following format:
- * @verbatim
- *    <range> := {<start_val>}:{<end>}
- *    <start>   := <end_val> | +<delta>
- * @endverbatim
- */
-template <class T>
-bool __parse_range(const std::string &s, T &start, T &end);
-
 template <class T>
 struct Range
 {
@@ -65,12 +50,6 @@ struct Range
         : start(r.start), end(r.end)
     {}
 
-    Range(const std::string &s)
-    {
-        if (!__parse_range(s, start, end))
-            invalidate();
-    }
-
     template <class U>
     const Range<T> &operator=(const Range<U> &r)
     {
@@ -87,26 +66,11 @@ struct Range
         return *this;
     }
 
-    const Range &operator=(const std::string &s)
-    {
-        if (!__parse_range(s, start, end))
-            invalidate();
-        return *this;
-    }
-
     void invalidate() { start = 1; end = 0; }
     T size() const { return end - start + 1; }
     bool valid() const { return start < end; }
 };
 
-template <class T>
-inline std::ostream &
-operator<<(std::ostream &o, const Range<T> &r)
-{
-    o << '[' << r.start << "," << r.end << ']';
-    return o;
-}
-
 template <class T>
 inline Range<T>
 RangeEx(T start, T end)
index 3ae92194ca29efdfbf5869803bb5f48f77ed45f5..841cbb8a65468491dbc3008446e7c943a87a454c 100644 (file)
@@ -43,7 +43,6 @@ UnitTest('initest', 'initest.cc')
 UnitTest('lrutest', 'lru_test.cc')
 UnitTest('nmtest', 'nmtest.cc')
 UnitTest('offtest', 'offtest.cc')
-UnitTest('rangetest', 'rangetest.cc')
 UnitTest('rangemaptest', 'rangemaptest.cc')
 UnitTest('refcnttest', 'refcnttest.cc')
 UnitTest('strnumtest', 'strnumtest.cc')
diff --git a/src/unittest/rangetest.cc b/src/unittest/rangetest.cc
deleted file mode 100644 (file)
index eab2f39..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (c) 2002-2005 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: Nathan Binkert
- */
-
-#include <iostream>
-#include <string>
-
-#include "base/range.hh"
-
-using namespace std;
-
-int
-main()
-{
-    Range<int> r1(make_pair(9, 28));
-    Range<unsigned> r2("0x1000:+0x100");
-
-    cout << r1 << "\n"
-         << r2 << "\n";
-
-#define RANGETEST(X, C, Y)                                              \
-    cout << X << " "#C" " << Y << " => " <<                             \
-        ((X C Y) ? "true" : "false") << "\n"
-
-#define TESTEM(X, Y) do { \
-        RANGETEST(X, < , Y);                    \
-        RANGETEST(X, <=, Y);                    \
-        RANGETEST(X, > , Y);                    \
-        RANGETEST(X, >=, Y);                    \
-        RANGETEST(X, ==, Y);                    \
-        RANGETEST(X, !=, Y);                    \
-        RANGETEST(Y, < , X);                    \
-        RANGETEST(Y, <=, X);                    \
-        RANGETEST(Y, > , X);                    \
-        RANGETEST(Y, >=, X);                    \
-        RANGETEST(Y, ==, X);                    \
-        RANGETEST(Y, !=, X);                    \
-    } while (0)
-
-    TESTEM(8, r1);
-    TESTEM(9, r1);
-    TESTEM(27, r1);
-    TESTEM(28, r1);
-
-    TESTEM(0x0fff, r2);
-    TESTEM(0x1000, r2);
-    TESTEM(0x10ff, r2);
-    TESTEM(0x1100, r2);
-
-    return 0;
-}