about summary refs log tree commit diff stats
path: root/miasm2/core
diff options
context:
space:
mode:
Diffstat (limited to 'miasm2/core')
-rw-r--r--miasm2/core/graph.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/miasm2/core/graph.py b/miasm2/core/graph.py
index f38f71d6..ee5dc418 100644
--- a/miasm2/core/graph.py
+++ b/miasm2/core/graph.py
@@ -26,6 +26,25 @@ class DiGraph(object):
     def edges(self):
         return self._edges
 
+    def merge(self, graph):
+        """Merge the current graph with @graph
+        @graph: DiGraph instance
+        """
+        for node in graph._nodes:
+            self.add_node(node)
+        for edge in graph._edges:
+            self.add_edge(*edge)
+
+    def __add__(self, graph):
+        """Wrapper on `.merge`"""
+        self.merge(graph)
+        return self
+
+    def copy(self):
+        """Copy the current graph instance"""
+        graph = self.__class__()
+        return graph + self
+
     def __eq__(self, graph):
         if not isinstance(graph, self.__class__):
             return False