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