diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2017-11-10 15:30:55 -0500 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2017-11-10 15:30:55 -0500 |
| commit | a708e5b1c8e43f2cc1298d6ed5bcd0a21a6f74c9 (patch) | |
| tree | e1e18f247e199ab35b6bfca6bb46a250734a2653 | |
| parent | 4831d8069cb24b6a683c67ba55c78abec0316d8b (diff) | |
| download | pyisda-a708e5b1c8e43f2cc1298d6ed5bcd0a21a6f74c9.tar.gz | |
implement deepcopy for derived classes
| -rw-r--r-- | pyisda/curve.pyx | 17 |
1 files changed, 16 insertions, 1 deletions
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(<char*>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: |
