From a708e5b1c8e43f2cc1298d6ed5bcd0a21a6f74c9 Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Fri, 10 Nov 2017 15:30:55 -0500 Subject: implement deepcopy for derived classes --- pyisda/curve.pyx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/pyisda/curve.pyx b/pyisda/curve.pyx index 646e31e..c3f91e5 100644 --- a/pyisda/curve.pyx +++ b/pyisda/curve.pyx @@ -136,9 +136,10 @@ cdef class Curve(object): def __len__(self): return self._thisptr.get().fNumItems - def __deepcopy__(self, memo): + def __deepcopy__(self, dict memo): cdef Curve sc = Curve.__new__(Curve) sc._thisptr = make_shared(JpmcdsCopyCurve(self._thisptr.get())) + memo[id(self)] = sc return sc @property @@ -318,6 +319,13 @@ cdef class YieldCurve(Curve): self.dates = vector[TDate](num_instr) memcpy(self.dates.data(), cursor, num_instr * sizeof(TDate)) + def __deepcopy__(self, dict memo): + cdef YieldCurve yc = YieldCurve.__new__(YieldCurve) + yc._thisptr = make_shared(JpmcdsCopyCurve(self._thisptr.get())) + yc.dates = vector[TDate](self.dates) + memo[id(self)] = yc + return yc + @classmethod def from_bytes(cls, object state): cdef: @@ -548,6 +556,13 @@ cdef class SpreadCurve(Curve): cursor += sizeof(size_t) self.ticker = string(cursor, ticker_length) + def __deepcopy__(self, dict memo): + cdef SpreadCurve sc = SpreadCurve.__new__(SpreadCurve) + sc._thisptr = make_shared(JpmcdsCopyCurve(self._thisptr.get())) + sc.ticker = self.ticker + memo[id(self)] = sc + return sc + @classmethod def from_bytes(cls, bytes state): cdef: -- cgit v1.2.3-70-g09d2