about summary refs log tree commit diff stats
path: root/miasm2/expression/expression.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--miasm2/expression/expression.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/miasm2/expression/expression.py b/miasm2/expression/expression.py
index 1473838b..d51f0bdb 100644
--- a/miasm2/expression/expression.py
+++ b/miasm2/expression/expression.py
@@ -389,6 +389,12 @@ class ExprInt(Expr):
     size = property(lambda self: self.__size)
     arg = property(lambda self: self.__arg)
 
+    def __getstate__(self):
+        return int(self.__arg), self.__size
+
+    def __setstate__(self, state):
+        self.__init__(*state)
+
     def __new__(cls, arg, size=None):
         if size is None:
             size = arg.size
@@ -466,6 +472,12 @@ class ExprId(Expr):
     size = property(lambda self: self.__size)
     name = property(lambda self: self.__name)
 
+    def __getstate__(self):
+        return self.__name, self.__size
+
+    def __setstate__(self, state):
+        self.__init__(*state)
+
     def __new__(cls, name, size=32):
         return Expr.get_object(cls, (name, size))
 
@@ -543,6 +555,12 @@ class ExprAff(Expr):
     dst = property(lambda self: self.__dst)
     src = property(lambda self: self.__src)
 
+    def __getstate__(self):
+        return self.__dst, self.__src
+
+    def __setstate__(self, state):
+        self.__init__(*state)
+
     def __new__(cls, dst, src):
         return Expr.get_object(cls, (dst, src))
 
@@ -641,6 +659,12 @@ class ExprCond(Expr):
     src1 = property(lambda self: self.__src1)
     src2 = property(lambda self: self.__src2)
 
+    def __getstate__(self):
+        return self.__cond, self.__src1, self.__src2
+
+    def __setstate__(self, state):
+        self.__init__(*state)
+
     def __new__(cls, cond, src1, src2):
         return Expr.get_object(cls, (cond, src1, src2))
 
@@ -726,6 +750,12 @@ class ExprMem(Expr):
     size = property(lambda self: self.__size)
     arg = property(lambda self: self.__arg)
 
+    def __getstate__(self):
+        return self.__arg, self.__size
+
+    def __setstate__(self, state):
+        self.__init__(*state)
+
     def __new__(cls, arg, size=32):
         return Expr.get_object(cls, (arg, size))
 
@@ -857,6 +887,13 @@ class ExprOp(Expr):
     op = property(lambda self: self.__op)
     args = property(lambda self: self.__args)
 
+    def __getstate__(self):
+        return self.__op, self.__args
+
+    def __setstate__(self, state):
+        op, args = state
+        self.__init__(op, *args)
+
     def __new__(cls, op, *args):
         return Expr.get_object(cls, (op, args))
 
@@ -949,6 +986,12 @@ class ExprSlice(Expr):
     start = property(lambda self: self.__start)
     stop = property(lambda self: self.__stop)
 
+    def __getstate__(self):
+        return self.__arg, self.__start, self.__stop
+
+    def __setstate__(self, state):
+        self.__init__(*state)
+
     def __new__(cls, arg, start, stop):
         return Expr.get_object(cls, (arg, start, stop))
 
@@ -1057,6 +1100,12 @@ class ExprCompose(Expr):
     size = property(lambda self: self.__size)
     args = property(lambda self: self.__args)
 
+    def __getstate__(self):
+        return self.__args
+
+    def __setstate__(self, state):
+        self.__init__(state)
+
     def __new__(cls, args):
         return Expr.get_object(cls, tuple(args))