From c2014cb5ad0e4c7605f8dee1e6dd39267e69438c Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Tue, 15 Mar 2005 13:22:47 -0500 Subject: [PATCH] get rid of issequence and just use the isinstance builtin --HG-- extra : convert_revision : eca99aa35ad5c5c1c86325f55cf693ff585c9826 --- python/m5/config.py | 28 ++++++++++++---------------- util/stats/display.py | 2 +- util/stats/info.py | 36 ++++++++++++++++++------------------ util/stats/print.py | 2 +- 4 files changed, 32 insertions(+), 36 deletions(-) diff --git a/python/m5/config.py b/python/m5/config.py index a9d7a2f41..182acf393 100644 --- a/python/m5/config.py +++ b/python/m5/config.py @@ -35,9 +35,6 @@ try: except: noDot = True -def issequence(value): - return isinstance(value, tuple) or isinstance(value, list) - class Singleton(type): def __call__(cls, *args, **kwargs): if hasattr(cls, '_instance'): @@ -181,7 +178,7 @@ def isSimObject(value): return False def isSimObjSequence(value): - if not issequence(value): + if not isinstance(value, (list, tuple)): return False for val in value: @@ -455,7 +452,7 @@ class MetaConfigNode(type): if isNullPointer(child) or instance.top_child_names.has_key(name): return - if issequence(child): + if isinstance(child, (list, tuple)): kid = [] for i,c in enumerate(child): n = '%s%d' % (name, i) @@ -483,10 +480,10 @@ class MetaConfigNode(type): for key,value in cls._getvalues().iteritems(): if isConfigNode(value): cls.add_child(instance, key, value) - if issequence(value): - list = [ v for v in value if isConfigNode(v) ] - if len(list): - cls.add_child(instance, key, list) + if isinstance(value, (list, tuple)): + vals = [ v for v in value if isConfigNode(v) ] + if len(vals): + cls.add_child(instance, key, vals) for pname,param in cls._getparams().iteritems(): try: @@ -497,7 +494,7 @@ class MetaConfigNode(type): try: if isConfigNode(value): value = instance.child_objects[value] - elif issequence(value): + elif isinstance(value, (list, tuple)): v = [] for val in value: if isConfigNode(val): @@ -699,7 +696,7 @@ class Node(object): pval = param.value try: - if issequence(pval): + if isinstance(pval, (list, tuple)): param.value = [ self.unproxy(ptype, pv) for pv in pval ] else: param.value = self.unproxy(ptype, pval) @@ -952,7 +949,7 @@ class _VectorParam(_Param): if value == None: return True - if issequence(value): + if isinstance(value, (list, tuple)): for val in value: if not isinstance(val, Proxy): self.ptype._convert(val) @@ -965,7 +962,7 @@ class _VectorParam(_Param): if value == None: return [] - if issequence(value): + if isinstance(value, (list, tuple)): # list: coerce each element into new list return [ self.ptype._convert(v) for v in value ] else: @@ -973,7 +970,7 @@ class _VectorParam(_Param): return self.ptype._convert(value) def string(self, value): - if issequence(value): + if isinstance(value, (list, tuple)): return ' '.join([ self.ptype._string(v) for v in value]) else: return self.ptype._string(value) @@ -1339,8 +1336,7 @@ class SimObject(ConfigNode, ParamType): # __all__ defines the list of symbols that get exported when # 'from config import *' is invoked. Try to keep this reasonably # short to avoid polluting other namespaces. -__all__ = ['issequence', - 'ConfigNode', 'SimObject', 'ParamContext', 'Param', 'VectorParam', +__all__ = ['ConfigNode', 'SimObject', 'ParamContext', 'Param', 'VectorParam', 'Super', 'Enum', 'Int', 'Unsigned', 'Int8', 'UInt8', 'Int16', 'UInt16', 'Int32', 'UInt32', 'Int64', 'UInt64', diff --git a/util/stats/display.py b/util/stats/display.py index 68a26852d..4c17d4427 100644 --- a/util/stats/display.py +++ b/util/stats/display.py @@ -68,7 +68,7 @@ class VectorDisplay: p.flags = self.flags p.precision = self.precision - if issequence(self.value): + if isinstance(self.value, (list, tuple)): if not len(self.value): return diff --git a/util/stats/info.py b/util/stats/info.py index 01d7bdb0f..3f6a8dbc3 100644 --- a/util/stats/info.py +++ b/util/stats/info.py @@ -6,9 +6,6 @@ display_run = 0 global globalTicks globalTicks = None -def issequence(t): - return isinstance(t, types.TupleType) or isinstance(t, types.ListType) - def total(f): if isinstance(f, FormulaStat): v = f.value @@ -16,7 +13,7 @@ def total(f): v = f f = FormulaStat() - if issequence(v): + if isinstance(v, (list, tuple)): f.value = reduce(operator.add, v) else: f.value = v @@ -29,7 +26,7 @@ def unaryop(op, f): else: v = f - if issequence(v): + if isinstance(v, (list, tuple)): return map(op, v) else: return op(v) @@ -109,19 +106,19 @@ def binaryop(op, lf, rf): return result def sums(x, y): - if issequence(x): + if isinstance(x, (list, tuple)): return map(lambda x, y: x + y, x, y) else: return x + y -def alltrue(list): - return reduce(lambda x, y: x and y, list) +def alltrue(seq): + return reduce(lambda x, y: x and y, seq) -def allfalse(list): - return not reduce(lambda x, y: x or y, list) +def allfalse(seq): + return not reduce(lambda x, y: x or y, seq) -def enumerate(list): - return map(None, range(len(list)), list) +def enumerate(seq): + return map(None, range(len(seq)), seq) def cmp(a, b): if a < b: @@ -323,10 +320,11 @@ class Vector(Statistic,FormulaStat): len(self.value) == len(other.value) def __eq__(self, other): - if issequence(self.value) != issequence(other.value): + if isinstance(self.value, (list, tuple)) != \ + isinstance(other.value, (list, tuple)): return False - if issequence(self.value): + if isinstance(self.value, (list, tuple)): if len(self.value) != len(other.value): return False else: @@ -348,7 +346,7 @@ class Vector(Statistic,FormulaStat): def __itruediv__(self, other): if not other: return self - if issequence(self.value): + if isinstance(self.value, (list, tuple)): for i in xrange(len(self.value)): self.value[i] /= other else: @@ -642,7 +640,8 @@ class VectorDist(Statistic): return alltrue(map(lambda x, y : x == y, self.dist, other.dist)) def __isub__(self, other): - if issequence(self.dist) and issequence(other.dist): + if isinstance(self.dist, (list, tuple)) and \ + isinstance(other.dist, (list, tuple)): for sd,od in zip(self.dist, other.dist): sd -= od else: @@ -650,7 +649,8 @@ class VectorDist(Statistic): return self def __iadd__(self, other): - if issequence(self.dist) and issequence(other.dist): + if isinstance(self.dist, (list, tuple)) and \ + isinstance(other.dist, (list, tuple)): for sd,od in zip(self.dist, other.dist): sd += od else: @@ -660,7 +660,7 @@ class VectorDist(Statistic): def __itruediv__(self, other): if not other: return self - if issequence(self.dist): + if isinstance(self.dist, (list, tuple)): for dist in self.dist: dist /= other else: diff --git a/util/stats/print.py b/util/stats/print.py index f4492cd2b..1ed50eef0 100644 --- a/util/stats/print.py +++ b/util/stats/print.py @@ -71,7 +71,7 @@ class VectorDisplay: p.flags = self.flags p.precision = self.precision - if issequence(self.value): + if isinstance(self.value, (list, tuple)): if not len(self.value): return