From: Luke Kenneth Casson Leighton Date: Mon, 29 Apr 2019 02:53:34 +0000 (+0100) Subject: move StageHelper class X-Git-Tag: ls180-24jan2020~1136 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7c4e96a9306bb7d67108745e2aefd2c10f27a538;p=ieee754fpu.git move StageHelper class --- diff --git a/src/add/iocontrol.py b/src/add/iocontrol.py index d68f6da7..6c78cee1 100644 --- a/src/add/iocontrol.py +++ b/src/add/iocontrol.py @@ -356,37 +356,6 @@ class Stage(metaclass=ABCMeta): #def process(i): pass -class StageHelper: - """ a convenience wrapper around something that is Stage-API-compliant. - (that "something" may be a static class, for example). - """ - def __init__(self, stage): - self.stage = stage - - def ospec(self, name): - assert self.stage is not None - return _spec(self.stage.ospec, name) - - def ispec(self, name): - assert self.stage is not None - return _spec(self.stage.ispec, name) - - def process(self, i): - if self.stage and hasattr(self.stage, "process"): - return self.stage.process(i) - return i - - def setup(self, m, i): - if self.stage is not None and hasattr(self.stage, "setup"): - self.stage.setup(m, i) - - def _postprocess(self, i): # XXX DISABLED - return i # RETURNS INPUT - if hasattr(self.stage, "postprocess"): - return self.stage.postprocess(i) - return i - - class StageChain(StageCls): """ pass in a list of stages, and they will automatically be chained together via their input and output specs into a @@ -473,6 +442,37 @@ class StageChain(StageCls): return self.o # conform to Stage API: return last-loop output +class StageHelper: + """ a convenience wrapper around something that is Stage-API-compliant. + (that "something" may be a static class, for example). + """ + def __init__(self, stage): + self.stage = stage + + def ospec(self, name): + assert self.stage is not None + return _spec(self.stage.ospec, name) + + def ispec(self, name): + assert self.stage is not None + return _spec(self.stage.ispec, name) + + def process(self, i): + if self.stage and hasattr(self.stage, "process"): + return self.stage.process(i) + return i + + def setup(self, m, i): + if self.stage is not None and hasattr(self.stage, "setup"): + self.stage.setup(m, i) + + def _postprocess(self, i): # XXX DISABLED + return i # RETURNS INPUT + if hasattr(self.stage, "postprocess"): + return self.stage.postprocess(i) + return i + + class ControlBase(StageHelper, Elaboratable): """ Common functions for Pipeline API. Note: a "pipeline stage" only exists (conceptually) when a ControlBase derivative is handed