From e1e0660cfa76a2144a5d6311fd1c71062a718859 Mon Sep 17 00:00:00 2001 From: stevenknight Date: Wed, 2 Jan 2002 19:42:00 +0000 Subject: [PATCH] Node.FS performance improvements (Charles Crain). git-svn-id: http://scons.tigris.org/svn/scons/trunk@186 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- src/engine/SCons/Node/FS.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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: -- 2.26.2