summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume Horel <guillaume.horel@gmail.com>2017-11-10 15:30:55 -0500
committerGuillaume Horel <guillaume.horel@gmail.com>2017-11-10 15:30:55 -0500
commita708e5b1c8e43f2cc1298d6ed5bcd0a21a6f74c9 (patch)
treee1e18f247e199ab35b6bfca6bb46a250734a2653
parent4831d8069cb24b6a683c67ba55c78abec0316d8b (diff)
downloadpyisda-a708e5b1c8e43f2cc1298d6ed5bcd0a21a6f74c9.tar.gz
implement deepcopy for derived classes
-rw-r--r--pyisda/curve.pyx17
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: