summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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: