diff options
| author | Steven Knight <knight@baldmt.com> | 2004-10-24 03:57:51 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2004-10-24 03:57:51 (GMT) |
| commit | 7739efc3870f2814ee4b2ea6f8751ccc7407e069 (patch) | |
| tree | 23128dee9f60768a6b230b965281b3b1fb91b700 /src/engine/SCons/Node/NodeTests.py | |
| parent | 35a89330d1df50811fc6912df0047148b1d98450 (diff) | |
| download | SCons-7739efc3870f2814ee4b2ea6f8751ccc7407e069.zip SCons-7739efc3870f2814ee4b2ea6f8751ccc7407e069.tar.gz SCons-7739efc3870f2814ee4b2ea6f8751ccc7407e069.tar.bz2 | |
Refactor Action/Executor interaction. (Kevin Quick)
Diffstat (limited to 'src/engine/SCons/Node/NodeTests.py')
| -rw-r--r-- | src/engine/SCons/Node/NodeTests.py | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py index ce67781..508b70e 100644 --- a/src/engine/SCons/Node/NodeTests.py +++ b/src/engine/SCons/Node/NodeTests.py @@ -39,7 +39,27 @@ built_source = None cycle_detected = None built_order = 0 -class MyAction: +def _actionAppend(a1, a2): + all = [] + for curr_a in [a1, a2]: + if isinstance(curr_a, MyAction): + all.append(curr_a) + elif isinstance(curr_a, MyListAction): + all.extend(curr_a.list) + elif type(curr_a) == type([1,2]): + all.extend(curr_a) + else: + raise 'Cannot Combine Actions' + return MyListAction(all) + +class MyActionBase: + def __add__(self, other): + return _actionAppend(self, other) + + def __radd__(self, other): + return _actionAppend(other, self) + +class MyAction(MyActionBase): def __init__(self): self.order = 0 @@ -53,10 +73,14 @@ class MyAction: self.order = built_order return 0 - def get_actions(self): - return [self] - -class MyNonGlobalAction: +class MyListAction(MyActionBase): + def __init__(self, list): + self.list = list + def __call__(self, target, source, env, errfunc): + for A in self.list: + A(target, source, env, errfunc) + +class MyNonGlobalAction(MyActionBase): def __init__(self): self.order = 0 self.built_it = None @@ -74,9 +98,6 @@ class MyNonGlobalAction: self.order = built_order return 0 - def get_actions(self): - return [self] - class Environment: def __init__(self, **kw): self._dict = {} |
