From e8d99dd004f4546abfb8a296f383467a54968725 Mon Sep 17 00:00:00 2001 From: angloth <angus.lothian@hotmail.com> Date: Thu, 9 Apr 2020 14:50:55 +0200 Subject: [PATCH] Add deep copying with call --- b_asic/signal_flow_graph.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/b_asic/signal_flow_graph.py b/b_asic/signal_flow_graph.py index 74df86d0..d927801b 100644 --- a/b_asic/signal_flow_graph.py +++ b/b_asic/signal_flow_graph.py @@ -133,21 +133,23 @@ class SFG(AbstractOperation): for sig, input_index in self._original_input_signals_indexes.items(): # Check if already added destination. new_sig = self._added_components_mapping[sig] - if new_sig.destination is not None and new_sig.destination.operation in output_operations_set: - # Add directly connected input to output to dfs order list - self._components_in_dfs_order.extend([ - new_sig.source.operation, new_sig, new_sig.destination.operation]) - elif sig.destination is None: - raise ValueError( - f"Input signal #{input_index} is missing destination in SFG") - elif sig.destination.operation not in self._added_components_mapping: - self._copy_structure_from_operation_dfs( - sig.destination.operation) + if new_sig.destination is None: + if sig.destination is None: + raise ValueError( + f"Input signal #{input_index} is missing destination in SFG") + elif sig.destination.operation not in self._added_components_mapping: + self._copy_structure_from_operation_dfs( + sig.destination.operation) + else: + if new_sig.destination.operation in output_operations_set: + # Add directly connected input to output to dfs order list + self._components_in_dfs_order.extend([ + new_sig.source.operation, new_sig, new_sig.destination.operation]) # Search the graph inwards from each output signal. for sig, output_index in self._original_output_signals_indexes.items(): # Check if already added source. - mew_sig = self._added_components_mapping[sig] + new_sig = self._added_components_mapping[sig] if new_sig.source is None: if sig.source is None: raise ValueError( @@ -156,6 +158,9 @@ class SFG(AbstractOperation): self._copy_structure_from_operation_dfs( sig.source.operation) + def __call__(self): + return self.deep_copy() + @property def type_name(self) -> TypeName: return "sfg" -- GitLab