From: stevenknight Date: Wed, 2 Jan 2002 19:42:00 +0000 (+0000) Subject: Node.FS performance improvements (Charles Crain). X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=e1e0660cfa76a2144a5d6311fd1c71062a718859;p=scons.git Node.FS performance improvements (Charles Crain). git-svn-id: http://scons.tigris.org/svn/scons/trunk@186 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index 7e9a44ba..9da3a884 100644 --- a/src/engine/SCons/Node/FS.py +++ b/src/engine/SCons/Node/FS.py @@ -83,15 +83,22 @@ class PathName: convert_path = str def __init__(self, path_name=''): - self.data = PathName.convert_path(path_name) - self.norm_path = os.path.normcase(self.data) + if isinstance(path_name, PathName): + self.__dict__ = path_name.__dict__ + else: + self.data = PathName.convert_path(path_name) + self.norm_path = os.path.normcase(self.data) def __hash__(self): return hash(self.norm_path) def __cmp__(self, other): + if isinstance(other, PathName): + return cmp(self.norm_path, other.norm_path) return cmp(self.norm_path, os.path.normcase(PathName.convert_path(other))) def __rcmp__(self, other): + if isinstance(other, PathName): + return cmp(other.norm_path, self.norm_path) return cmp(os.path.normcase(PathName.convert_path(other)), self.norm_path) def __str__(self): @@ -127,10 +134,11 @@ class PathDict(UserDict): del(self.data[PathName(key)]) def setdefault(self, key, value): + key = PathName(key) try: - return self.data[PathName(key)] + return self.data[key] except KeyError: - self.data[PathName(key)] = value + self.data[key] = value return value class FS: