diff options
author | Steven Knight <knight@baldmt.com> | 2002-06-30 13:44:36 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2002-06-30 13:44:36 (GMT) |
commit | d9be780213e1be39a19f19d9845629df8860a098 (patch) | |
tree | 547375fc76fa9526d3c9743155e589ac1fc0bb12 /src/engine/SCons/Scanner/C.py | |
parent | 8e8f35e07651499a5718131f76a351346df30bb3 (diff) | |
download | SCons-d9be780213e1be39a19f19d9845629df8860a098.zip SCons-d9be780213e1be39a19f19d9845629df8860a098.tar.gz SCons-d9be780213e1be39a19f19d9845629df8860a098.tar.bz2 |
Optimzation in the C Scanner: don't re-sort the list each time.
Diffstat (limited to 'src/engine/SCons/Scanner/C.py')
-rw-r--r-- | src/engine/SCons/Scanner/C.py | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/src/engine/SCons/Scanner/C.py b/src/engine/SCons/Scanner/C.py index b54c851..d37bda8 100644 --- a/src/engine/SCons/Scanner/C.py +++ b/src/engine/SCons/Scanner/C.py @@ -87,11 +87,7 @@ def scan(node, env, target, fs = SCons.Node.FS.default_fs): cpppath = target.cpppath - nodes = [] - - try: - nodes = node.found_includes[cpppath] - except KeyError: + if not node.found_includes.has_key(cpppath): if node.exists(): # cache the includes list in node so we only scan it once: @@ -101,8 +97,8 @@ def scan(node, env, target, fs = SCons.Node.FS.default_fs): includes = include_re.findall(node.get_contents()) node.includes = includes + nodes = [] source_dir = node.get_dir() - for include in includes: if include[0] == '"': n = SCons.Node.FS.find_file(include[1], @@ -118,21 +114,24 @@ def scan(node, env, target, fs = SCons.Node.FS.default_fs): else: SCons.Warnings.warn(SCons.Warnings.DependencyWarning, "No dependency generated for file: %s (included from: %s) -- file not found" % (include[1], node)) - node.found_includes[cpppath] = nodes - # Schwartzian transform from the Python FAQ Wizard - def st(List, Metric): - def pairing(element, M = Metric): - return (M(element), element) - def stripit(pair): - return pair[1] - paired = map(pairing, List) - paired.sort() - return map(stripit, paired) + # Schwartzian transform from the Python FAQ Wizard + def st(List, Metric): + def pairing(element, M = Metric): + return (M(element), element) + def stripit(pair): + return pair[1] + paired = map(pairing, List) + paired.sort() + return map(stripit, paired) + + def normalize(node): + return str(node) - def normalize(node): - return str(node) + node.found_includes[cpppath] = st(nodes, normalize) - return st(nodes, normalize) + else: + node.found_includes[cpppath] = [] + return node.found_includes[cpppath] |