From 0baa34102491423d6707a5becf6b687d851cbbff Mon Sep 17 00:00:00 2001 From: Steven Knight Date: Wed, 2 Jan 2002 19:42:00 +0000 Subject: Node.FS performance improvements (Charles Crain). --- 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 7e9a44b..9da3a88 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: -- cgit v0.12