summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Hansson <andreas.hansson@arm.com>2012-09-19 06:15:43 -0400
committerAndreas Hansson <andreas.hansson@arm.com>2012-09-19 06:15:43 -0400
commitc34df76272c17401955f6daf30ca9c7e7671ae56 (patch)
treed23df59525ad0fcf3812d2d5e4d583880877d12a
parent12c291f9d7a1aa3776133bd911c1aa3263010835 (diff)
downloadgem5-c34df76272c17401955f6daf30ca9c7e7671ae56.tar.xz
AddrRange: Simplify Range by removing stream input/output
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.
-rw-r--r--src/base/SConscript1
-rw-r--r--src/base/range.cc85
-rw-r--r--src/base/range.hh36
-rw-r--r--src/unittest/SConscript1
-rw-r--r--src/unittest/rangetest.cc77
5 files changed, 0 insertions, 200 deletions
diff --git a/src/base/SConscript b/src/base/SConscript
index 8790942cd..ff6d696d4 100644
--- a/src/base/SConscript
+++ b/src/base/SConscript
@@ -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
index c50dff056..000000000
--- a/src/base/range.cc
+++ /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)
diff --git a/src/base/range.hh b/src/base/range.hh
index ac64a37f9..3b1a9277b 100644
--- a/src/base/range.hh
+++ b/src/base/range.hh
@@ -32,21 +32,6 @@
#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,27 +66,12 @@ 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)
{ return std::make_pair(start, end - 1); }
diff --git a/src/unittest/SConscript b/src/unittest/SConscript
index 3ae92194c..841cbb8a6 100644
--- a/src/unittest/SConscript
+++ b/src/unittest/SConscript
@@ -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
index eab2f39a8..000000000
--- a/src/unittest/rangetest.cc
+++ /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;
-}