From 3e285bf6bfe49ec3f18c70bc253f001accca17ff Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Tue, 26 Aug 2014 12:28:49 +0100 Subject: [PATCH 01/25] updated for QL1.4 build --- setup.py | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/setup.py b/setup.py index 892670b71..be4a45479 100644 --- a/setup.py +++ b/setup.py @@ -18,10 +18,6 @@ ## From SO: hack to remove warning about strict prototypes ## http://stackoverflow.com/questions/8106258/cc1plus-warning-command-line-option-wstrict-prototypes-is-valid-for-ada-c-o -(opt,) = get_config_vars('OPT') -os.environ['OPT'] = " ".join( - flag for flag in opt.split() if flag != '-Wstrict-prototypes') - SUPPORT_CODE_INCLUDE = './cpp_layer' # FIXME: would be good to be able to customize the path with environment @@ -29,18 +25,23 @@ if sys.platform == 'darwin': INCLUDE_DIRS = ['/usr/local/include', '.', SUPPORT_CODE_INCLUDE] LIBRARY_DIRS = ["/usr/local/lib"] + + (opt,) = get_config_vars('OPT') + os.environ['OPT'] = " ".join( + flag for flag in opt.split() if flag != '-Wstrict-prototypes') + elif sys.platform == 'win32': INCLUDE_DIRS = [ - r'E:\tmp\QuantLib-1.1', # QuantLib headers - r'E:\tmp\boost_1_46_1', # Boost headers + r'c:\dev\QuantLib-1.4', # QuantLib headers + r'c:\dev\boost_1_56_0', # Boost headers '.', SUPPORT_CODE_INCLUDE ] LIBRARY_DIRS = [ - r"E:\tmp\QuantLib-1.1\build\vc80\Release", - r'E:\tmp\boost_1_46_1\lib' + r"c:\dev\QuantLib-1.4\lib", + r'c:\dev\boost_1_56_0\lib' ] - QL_LIBRARY = 'QuantLib' + QL_LIBRARY = 'QuantLib-vc90-mt' elif sys.platform == 'linux2': # good for Debian / ubuntu 10.04 (with QL .99 installed by default) INCLUDE_DIRS = ['/usr/local/include', '/usr/include', '.', SUPPORT_CODE_INCLUDE] @@ -106,7 +107,7 @@ def collect_extensions(): 'define_macros':get_define_macros(), 'extra_compile_args':get_extra_compile_args(), 'extra_link_args':get_extra_link_args(), - 'libraries':['QuantLib'], + 'libraries':[QL_LIBRARY], 'cython_directives':CYTHON_DIRECTIVES } @@ -163,14 +164,7 @@ def collect_extensions(): 'quantlib/time/businessdayconvention.pyx', 'cpp_layer/businessdayconvention_support_code.cpp' ], - language='c++', - include_dirs=INCLUDE_DIRS, - library_dirs=LIBRARY_DIRS, - define_macros = get_define_macros(), - extra_compile_args = get_extra_compile_args(), - extra_link_args = get_extra_link_args(), - libraries=['QuantLib'], - pyrex_directives = CYTHON_DIRECTIVES + **kwargs ) manual_extensions = [ From 29a6e18cd36b9738e2539beec19d4e24e735dd03 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Tue, 26 Aug 2014 12:29:31 +0100 Subject: [PATCH 02/25] removed distutils pragma in source code --- examples/c++/EquityOption.cpp | 0 quantlib/_cashflow.pxd | 3 --- quantlib/_currency.pxd | 3 --- quantlib/_index.pxd | 3 --- quantlib/_quote.pxd | 3 --- quantlib/indexes/_euribor.pxd | 3 --- quantlib/indexes/_ibor_index.pxd | 3 --- quantlib/indexes/_interest_rate_index.pxd | 3 --- quantlib/indexes/_libor.pxd | 3 --- quantlib/indexes/_swap_index.pxd | 3 --- quantlib/math/_interpolations.pxd | 2 -- quantlib/math/_optimization.pxd | 3 --- quantlib/math/optimization.pyx | 4 ---- quantlib/models/equity/_bates_model.pxd | 3 --- quantlib/models/equity/_heston_model.pxd | 3 --- quantlib/models/equity/bates_model.pyx | 3 --- quantlib/models/equity/heston_model.pyx | 3 --- quantlib/pricingengines/_blackformula.pxd | 3 --- quantlib/pricingengines/_bond.pxd | 3 --- quantlib/pricingengines/bond.pyx | 1 - quantlib/pricingengines/credit.pyx | 2 -- quantlib/pricingengines/engine.pxd | 2 -- quantlib/pricingengines/vanilla/mcvanillaengine.pyx | 3 --- quantlib/settings/settings.pyx | 2 -- quantlib/sim/simulate.pyx | 3 --- quantlib/termstructures/_yield_term_structure.pxd | 3 --- quantlib/termstructures/yields/_flat_forward.pxd | 3 --- quantlib/termstructures/yields/_piecewise_yield_curve.pxd | 3 --- quantlib/termstructures/yields/_zero_curve.pxd | 3 --- quantlib/time/_date.pxd | 3 --- quantlib/time/_imm.pxd | 3 --- quantlib/time/_schedule.pxd | 3 --- 32 files changed, 88 deletions(-) mode change 100755 => 100644 examples/c++/EquityOption.cpp diff --git a/examples/c++/EquityOption.cpp b/examples/c++/EquityOption.cpp old mode 100755 new mode 100644 diff --git a/quantlib/_cashflow.pxd b/quantlib/_cashflow.pxd index 76ceb2a0a..589495d11 100644 --- a/quantlib/_cashflow.pxd +++ b/quantlib/_cashflow.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - include 'types.pxi' from libcpp cimport bool diff --git a/quantlib/_currency.pxd b/quantlib/_currency.pxd index ea5338f2e..e521005af 100644 --- a/quantlib/_currency.pxd +++ b/quantlib/_currency.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - """ Copyright (C) 2011, Enthought Inc Copyright (C) 2011, Patrick Henaff diff --git a/quantlib/_index.pxd b/quantlib/_index.pxd index b601c4cbc..adc986827 100644 --- a/quantlib/_index.pxd +++ b/quantlib/_index.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - """ Copyright (C) 2011, Enthought Inc Copyright (C) 2011, Patrick Henaff diff --git a/quantlib/_quote.pxd b/quantlib/_quote.pxd index 2d4817cd5..1af88fe5b 100644 --- a/quantlib/_quote.pxd +++ b/quantlib/_quote.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - include 'types.pxi' from libcpp cimport bool diff --git a/quantlib/indexes/_euribor.pxd b/quantlib/indexes/_euribor.pxd index 454e9c94b..9714ff664 100644 --- a/quantlib/indexes/_euribor.pxd +++ b/quantlib/indexes/_euribor.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - from quantlib.handle cimport Handle cimport quantlib.termstructures._yield_term_structure as _yts from quantlib.indexes._ibor_index cimport IborIndex diff --git a/quantlib/indexes/_ibor_index.pxd b/quantlib/indexes/_ibor_index.pxd index 34a5e720d..277fca7b2 100644 --- a/quantlib/indexes/_ibor_index.pxd +++ b/quantlib/indexes/_ibor_index.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - """ Copyright (C) 2011, Enthought Inc Copyright (C) 2011, Patrick Henaff diff --git a/quantlib/indexes/_interest_rate_index.pxd b/quantlib/indexes/_interest_rate_index.pxd index ca40a5ac1..3f2e30e1b 100644 --- a/quantlib/indexes/_interest_rate_index.pxd +++ b/quantlib/indexes/_interest_rate_index.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - """ Copyright (C) 2011, Enthought Inc Copyright (C) 2011, Patrick Henaff diff --git a/quantlib/indexes/_libor.pxd b/quantlib/indexes/_libor.pxd index f3e17fb79..e08b2c39f 100644 --- a/quantlib/indexes/_libor.pxd +++ b/quantlib/indexes/_libor.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - """ Copyright (C) 2011, Enthought Inc Copyright (C) 2011, Patrick Henaff diff --git a/quantlib/indexes/_swap_index.pxd b/quantlib/indexes/_swap_index.pxd index 426074117..6cc05413c 100644 --- a/quantlib/indexes/_swap_index.pxd +++ b/quantlib/indexes/_swap_index.pxd @@ -6,9 +6,6 @@ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details. """ -# distutils: language = c++ -# distutils: libraries = QuantLib - include '../types.pxi' from libcpp cimport bool diff --git a/quantlib/math/_interpolations.pxd b/quantlib/math/_interpolations.pxd index f2149bde5..b224bad24 100644 --- a/quantlib/math/_interpolations.pxd +++ b/quantlib/math/_interpolations.pxd @@ -1,10 +1,8 @@ - cdef extern from 'ql/math/interpolations/backwardflatinterpolation.hpp' namespace 'QuantLib': cdef cppclass BackwardFlat: pass - cdef extern from 'ql/math/interpolations/loginterpolation.hpp' namespace 'QuantLib': cdef cppclass LogLinear: diff --git a/quantlib/math/_optimization.pxd b/quantlib/math/_optimization.pxd index e9b16e459..1a3438fdd 100644 --- a/quantlib/math/_optimization.pxd +++ b/quantlib/math/_optimization.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - include '../types.pxi' cdef extern from 'ql/math/optimization/method.hpp' namespace 'QuantLib': diff --git a/quantlib/math/optimization.pyx b/quantlib/math/optimization.pyx index f627b9723..d203876d8 100644 --- a/quantlib/math/optimization.pyx +++ b/quantlib/math/optimization.pyx @@ -1,7 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - - cimport _optimization as _opt from quantlib.handle cimport shared_ptr diff --git a/quantlib/models/equity/_bates_model.pxd b/quantlib/models/equity/_bates_model.pxd index 5dce27aef..2411d6dae 100644 --- a/quantlib/models/equity/_bates_model.pxd +++ b/quantlib/models/equity/_bates_model.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - include '../../types.pxi' from quantlib.handle cimport shared_ptr diff --git a/quantlib/models/equity/_heston_model.pxd b/quantlib/models/equity/_heston_model.pxd index b7de4654e..e3e45c4a9 100644 --- a/quantlib/models/equity/_heston_model.pxd +++ b/quantlib/models/equity/_heston_model.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - include '../../types.pxi' from libcpp.vector cimport vector diff --git a/quantlib/models/equity/bates_model.pyx b/quantlib/models/equity/bates_model.pyx index e310321db..457eb02a9 100644 --- a/quantlib/models/equity/bates_model.pyx +++ b/quantlib/models/equity/bates_model.pyx @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - """ Copyright (C) 2011, Enthought Inc Copyright (C) 2011, Patrick Henaff diff --git a/quantlib/models/equity/heston_model.pyx b/quantlib/models/equity/heston_model.pyx index 2526332d6..26f5d9859 100644 --- a/quantlib/models/equity/heston_model.pyx +++ b/quantlib/models/equity/heston_model.pyx @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - """ Copyright (C) 2011, Enthought Inc Copyright (C) 2011, Patrick Henaff diff --git a/quantlib/pricingengines/_blackformula.pxd b/quantlib/pricingengines/_blackformula.pxd index a37fe180a..409825e3e 100644 --- a/quantlib/pricingengines/_blackformula.pxd +++ b/quantlib/pricingengines/_blackformula.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - include '../types.pxi' from quantlib.instruments._option cimport Type as OptionType diff --git a/quantlib/pricingengines/_bond.pxd b/quantlib/pricingengines/_bond.pxd index c6da612c8..946cf9299 100644 --- a/quantlib/pricingengines/_bond.pxd +++ b/quantlib/pricingengines/_bond.pxd @@ -6,9 +6,6 @@ FOR A PARTICULAR PURPOSE. See the license for more details. """ -# distutils: language = c++ - - from libcpp cimport bool from quantlib.pricingengines._pricing_engine cimport PricingEngine diff --git a/quantlib/pricingengines/bond.pyx b/quantlib/pricingengines/bond.pyx index df8e1f707..8f3a71e81 100644 --- a/quantlib/pricingengines/bond.pyx +++ b/quantlib/pricingengines/bond.pyx @@ -5,7 +5,6 @@ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details. """ -# distutils: language = c++ from cython.operator cimport dereference as deref from quantlib.handle cimport Handle, shared_ptr diff --git a/quantlib/pricingengines/credit.pyx b/quantlib/pricingengines/credit.pyx index 0b3322617..d6ffe1bfe 100644 --- a/quantlib/pricingengines/credit.pyx +++ b/quantlib/pricingengines/credit.pyx @@ -5,8 +5,6 @@ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details. """ -# distutils: language = c++ - from cython.operator cimport dereference as deref from quantlib.handle cimport Handle, shared_ptr diff --git a/quantlib/pricingengines/engine.pxd b/quantlib/pricingengines/engine.pxd index a52e00dd4..9a57414e4 100644 --- a/quantlib/pricingengines/engine.pxd +++ b/quantlib/pricingengines/engine.pxd @@ -1,5 +1,3 @@ -# distutils: language = c++ - from quantlib.handle cimport shared_ptr cimport _pricing_engine as _pe diff --git a/quantlib/pricingengines/vanilla/mcvanillaengine.pyx b/quantlib/pricingengines/vanilla/mcvanillaengine.pyx index 526a6bfc1..1776e193e 100644 --- a/quantlib/pricingengines/vanilla/mcvanillaengine.pyx +++ b/quantlib/pricingengines/vanilla/mcvanillaengine.pyx @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - include '../../types.pxi' from libcpp cimport bool diff --git a/quantlib/settings/settings.pyx b/quantlib/settings/settings.pyx index 3bbb11040..994780b54 100644 --- a/quantlib/settings/settings.pyx +++ b/quantlib/settings/settings.pyx @@ -1,5 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib from cython.operator cimport dereference as deref from libcpp cimport bool as cbool diff --git a/quantlib/sim/simulate.pyx b/quantlib/sim/simulate.pyx index 2d38069f1..6126bb873 100644 --- a/quantlib/sim/simulate.pyx +++ b/quantlib/sim/simulate.pyx @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - include '../types.pxi' from cython.operator cimport dereference as deref diff --git a/quantlib/termstructures/_yield_term_structure.pxd b/quantlib/termstructures/_yield_term_structure.pxd index b9bacd7e5..7952896e4 100644 --- a/quantlib/termstructures/_yield_term_structure.pxd +++ b/quantlib/termstructures/_yield_term_structure.pxd @@ -6,9 +6,6 @@ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for more details. """ - -# distutils: language = c++ - include '../types.pxi' from libcpp cimport bool diff --git a/quantlib/termstructures/yields/_flat_forward.pxd b/quantlib/termstructures/yields/_flat_forward.pxd index a90472a93..c95031c92 100644 --- a/quantlib/termstructures/yields/_flat_forward.pxd +++ b/quantlib/termstructures/yields/_flat_forward.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - """ Copyright (C) 2011, Enthought Inc Copyright (C) 2011, Patrick Henaff diff --git a/quantlib/termstructures/yields/_piecewise_yield_curve.pxd b/quantlib/termstructures/yields/_piecewise_yield_curve.pxd index 0b1644228..52a5ee8f4 100644 --- a/quantlib/termstructures/yields/_piecewise_yield_curve.pxd +++ b/quantlib/termstructures/yields/_piecewise_yield_curve.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - include '../../types.pxi' from libcpp cimport bool diff --git a/quantlib/termstructures/yields/_zero_curve.pxd b/quantlib/termstructures/yields/_zero_curve.pxd index 928d12dda..3e9489953 100644 --- a/quantlib/termstructures/yields/_zero_curve.pxd +++ b/quantlib/termstructures/yields/_zero_curve.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - include '../../types.pxi' from libcpp.vector cimport vector diff --git a/quantlib/time/_date.pxd b/quantlib/time/_date.pxd index a06507f2b..621a4f605 100644 --- a/quantlib/time/_date.pxd +++ b/quantlib/time/_date.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - include '../types.pxi' from libcpp cimport bool diff --git a/quantlib/time/_imm.pxd b/quantlib/time/_imm.pxd index cf22bbf7c..e6cbca50d 100644 --- a/quantlib/time/_imm.pxd +++ b/quantlib/time/_imm.pxd @@ -7,9 +7,6 @@ FOR A PARTICULAR PURPOSE. See the license for more details. """ -# distutils: language = c++ -# distutils: libraries = QuantLib - include '../types.pxi' from libcpp cimport bool diff --git a/quantlib/time/_schedule.pxd b/quantlib/time/_schedule.pxd index 2d6f841e2..e75094a17 100644 --- a/quantlib/time/_schedule.pxd +++ b/quantlib/time/_schedule.pxd @@ -1,6 +1,3 @@ -# distutils: language = c++ -# distutils: libraries = QuantLib - include '../types.pxi' from libcpp cimport bool From 16ab1b2b2b2e543c9946cdad7cef6aeb6e770cfb Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Tue, 26 Aug 2014 14:25:05 +0100 Subject: [PATCH 03/25] allows CahsFlow.amount() to raise exceptions --- quantlib/_cashflow.pxd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quantlib/_cashflow.pxd b/quantlib/_cashflow.pxd index 589495d11..0fa13da20 100644 --- a/quantlib/_cashflow.pxd +++ b/quantlib/_cashflow.pxd @@ -18,7 +18,7 @@ cdef extern from 'ql/event.hpp' namespace 'QuantLib': cdef extern from 'ql/cashflow.hpp' namespace 'QuantLib': cdef cppclass CashFlow(Event): - Real amount() + Real amount() except + ctypedef vector[shared_ptr[CashFlow]] Leg From 10c6af1d9e06bcb66ffc782853f6111d83a118ab Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Tue, 26 Aug 2014 14:26:21 +0100 Subject: [PATCH 04/25] simplified _thisptr structure --- quantlib/cashflow.pxd | 2 +- quantlib/cashflow.pyx | 16 +++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/quantlib/cashflow.pxd b/quantlib/cashflow.pxd index 37c27bb14..2c1dc34e7 100644 --- a/quantlib/cashflow.pxd +++ b/quantlib/cashflow.pxd @@ -15,6 +15,6 @@ cdef class Leg: cdef shared_ptr[_cf.Leg]* _thisptr cdef class SimpleLeg: - cdef shared_ptr[vector[shared_ptr[_cf.CashFlow]]] *_thisptr + cdef vector[shared_ptr[_cf.CashFlow]] *_thisptr cdef object leg_items(vector[shared_ptr[_cf.CashFlow]] leg) diff --git a/quantlib/cashflow.pyx b/quantlib/cashflow.pyx index bce7b6688..920b37239 100644 --- a/quantlib/cashflow.pyx +++ b/quantlib/cashflow.pyx @@ -105,9 +105,7 @@ cdef class SimpleLeg: if noalloc: return - self._thisptr = new shared_ptr[vector[shared_ptr[_cf.CashFlow]]](\ - new vector[shared_ptr[_cf.CashFlow]]() - ) + self._thisptr = new vector[shared_ptr[_cf.CashFlow]]() for i in range(len(leg)): _thisamount = leg[i][0] @@ -118,7 +116,7 @@ cdef class SimpleLeg: deref(_thisdate)) ) - self._thisptr.get().push_back(deref(_thiscf)) + self._thisptr.push_back(deref(_thiscf)) def __dealloc__(self): if self._thisptr is not NULL: @@ -126,7 +124,7 @@ cdef class SimpleLeg: property size: def __get__(self): - cdef int size = self._thisptr.get().size() + cdef int size = self._thisptr.size() return size property items: @@ -134,16 +132,16 @@ cdef class SimpleLeg: '''Return Leg as (amount, date) list ''' - cdef vector[shared_ptr[_cf.CashFlow]] leg = \ - deref(self._thisptr.get()) - return leg_items(leg) + cdef vector[shared_ptr[_cf.CashFlow]]* leg = \ + self._thisptr + return leg_items(deref(leg)) def to_str(self): """ pretty print cash flow schedule """ - _items = self.items + _items = self.items[:] str = "Cash Flow Schedule:\n" for _it in _items: str += ("%s %f\n" % (_it[1], _it[0])) From 28b689a9f9bd31c74966a105abd94795b39b30c6 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Wed, 3 Sep 2014 07:47:30 +0100 Subject: [PATCH 05/25] somes fixes to swap methods and exposes debug builds in setup.py --- quantlib/instruments/_swap.pxd | 6 +++--- quantlib/instruments/swap.pyx | 8 +++----- quantlib/test/test_swap.py | 2 +- quantlib/time/_date.pxd | 4 ++-- setup.py | 4 ++-- 5 files changed, 11 insertions(+), 13 deletions(-) diff --git a/quantlib/instruments/_swap.pxd b/quantlib/instruments/_swap.pxd index f590609a1..07f3833e5 100644 --- a/quantlib/instruments/_swap.pxd +++ b/quantlib/instruments/_swap.pxd @@ -32,7 +32,7 @@ cdef extern from 'ql/instruments/swap.hpp' namespace 'QuantLib': bool isExpired() Date startDate() Date maturityDate() - Real legBPS(Size j) - Real legNPV(Size j) - Leg& leg(Size j) + Real legBPS(Size j) except + + Real legNPV(Size j) except + + Leg& leg(Size j) # FIXME: we should have 'except +' to catch issues with leg id... diff --git a/quantlib/instruments/swap.pyx b/quantlib/instruments/swap.pyx index ab7bf2a64..42a1e5bf5 100644 --- a/quantlib/instruments/swap.pyx +++ b/quantlib/instruments/swap.pyx @@ -191,20 +191,18 @@ cdef class VanillaSwap(Swap): Return a swap leg TODO: optimize this - avoid copy """ - cdef vector[shared_ptr[_cf.CashFlow]] leg = get_vanillaswap(self).leg(i) - + cdef int k cdef shared_ptr[_cf.CashFlow] _thiscf cdef Date _thisdate itemlist = [] cdef int size = leg.size() - - for k from 0 <= k < size: + for k in xrange(size): _thiscf = leg.at(k) _thisdate = Date(_thiscf.get().date().serialNumber()) itemlist.append((_thiscf.get().amount(), _thisdate)) - + return SimpleLeg(itemlist) diff --git a/quantlib/test/test_swap.py b/quantlib/test/test_swap.py index e8240701b..a9ed0c338 100644 --- a/quantlib/test/test_swap.py +++ b/quantlib/test/test_swap.py @@ -88,7 +88,7 @@ def test_swap_QL(self): l = swap.leg(0) print l.to_str() - + print 'Start date of swap ', swap.start_date l = swap.leg(1) print l.to_str() diff --git a/quantlib/time/_date.pxd b/quantlib/time/_date.pxd index 621a4f605..11de49f73 100644 --- a/quantlib/time/_date.pxd +++ b/quantlib/time/_date.pxd @@ -56,7 +56,7 @@ cdef extern from "ql/time/date.hpp" namespace "QuantLib": Date() except + Date(long serialnumber) except + Date(int d, int m, int y) except + - Day dayOfMonth() + Day dayOfMonth() except + Month month() int year() long serialNumber() @@ -84,7 +84,7 @@ cdef extern from "ql/time/date.hpp" namespace "QuantLib": cdef Date Date_minDate 'QuantLib::Date::minDate'() cdef Date Date_maxDate 'QuantLib::Date::maxDate'() cdef bool Date_isLeap 'QuantLib::Date::isLeap'(Year y) - cdef Date Date_endOfMonth 'QuantLib::Date::endOfMonth'(Date& d) + cdef Date Date_endOfMonth 'QuantLib::Date::endOfMonth'(Date& d) except + cdef bool Date_isEndOfMonth 'QuantLib::Date::isEndOfMonth'(Date& d) cdef Date Date_nextWeekday 'QuantLib::Date::nextWeekday'(Date& d, Weekday w) except + cdef Date Date_nthWeekday 'QuantLib::Date::nthWeekday'(Size n, Weekday w, diff --git a/setup.py b/setup.py index be4a45479..f9fd2ae7f 100644 --- a/setup.py +++ b/setup.py @@ -68,7 +68,7 @@ def get_define_macros(): def get_extra_compile_args(): if sys.platform == 'win32': - args = ['/GR', '/FD', '/Zm250', '/EHsc' ] + args = ['/GR', '/FD', '/Zm250', '/EHsc', '/Z7'] else: args = [] @@ -76,7 +76,7 @@ def get_extra_compile_args(): def get_extra_link_args(): if sys.platform == 'win32': - args = ['/subsystem:windows', '/machine:I386'] + args = ['/subsystem:windows', '/machine:I386', '/DEBUG'] elif sys.platform == 'darwin': major, minor, patch = [ int(item) for item in platform.mac_ver()[0].split('.')] From 531c673efd694a3e800050680f126363c34a9ea1 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Thu, 4 Sep 2014 18:48:01 +0100 Subject: [PATCH 06/25] removed ql/quantlib.hpp usage and adds a patched version of ql/settings.hpp to be used locally when in dll context --- cpp_layer/mc_vanilla_engine_support_code.cpp | 4 +- cpp_layer/mc_vanilla_engine_support_code.hpp | 3 +- cpp_layer/ql_settings.cpp | 4 +- cpp_layer/ql_settings.hpp | 4 +- cpp_layer/settings.hpp | 191 +++++++++++++++++++ cpp_layer/simulate_support_code.cpp | 9 +- cpp_layer/simulate_support_code.hpp | 11 +- 7 files changed, 215 insertions(+), 11 deletions(-) create mode 100644 cpp_layer/settings.hpp diff --git a/cpp_layer/mc_vanilla_engine_support_code.cpp b/cpp_layer/mc_vanilla_engine_support_code.cpp index 9b096f489..b5d360607 100644 --- a/cpp_layer/mc_vanilla_engine_support_code.cpp +++ b/cpp_layer/mc_vanilla_engine_support_code.cpp @@ -6,8 +6,10 @@ #include #include -#include +#include #include +#include +#include namespace QuantLib { diff --git a/cpp_layer/mc_vanilla_engine_support_code.hpp b/cpp_layer/mc_vanilla_engine_support_code.hpp index 363c56072..d022b3eed 100644 --- a/cpp_layer/mc_vanilla_engine_support_code.hpp +++ b/cpp_layer/mc_vanilla_engine_support_code.hpp @@ -5,8 +5,9 @@ */ #include -#include +#include #include +#include namespace QuantLib { diff --git a/cpp_layer/ql_settings.cpp b/cpp_layer/ql_settings.cpp index 30f37a349..0ef05105a 100644 --- a/cpp_layer/ql_settings.cpp +++ b/cpp_layer/ql_settings.cpp @@ -1,8 +1,8 @@ #include -#include +#include using namespace QuantLib; -namespace QL { +namespace QuantLib { void set_evaluation_date(Date& evaluation_date) { Settings::instance().evaluationDate() = evaluation_date; } diff --git a/cpp_layer/ql_settings.hpp b/cpp_layer/ql_settings.hpp index f8810c016..710d314bf 100644 --- a/cpp_layer/ql_settings.hpp +++ b/cpp_layer/ql_settings.hpp @@ -5,9 +5,9 @@ */ #include -#include +#include -namespace QL { +namespace QuantLib { QuantLib::Date get_evaluation_date(); void set_evaluation_date(QuantLib::Date& evaluation_date); } diff --git a/cpp_layer/settings.hpp b/cpp_layer/settings.hpp new file mode 100644 index 000000000..e6eb2fe3e --- /dev/null +++ b/cpp_layer/settings.hpp @@ -0,0 +1,191 @@ +// !! Patched version of ql/settings.hpp doing a dllimport on Settings +/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + +/* + Copyright (C) 2007, 2011 Ferdinando Ametrano + Copyright (C) 2007 François du Vignaud + Copyright (C) 2004, 2005, 2007, 2009 StatPro Italia srl + + This file is part of QuantLib, a free-software/open-source library + for financial quantitative analysts and developers - http://quantlib.org/ + + QuantLib is free software: you can redistribute it and/or modify it + under the terms of the QuantLib license. You should have received a + copy of the license along with this program; if not, please email + . The license is also available online at + . + + This program is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. See the license for more details. +*/ + +/*! \file settings.hpp + \brief global repository for run-time library settings +*/ + +#ifndef quantlib_settings_hpp +#define quantlib_settings_hpp + +#include +#include +#include +#include + +namespace QuantLib { + + //! global repository for run-time library settings + class __declspec(dllimport) Settings : public Singleton { + friend class Singleton; + private: + Settings(); + class DateProxy : public ObservableValue { + public: + DateProxy(); + DateProxy& operator=(const Date&); + operator Date() const; + }; + friend std::ostream& operator<<(std::ostream&, const DateProxy&); + public: + //! the date at which pricing is to be performed. + /*! Client code can inspect the evaluation date, as in: + \code + Date d = Settings::instance().evaluationDate(); + \endcode + where today's date is returned if the evaluation date is + set to the null date (its default value;) can set it to a + new value, as in: + \code + Settings::instance().evaluationDate() = d; + \endcode + and can register with it, as in: + \code + registerWith(Settings::instance().evaluationDate()); + \endcode + to be notified when it is set to a new value. + \warning a notification is not sent when the evaluation + date changes for natural causes---i.e., a date + was not explicitly set (which results in today's + date being used for pricing) and the current date + changes as the clock strikes midnight. + */ + DateProxy& evaluationDate(); + const DateProxy& evaluationDate() const; + + /*! Call this to prevent the evaluation date to change at + midnight (and, incidentally, to gain quite a bit of + performance.) If no evaluation date was previously set, + it is equivalent to setting the evaluation date to + Date::todaysDate(); if an evaluation date other than + Date() was already set, it has no effect. + */ + void anchorEvaluationDate(); + /*! Call this to reset the evaluation date to + Date::todaysDate() and allow it to change at midnight. It + is equivalent to setting the evaluation date to Date(). + This comes at the price of losing some performance, since + the evaluation date is re-evaluated each time it is read. + */ + void resetEvaluationDate(); + + /*! This flag specifies whether or not Events occurring on the reference + date should, by default, be taken into account as not happened yet. + It can be overridden locally when calling the Event::hasOccurred + method. + */ + bool& includeReferenceDateEvents(); + bool includeReferenceDateEvents() const; + + /*! \deprecated Use includeReferenceDateEvents() instead */ + QL_DEPRECATED + bool& includeReferenceDateCashFlows() { + return includeReferenceDateEvents(); + } + /*! \deprecated Use includeReferenceDateEvents() instead */ + QL_DEPRECATED + bool includeReferenceDateCashFlows() const { + return includeReferenceDateEvents(); + } + + /*! If set, this flag specifies whether or not CashFlows + occurring on today's date should enter the NPV. When the + NPV date (i.e., the date at which the cash flows are + discounted) equals today's date, this flag overrides the + behavior chosen for includeReferenceDate. It cannot be overridden + locally when calling the CashFlow::hasOccurred method. + */ + boost::optional& includeTodaysCashFlows(); + boost::optional includeTodaysCashFlows() const; + + bool& enforcesTodaysHistoricFixings(); + bool enforcesTodaysHistoricFixings() const; + private: + DateProxy evaluationDate_; + bool includeReferenceDateEvents_; + boost::optional includeTodaysCashFlows_; + bool enforcesTodaysHistoricFixings_; + }; + + + // helper class to temporarily and safely change the settings + class SavedSettings { + public: + SavedSettings(); + ~SavedSettings(); + private: + Date evaluationDate_; + bool includeReferenceDateEvents_; + boost::optional includeTodaysCashFlows_; + bool enforcesTodaysHistoricFixings_; + }; + + + // inline + + inline Settings::DateProxy::operator Date() const { + if (value() == Date()) + return Date::todaysDate(); + else + return value(); + } + + inline Settings::DateProxy& Settings::DateProxy::operator=(const Date& d) { + ObservableValue::operator=(d); + return *this; + } + + inline Settings::DateProxy& Settings::evaluationDate() { + return evaluationDate_; + } + + inline const Settings::DateProxy& Settings::evaluationDate() const { + return evaluationDate_; + } + + inline bool& Settings::includeReferenceDateEvents() { + return includeReferenceDateEvents_; + } + + inline bool Settings::includeReferenceDateEvents() const { + return includeReferenceDateEvents_; + } + + inline boost::optional& Settings::includeTodaysCashFlows() { + return includeTodaysCashFlows_; + } + + inline boost::optional Settings::includeTodaysCashFlows() const { + return includeTodaysCashFlows_; + } + + inline bool& Settings::enforcesTodaysHistoricFixings() { + return enforcesTodaysHistoricFixings_; + } + + inline bool Settings::enforcesTodaysHistoricFixings() const { + return enforcesTodaysHistoricFixings_; + } + +} + +#endif diff --git a/cpp_layer/simulate_support_code.cpp b/cpp_layer/simulate_support_code.cpp index ea5c91d2a..b94e40226 100644 --- a/cpp_layer/simulate_support_code.cpp +++ b/cpp_layer/simulate_support_code.cpp @@ -1,4 +1,7 @@ -#include +#include +#include +#include +#include /* * Multipath simulator. A multipath simulator is needed when the stochastic @@ -6,7 +9,9 @@ * the simulation of the variance process and the simulation of the price process */ -namespace QuantLib { +using namespace QuantLib; + +namespace PyQL { void simulateMP(const boost::shared_ptr& process, int nbPaths, int nbSteps, Time horizon, BigNatural seed, diff --git a/cpp_layer/simulate_support_code.hpp b/cpp_layer/simulate_support_code.hpp index 4809b8648..4038f9245 100644 --- a/cpp_layer/simulate_support_code.hpp +++ b/cpp_layer/simulate_support_code.hpp @@ -1,12 +1,17 @@ -#include +#include +#include +#include +#include -namespace QuantLib { +using namespace QuantLib; + +namespace PyQL { /* * Multipath simulator */ - void simulateMP(const boost::shared_ptr& process, + void simulateMP(const boost::shared_ptr& process, int nbPaths, int nbSteps, Time horizon, BigNatural seed, bool antithetic_variates, double *res); From 72be7bc066636434de2565b01640ee7e5603bbc9 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Thu, 4 Sep 2014 18:48:54 +0100 Subject: [PATCH 07/25] symbols needed to create the QuantLib.dll --- symbols.def | 262 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100644 symbols.def diff --git a/symbols.def b/symbols.def new file mode 100644 index 000000000..687ec0e44 --- /dev/null +++ b/symbols.def @@ -0,0 +1,262 @@ +LIBRARY "QuantLib" +EXPORTS + ??0TARGET@QuantLib@@QAE@XZ + ?advance@Calendar@QuantLib@@QBE?AVDate@2@ABV32@HW4TimeUnit@2@W4BusinessDayConvention@2@_N@Z + ??0Schedule@QuantLib@@QAE@VDate@1@ABV21@ABVPeriod@1@ABVCalendar@1@W4BusinessDayConvention@1@4W4Rule@DateGeneration@1@_N11@Z + ?implementation@ActualActual@QuantLib@@CA?AV?$shared_ptr@VImpl@DayCounter@QuantLib@@@boost@@W4Convention@12@@Z + ?endOfMonth@Date@QuantLib@@SA?AV12@ABV12@@Z + ?settlementDate@Bond@QuantLib@@QBE?AVDate@2@V32@@Z + ??0ZeroCouponBond@QuantLib@@QAE@IABVCalendar@1@NABVDate@1@W4BusinessDayConvention@1@N1@Z + ?dirtyPrice@Bond@QuantLib@@QBENXZ + ?maturityDate@Bond@QuantLib@@QBE?AVDate@2@XZ + ?cleanPrice@Bond@QuantLib@@QBENXZ + ?holidayList@Calendar@QuantLib@@SA?AV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@std@@ABV12@ABVDate@2@1_N@Z + ?advance@Calendar@QuantLib@@QBE?AVDate@2@ABV32@ABVPeriod@2@W4BusinessDayConvention@2@_N@Z + ?removeHoliday@Calendar@QuantLib@@QAEXABVDate@2@@Z + ?addHoliday@Calendar@QuantLib@@QAEXABVDate@2@@Z + ?businessDaysBetween@Calendar@QuantLib@@QBEJABVDate@2@0_N1@Z + ?adjust@Calendar@QuantLib@@QBE?AVDate@2@ABV32@W4BusinessDayConvention@2@@Z + ?yearFraction@Impl@Business252@QuantLib@@UBENABVDate@3@000@Z + ?dayCount@Impl@Business252@QuantLib@@UBEJABVDate@3@0@Z + ?yearFraction@Impl@SimpleDayCounter@QuantLib@@UBENABVDate@3@000@Z + ?name@Impl@Business252@QuantLib@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ + ?dayCount@Impl@SimpleDayCounter@QuantLib@@UBEJABVDate@3@0@Z + ?previousDate@Schedule@QuantLib@@QBE?AVDate@2@ABV32@@Z + ?nextDate@Schedule@QuantLib@@QBE?AVDate@2@ABV32@@Z + ??0SimpleCashFlow@QuantLib@@QAE@NABVDate@1@@Z + ??0JointCalendar@QuantLib@@QAE@ABVCalendar@1@0W4JointCalendarRule@1@@Z + ??0UnitedKingdom@QuantLib@@QAE@W4Market@01@@Z + ??0UnitedStates@QuantLib@@QAE@W4Market@01@@Z + ??0Germany@QuantLib@@QAE@W4Market@01@@Z + ?implementation@Thirty360@QuantLib@@CA?AV?$shared_ptr@VImpl@DayCounter@QuantLib@@@boost@@W4Convention@12@@Z + ??0DiscountingBondEngine@QuantLib@@QAE@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@V?$optional@_N@boost@@@Z + ??0InterestRate@QuantLib@@QAE@XZ + ?zeroRate@YieldTermStructure@QuantLib@@QBE?AVInterestRate@2@ABVDate@2@ABVDayCounter@2@W4Compounding@2@W4Frequency@2@_N@Z + ??0InterestRate@QuantLib@@QAE@NABVDayCounter@1@W4Compounding@1@W4Frequency@1@@Z + ?discount@YieldTermStructure@QuantLib@@QBENN_N@Z + ??0FlatForward@QuantLib@@QAE@ABVDate@1@ABV?$Handle@VQuote@QuantLib@@@1@ABVDayCounter@1@W4Compounding@1@W4Frequency@1@@Z + ??0FlatForward@QuantLib@@QAE@ABVDate@1@NABVDayCounter@1@W4Compounding@1@W4Frequency@1@@Z + ??0FlatForward@QuantLib@@QAE@IABVCalendar@1@ABV?$Handle@VQuote@QuantLib@@@1@ABVDayCounter@1@W4Compounding@1@W4Frequency@1@@Z + ??0FlatForward@QuantLib@@QAE@IABVCalendar@1@NABVDayCounter@1@W4Compounding@1@W4Frequency@1@@Z + ??0FuturesRateHelper@QuantLib@@QAE@ABV?$Handle@VQuote@QuantLib@@@1@ABVDate@1@IABVCalendar@1@W4BusinessDayConvention@1@_NABVDayCounter@1@0@Z + ??0FraRateHelper@QuantLib@@QAE@ABV?$Handle@VQuote@QuantLib@@@1@IIIABVCalendar@1@W4BusinessDayConvention@1@_NABVDayCounter@1@@Z + ??0SwapRateHelper@QuantLib@@QAE@NABV?$shared_ptr@VSwapIndex@QuantLib@@@boost@@ABV?$Handle@VQuote@QuantLib@@@1@ABVPeriod@1@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@@Z + ??0SwapRateHelper@QuantLib@@QAE@NABVPeriod@1@ABVCalendar@1@W4Frequency@1@W4BusinessDayConvention@1@ABVDayCounter@1@ABV?$shared_ptr@VIborIndex@QuantLib@@@boost@@ABV?$Handle@VQuote@QuantLib@@@1@0ABV?$Handle@VYieldTermStructure@QuantLib@@@1@@Z + ??0DepositRateHelper@QuantLib@@QAE@NABV?$shared_ptr@VIborIndex@QuantLib@@@boost@@@Z + ??0DepositRateHelper@QuantLib@@QAE@NABVPeriod@1@IABVCalendar@1@W4BusinessDayConvention@1@_NABVDayCounter@1@@Z + ??0SwapIndex@QuantLib@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABVPeriod@1@IVCurrency@1@ABVCalendar@1@1W4BusinessDayConvention@1@ABVDayCounter@1@ABV?$shared_ptr@VIborIndex@QuantLib@@@boost@@@Z + ??0Libor@QuantLib@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABVPeriod@1@IABVCurrency@1@ABVCalendar@1@ABVDayCounter@1@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@@Z + ??0ZeroYieldStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@ABVDayCounter@1@ABV?$vector@V?$Handle@VQuote@QuantLib@@@QuantLib@@V?$allocator@V?$Handle@VQuote@QuantLib@@@QuantLib@@@std@@@std@@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@6@@Z + ?setJumps@YieldTermStructure@QuantLib@@AAEXXZ + ?update@TermStructure@QuantLib@@UAEXXZ + ?referenceDate@TermStructure@QuantLib@@UBEABVDate@2@XZ + ??0DividendVanillaOption@QuantLib@@QAE@ABV?$shared_ptr@VStrikedTypePayoff@QuantLib@@@boost@@ABV?$shared_ptr@VExercise@QuantLib@@@3@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@std@@ABV?$vector@NV?$allocator@N@std@@@6@@Z + ??0EuropeanOption@QuantLib@@QAE@ABV?$shared_ptr@VStrikedTypePayoff@QuantLib@@@boost@@ABV?$shared_ptr@VExercise@QuantLib@@@3@@Z + ??0VanillaOption@QuantLib@@QAE@ABV?$shared_ptr@VStrikedTypePayoff@QuantLib@@@boost@@ABV?$shared_ptr@VExercise@QuantLib@@@3@@Z + ??0AmericanExercise@QuantLib@@QAE@ABVDate@1@0_N@Z + ??0AmericanExercise@QuantLib@@QAE@ABVDate@1@_N@Z + ??0EuropeanExercise@QuantLib@@QAE@ABVDate@1@@Z + ?impliedVolatility@DividendVanillaOption@QuantLib@@QBENNABV?$shared_ptr@VGeneralizedBlackScholesProcess@QuantLib@@@boost@@NINN@Z + ?impliedVolatility@VanillaOption@QuantLib@@QBENNABV?$shared_ptr@VGeneralizedBlackScholesProcess@QuantLib@@@boost@@NINN@Z + ?itmCashProbability@OneAssetOption@QuantLib@@QBENXZ + ?strikeSensitivity@OneAssetOption@QuantLib@@QBENXZ + ?dividendRho@OneAssetOption@QuantLib@@QBENXZ + ?rho@OneAssetOption@QuantLib@@QBENXZ + ?vega@OneAssetOption@QuantLib@@QBENXZ + ?thetaPerDay@OneAssetOption@QuantLib@@QBENXZ + ?theta@OneAssetOption@QuantLib@@QBENXZ + ?gamma@OneAssetOption@QuantLib@@QBENXZ + ?elasticity@OneAssetOption@QuantLib@@QBENXZ + ?deltaForward@OneAssetOption@QuantLib@@QBENXZ + ?delta@OneAssetOption@QuantLib@@QBENXZ + ?accept@PlainVanillaPayoff@QuantLib@@UAEXAAVAcyclicVisitor@2@@Z + ?description@StrikedTypePayoff@QuantLib@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ + ?description@TypePayoff@QuantLib@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ + ??RPlainVanillaPayoff@QuantLib@@UBENN@Z + ??0BlackScholesMertonProcess@QuantLib@@QAE@ABV?$Handle@VQuote@QuantLib@@@1@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@1ABV?$Handle@VBlackVolTermStructure@QuantLib@@@1@ABV?$shared_ptr@Vdiscretization@StochasticProcess1D@QuantLib@@@boost@@@Z + ??0BlackScholesProcess@QuantLib@@QAE@ABV?$Handle@VQuote@QuantLib@@@1@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@ABV?$Handle@VBlackVolTermStructure@QuantLib@@@1@ABV?$shared_ptr@Vdiscretization@StochasticProcess1D@QuantLib@@@boost@@@Z + ?covariance@EulerDiscretization@QuantLib@@UBE?AV?$Disposable@VMatrix@QuantLib@@@2@ABVStochasticProcess@2@NABVArray@2@N@Z + ?diffusion@EulerDiscretization@QuantLib@@UBE?AV?$Disposable@VMatrix@QuantLib@@@2@ABVStochasticProcess@2@NABVArray@2@N@Z + ?diffusion@EulerDiscretization@QuantLib@@UBENABVStochasticProcess1D@2@NNN@Z + ?drift@EulerDiscretization@QuantLib@@UBE?AV?$Disposable@VArray@QuantLib@@@2@ABVStochasticProcess@2@NABVArray@2@N@Z + ?drift@EulerDiscretization@QuantLib@@UBENABVStochasticProcess1D@2@NNN@Z + ?variance@EulerDiscretization@QuantLib@@UBENABVStochasticProcess1D@2@NNN@Z + ??0BlackVolatilityTermStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@W4BusinessDayConvention@1@ABVDayCounter@1@@Z + ?blackVolatility@GeneralizedBlackScholesProcess@QuantLib@@QBEABV?$Handle@VBlackVolTermStructure@QuantLib@@@2@XZ + ??0AnalyticDividendEuropeanEngine@QuantLib@@QAE@ABV?$shared_ptr@VGeneralizedBlackScholesProcess@QuantLib@@@boost@@@Z + ??0AnalyticEuropeanEngine@QuantLib@@QAE@ABV?$shared_ptr@VGeneralizedBlackScholesProcess@QuantLib@@@boost@@@Z + ??0AnalyticHestonEngine@QuantLib@@QAE@ABV?$shared_ptr@VHestonModel@QuantLib@@@boost@@I@Z + ??0BaroneAdesiWhaleyApproximationEngine@QuantLib@@QAE@ABV?$shared_ptr@VGeneralizedBlackScholesProcess@QuantLib@@@boost@@@Z + ??0BatesDetJumpEngine@QuantLib@@QAE@ABV?$shared_ptr@VBatesDetJumpModel@QuantLib@@@boost@@I@Z + ??0BatesDoubleExpDetJumpEngine@QuantLib@@QAE@ABV?$shared_ptr@VBatesDoubleExpDetJumpModel@QuantLib@@@boost@@I@Z + ??0BatesDoubleExpEngine@QuantLib@@QAE@ABV?$shared_ptr@VBatesDoubleExpModel@QuantLib@@@boost@@I@Z + ??0BatesEngine@QuantLib@@QAE@ABV?$shared_ptr@VBatesModel@QuantLib@@@boost@@I@Z + ??0BlackCalculator@QuantLib@@QAE@ABV?$shared_ptr@VStrikedTypePayoff@QuantLib@@@boost@@NNN@Z + ?applyTo@TridiagonalOperator@QuantLib@@QBE?AV?$Disposable@VArray@QuantLib@@@2@ABVArray@2@@Z + ?checkRange@TermStructure@QuantLib@@IBEXABVDate@2@_N@Z + ?checkStrike@VolatilityTermStructure@QuantLib@@IBEXN_N@Z + ?delta@BlackCalculator@QuantLib@@UBENN@Z + ?discount@YieldTermStructure@QuantLib@@QBENN_N@Z + ?dividendYield@GeneralizedBlackScholesProcess@QuantLib@@QBEABV?$Handle@VYieldTermStructure@QuantLib@@@2@XZ + ?elasticity@BlackCalculator@QuantLib@@UBENN@Z + ?ensureStrikeInGrid@FDVanillaEngine@QuantLib@@IBEXXZ + ?firstDerivativeAtCenter@SampledCurve@QuantLib@@QBENXZ + ?gamma@BlackCalculator@QuantLib@@UBENN@Z + ?getResidualTime@FDVanillaEngine@QuantLib@@MBENXZ + ?identity@TridiagonalOperator@QuantLib@@SA?AV?$Disposable@VTridiagonalOperator@QuantLib@@@2@I@Z + ?initializeBoundaryConditions@FDVanillaEngine@QuantLib@@MBEXXZ + ?initializeInitialCondition@FDVanillaEngine@QuantLib@@MBEXXZ + ?initializeOperator@FDVanillaEngine@QuantLib@@MBEXXZ + ?riskFreeRate@GeneralizedBlackScholesProcess@QuantLib@@QBEABV?$Handle@VYieldTermStructure@QuantLib@@@2@XZ + ?secondDerivativeAtCenter@SampledCurve@QuantLib@@QBENXZ + ?setGridLimits@FDVanillaEngine@QuantLib@@MBEXNN@Z + ?setGridLimits@FDVanillaEngine@QuantLib@@MBEXXZ + ?setupArguments@FDVanillaEngine@QuantLib@@MBEXPBVarguments@PricingEngine@2@@Z + ?solveFor@TridiagonalOperator@QuantLib@@QBEXABVArray@2@AAV32@@Z + ?stateVariable@GeneralizedBlackScholesProcess@QuantLib@@QBEABV?$Handle@VQuote@QuantLib@@@2@XZ + ?theta@BlackCalculator@QuantLib@@UBENNN@Z + ?validate@arguments@DividendVanillaOption@QuantLib@@UBEXXZ + ?value@BlackCalculator@QuantLib@@QBENXZ + ?valueAtCenter@SampledCurve@QuantLib@@QBENXZ + ??0TridiagonalOperator@QuantLib@@QAE@ABV?$Disposable@VTridiagonalOperator@QuantLib@@@1@@Z + ??0TridiagonalOperator@QuantLib@@QAE@ABVArray@1@00@Z + ??0TridiagonalOperator@QuantLib@@QAE@I@Z + ??0Constraint@QuantLib@@QAE@ABV?$shared_ptr@VImpl@Constraint@QuantLib@@@boost@@@Z + ??0HestonModel@QuantLib@@QAE@ABV?$shared_ptr@VHestonProcess@QuantLib@@@boost@@@Z + ??0HestonModelHelper@QuantLib@@QAE@ABVPeriod@1@ABVCalendar@1@NNABV?$Handle@VQuote@QuantLib@@@1@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@3W4CalibrationErrorType@CalibrationHelper@1@@Z + ?impliedVolatility@CalibrationHelper@QuantLib@@QBENNNINN@Z + ??0BatesDetJumpModel@QuantLib@@QAE@ABV?$shared_ptr@VBatesProcess@QuantLib@@@boost@@NN@Z + ??0BatesDoubleExpDetJumpModel@QuantLib@@QAE@ABV?$shared_ptr@VHestonProcess@QuantLib@@@boost@@NNNNNN@Z + ??0BatesDoubleExpModel@QuantLib@@QAE@ABV?$shared_ptr@VHestonProcess@QuantLib@@@boost@@NNNN@Z + ??0BatesModel@QuantLib@@QAE@ABV?$shared_ptr@VBatesProcess@QuantLib@@@boost@@@Z + ??0EndCriteria@QuantLib@@QAE@IINNN@Z + ??0LevenbergMarquardt@QuantLib@@QAE@NNN@Z + ?s0@HestonProcess@QuantLib@@QBEABV?$Handle@VQuote@QuantLib@@@2@XZ + ??0HestonProcess@QuantLib@@QAE@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@0ABV?$Handle@VQuote@QuantLib@@@1@NNNNNW4Discretization@01@@Z + ??0BatesProcess@QuantLib@@QAE@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@0ABV?$Handle@VQuote@QuantLib@@@1@NNNNNNNNW4Discretization@HestonProcess@1@@Z + ?delta@BatesProcess@QuantLib@@QBENXZ + ?nu@BatesProcess@QuantLib@@QBENXZ + ?lambda@BatesProcess@QuantLib@@QBENXZ + ??0Data@Currency@QuantLib@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0H00HABVRounding@2@0ABV12@@Z + ?survivalProbability@DefaultProbabilityTermStructure@QuantLib@@QBENN_N@Z + ??0SpreadCdsHelper@QuantLib@@QAE@NABVPeriod@1@HABVCalendar@1@W4Frequency@1@W4BusinessDayConvention@1@W4Rule@DateGeneration@1@ABVDayCounter@1@NABV?$Handle@VYieldTermStructure@QuantLib@@@1@_N7@Z + ?clone@IborIndex@QuantLib@@UBE?AV?$shared_ptr@VIborIndex@QuantLib@@@boost@@ABV?$Handle@VYieldTermStructure@QuantLib@@@2@@Z + ?forecastFixing@IborIndex@QuantLib@@UBENABVDate@2@@Z + ??0Euribor@QuantLib@@QAE@ABVPeriod@1@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@@Z + ?fixing@InterestRateIndex@QuantLib@@UBENABVDate@2@_N@Z + ?addFixing@Index@QuantLib@@UAEXABVDate@2@N_N@Z + ?maturityDate@IborIndex@QuantLib@@UBE?AVDate@2@ABV32@@Z + ?couponLegNPV@CreditDefaultSwap@QuantLib@@QBENXZ + ?defaultLegNPV@CreditDefaultSwap@QuantLib@@QBENXZ + ?fairSpread@CreditDefaultSwap@QuantLib@@QBENXZ + ?fairUpfront@CreditDefaultSwap@QuantLib@@QBENXZ + ??0CreditDefaultSwap@QuantLib@@QAE@W4Side@Protection@1@NNABVSchedule@1@W4BusinessDayConvention@1@ABVDayCounter@1@_N4ABVDate@1@ABV?$shared_ptr@VClaim@QuantLib@@@boost@@@Z + ??0Date@QuantLib@@QAE@XZ + ?assertion_failed@boost@@YAXPBD00J@Z + ??0ZARCurrency@QuantLib@@QAE@XZ + ??0SGDCurrency@QuantLib@@QAE@XZ + ??0SEKCurrency@QuantLib@@QAE@XZ + ??0PLNCurrency@QuantLib@@QAE@XZ + ??0NZDCurrency@QuantLib@@QAE@XZ + ??0NOKCurrency@QuantLib@@QAE@XZ + ??0HKDCurrency@QuantLib@@QAE@XZ + ??0INRCurrency@QuantLib@@QAE@XZ + ??0DKKCurrency@QuantLib@@QAE@XZ + ??0AUDCurrency@QuantLib@@QAE@XZ + ??0CHFCurrency@QuantLib@@QAE@XZ + ??0JPYCurrency@QuantLib@@QAE@XZ + ??0GBPCurrency@QuantLib@@QAE@XZ + ??0EURCurrency@QuantLib@@QAE@XZ + ??0USDCurrency@QuantLib@@QAE@XZ + ?what@Error@QuantLib@@UBEPBDXZ + ??0Error@QuantLib@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@J00@Z + ??6QuantLib@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV12@ABVDate@0@@Z + ?businessDayConvention@IborIndex@QuantLib@@QBE?AW4BusinessDayConvention@2@XZ + ??0FixedRateBond@QuantLib@@QAE@INABVSchedule@1@ABV?$vector@NV?$allocator@N@std@@@std@@ABVDayCounter@1@W4BusinessDayConvention@1@NABVDate@1@ABVCalendar@1@ABVPeriod@1@5W461@_N@Z + ?yield@Bond@QuantLib@@QBENNABVDayCounter@2@W4Compounding@2@W4Frequency@2@VDate@2@NI@Z + ??0VanillaSwap@QuantLib@@QAE@W4Type@01@NABVSchedule@1@NABVDayCounter@1@1ABV?$shared_ptr@VIborIndex@QuantLib@@@boost@@N2V?$optional@W4BusinessDayConvention@QuantLib@@@6@@Z + ?floatingLegNPV@VanillaSwap@QuantLib@@QBENXZ + ?fixedLegNPV@VanillaSwap@QuantLib@@QBENXZ + ?floatingLegBPS@VanillaSwap@QuantLib@@QBENXZ + ?fixedLegBPS@VanillaSwap@QuantLib@@QBENXZ + ?fairSpread@VanillaSwap@QuantLib@@QBENXZ + ?fairRate@VanillaSwap@QuantLib@@QBENXZ + ?maturityDate@Swap@QuantLib@@QBE?AVDate@2@XZ + ?startDate@Swap@QuantLib@@QBE?AVDate@2@XZ + ?blackFormulaImpliedStdDev@QuantLib@@YANW4Type@Option@1@NNNNNNNI@Z + ?blackFormula@QuantLib@@YANW4Type@Option@1@NNNNN@Z + ??0MidPointCdsEngine@QuantLib@@QAE@ABV?$Handle@VDefaultProbabilityTermStructure@QuantLib@@@1@NABV?$Handle@VYieldTermStructure@QuantLib@@@1@V?$optional@_N@boost@@@Z + ??0DiscountingSwapEngine@QuantLib@@QAE@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@V?$optional@_N@boost@@VDate@1@2@Z + ?maxDate@Date@QuantLib@@SA?AV12@XZ + ??0FixedRateBondHelper@QuantLib@@QAE@ABV?$Handle@VQuote@QuantLib@@@1@INABVSchedule@1@ABV?$vector@NV?$allocator@N@std@@@std@@ABVDayCounter@1@W4BusinessDayConvention@1@NABVDate@1@@Z + ??0BondHelper@QuantLib@@QAE@ABV?$Handle@VQuote@QuantLib@@@1@ABV?$shared_ptr@VBond@QuantLib@@@boost@@@Z + ?forwardRate@YieldTermStructure@QuantLib@@QBE?AVInterestRate@2@ABVDate@2@0ABVDayCounter@2@W4Compounding@2@W4Frequency@2@_N@Z + ?update@YieldTermStructure@QuantLib@@UAEXXZ + ?isLeap@Date@QuantLib@@SA_NH@Z + ?month@Date@QuantLib@@QBE?AW4Month@2@XZ + ?year@Date@QuantLib@@QBEHXZ + ?monthLength@Date@QuantLib@@CAHW4Month@2@_N@Z + ??0Date@QuantLib@@QAE@HW4Month@1@H@Z + ??0Period@QuantLib@@QAE@W4Frequency@1@@Z + ??_0Period@QuantLib@@QAEAAV01@H@Z + ?minDate@Date@QuantLib@@SA?AV12@XZ + ?nthWeekday@Date@QuantLib@@SA?AV12@IW4Weekday@2@W4Month@2@H@Z + ?nextWeekday@Date@QuantLib@@SA?AV12@ABV12@W4Weekday@2@@Z + ?todaysDate@Date@QuantLib@@SA?AV12@XZ + ??ZDate@QuantLib@@QAEAAV01@ABVPeriod@1@@Z + ??ZDate@QuantLib@@QAEAAV01@J@Z + ??YDate@QuantLib@@QAEAAV01@ABVPeriod@1@@Z + ??YDate@QuantLib@@QAEAAV01@J@Z + ??ZPeriod@QuantLib@@QAEAAV01@ABV01@@Z + ??YPeriod@QuantLib@@QAEAAV01@ABV01@@Z + ??GQuantLib@@YA?AVPeriod@0@ABV10@0@Z + ?normalize@Period@QuantLib@@QAEXXZ + ?frequency@Period@QuantLib@@QBE?AW4Frequency@2@XZ + ?monthOffset@Date@QuantLib@@CAHW4Month@2@_N@Z + ?advance@Date@QuantLib@@CA?AV12@ABV12@HW4TimeUnit@2@@Z + ??0Date@QuantLib@@QAE@J@Z + ?yearOffset@Date@QuantLib@@CAJH@Z + ??MQuantLib@@YA_NABVPeriod@0@0@Z + ?nextCode@IMM@QuantLib@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV34@_NABVDate@2@@Z + ?nextCode@IMM@QuantLib@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABVDate@2@_N@Z + ?nextDate@IMM@QuantLib@@SA?AVDate@2@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_NABV32@@Z + ?nextDate@IMM@QuantLib@@SA?AVDate@2@ABV32@_N@Z + ?date@IMM@QuantLib@@SA?AVDate@2@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV32@@Z + ?code@IMM@QuantLib@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABVDate@2@@Z + ?isIMMdate@IMM@QuantLib@@SA_NABVDate@2@_N@Z + ?isIMMcode@IMM@QuantLib@@SA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z + ??0Japan@QuantLib@@QAE@XZ + ??0Switzerland@QuantLib@@QAE@XZ + ?make_sequence_generator@?$GenericPseudoRandom@VMersenneTwisterUniformRng@QuantLib@@VInverseCumulativeNormal@2@@QuantLib@@SA?AV?$InverseCumulativeRsg@V?$RandomSequenceGenerator@VMersenneTwisterUniformRng@QuantLib@@@QuantLib@@VInverseCumulativeNormal@2@@2@IK@Z + ??0Settings@QuantLib@@AAE@XZ + ??6QuantLib@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV12@W4BusinessDayConvention@0@@Z + ??6detail@QuantLib@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV23@ABUordinal_holder@01@@Z + ?checkRange@TermStructure@QuantLib@@IBEXN_N@Z + ??0SurvivalProbabilityStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@ABVDayCounter@1@ABV?$vector@V?$Handle@VQuote@QuantLib@@@QuantLib@@V?$allocator@V?$Handle@VQuote@QuantLib@@@QuantLib@@@std@@@std@@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@6@@Z + ??0DefaultDensityStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@ABVDayCounter@1@ABV?$vector@V?$Handle@VQuote@QuantLib@@@QuantLib@@V?$allocator@V?$Handle@VQuote@QuantLib@@@QuantLib@@@std@@@std@@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@6@@Z + ??0HazardRateStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@ABVDayCounter@1@ABV?$vector@V?$Handle@VQuote@QuantLib@@@QuantLib@@V?$allocator@V?$Handle@VQuote@QuantLib@@@QuantLib@@@std@@@std@@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@6@@Z + ??6detail@QuantLib@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV23@ABUordinal_holder@01@@Z + ?inverse@QuantLib@@YA?AV?$Disposable@VMatrix@QuantLib@@@1@ABVMatrix@1@@Z + ??0ForwardRateStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@ABVDayCounter@1@ABV?$vector@V?$Handle@VQuote@QuantLib@@@QuantLib@@V?$allocator@V?$Handle@VQuote@QuantLib@@@QuantLib@@@std@@@std@@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@6@@Z + ??0YieldTermStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@ABVDayCounter@1@ABV?$vector@V?$Handle@VQuote@QuantLib@@@QuantLib@@V?$allocator@V?$Handle@VQuote@QuantLib@@@QuantLib@@@std@@@std@@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@6@@Z + ?setJumps@DefaultProbabilityTermStructure@QuantLib@@AAEXXZ + ??0TimeGrid@QuantLib@@QAE@NI@Z + ??0MersenneTwisterUniformRng@QuantLib@@QAE@K@Z + ?riskFreeRate@HestonProcess@QuantLib@@QBEABV?$Handle@VYieldTermStructure@QuantLib@@@2@XZ + ?mean@GeneralStatistics@QuantLib@@QBENXZ + ?variance@GeneralStatistics@QuantLib@@QBENXZ + ?x_low_@InverseCumulativeNormal@QuantLib@@0NB + ?x_high_@InverseCumulativeNormal@QuantLib@@0NB + ?a1_@InverseCumulativeNormal@QuantLib@@0NB + ?a2_@InverseCumulativeNormal@QuantLib@@0NB + ?a3_@InverseCumulativeNormal@QuantLib@@0NB + ?a4_@InverseCumulativeNormal@QuantLib@@0NB + ?a5_@InverseCumulativeNormal@QuantLib@@0NB + ?a6_@InverseCumulativeNormal@QuantLib@@0NB + ?b1_@InverseCumulativeNormal@QuantLib@@0NB + ?b2_@InverseCumulativeNormal@QuantLib@@0NB + ?b3_@InverseCumulativeNormal@QuantLib@@0NB + ?b4_@InverseCumulativeNormal@QuantLib@@0NB + ?b5_@InverseCumulativeNormal@QuantLib@@0NB + ?tail_value@InverseCumulativeNormal@QuantLib@@CANN@Z + ?twist@MersenneTwisterUniformRng@QuantLib@@ABEXXZ \ No newline at end of file From d9f54943886e9bcafa53a994c1db5c4d2e006835 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Thu, 4 Sep 2014 18:49:37 +0100 Subject: [PATCH 08/25] add DEBUG flag to control debugging on Windows --- setup.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/setup.py b/setup.py index f9fd2ae7f..6995886e0 100644 --- a/setup.py +++ b/setup.py @@ -15,8 +15,7 @@ import numpy -## From SO: hack to remove warning about strict prototypes -## http://stackoverflow.com/questions/8106258/cc1plus-warning-command-line-option-wstrict-prototypes-is-valid-for-ada-c-o +DEBUG = False SUPPORT_CODE_INCLUDE = './cpp_layer' @@ -25,7 +24,9 @@ if sys.platform == 'darwin': INCLUDE_DIRS = ['/usr/local/include', '.', SUPPORT_CODE_INCLUDE] LIBRARY_DIRS = ["/usr/local/lib"] - + + ## From SO: hack to remove warning about strict prototypes + ## http://stackoverflow.com/questions/8106258/cc1plus-warning-command-line-option-wstrict-prototypes-is-valid-for-ada-c-o (opt,) = get_config_vars('OPT') os.environ['OPT'] = " ".join( flag for flag in opt.split() if flag != '-Wstrict-prototypes') @@ -38,10 +39,12 @@ SUPPORT_CODE_INCLUDE ] LIBRARY_DIRS = [ - r"c:\dev\QuantLib-1.4\lib", - r'c:\dev\boost_1_56_0\lib' + r"C:\dev\QuantLib-1.4\build\vc90\Win32\Release", # for the dll lib + r"C:\dev\QuantLib-1.4\lib", # for the static lib needed for two extensions + '.', + r'.\dll', ] - QL_LIBRARY = 'QuantLib-vc90-mt' + QL_LIBRARY = 'QuantLib' elif sys.platform == 'linux2': # good for Debian / ubuntu 10.04 (with QL .99 installed by default) INCLUDE_DIRS = ['/usr/local/include', '/usr/include', '.', SUPPORT_CODE_INCLUDE] @@ -61,14 +64,16 @@ def get_define_macros(): (name, None) for name in [ '__WIN32__', 'WIN32', 'NDEBUG', '_WINDOWS', 'NOMINMAX', 'WINNT', '_WINDLL', '_SCL_SECURE_NO_DEPRECATE', '_CRT_SECURE_NO_DEPRECATE', - '_SCL_SECURE_NO_WARNINGS', + '_SCL_SECURE_NO_WARNINGS' ] ] return defines def get_extra_compile_args(): if sys.platform == 'win32': - args = ['/GR', '/FD', '/Zm250', '/EHsc', '/Z7'] + args = ['/GR', '/FD', '/Zm250', '/EHsc'] + if DEBUG: + args.append('/Z7') else: args = [] @@ -76,7 +81,9 @@ def get_extra_compile_args(): def get_extra_link_args(): if sys.platform == 'win32': - args = ['/subsystem:windows', '/machine:I386', '/DEBUG'] + args = ['/subsystem:windows', '/machine:I386'] + if DEBUG: + args.append('/DEBUG') elif sys.platform == 'darwin': major, minor, patch = [ int(item) for item in platform.mac_ver()[0].split('.')] From 32a2f2e805b2c744a9dee27d20e772b13121a526 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Thu, 4 Sep 2014 18:50:11 +0100 Subject: [PATCH 09/25] added fixme and removed useless include --- cpp_layer/ql_settings.cpp | 4 ++++ cpp_layer/ql_settings.hpp | 1 - 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/cpp_layer/ql_settings.cpp b/cpp_layer/ql_settings.cpp index 0ef05105a..dacfcd007 100644 --- a/cpp_layer/ql_settings.cpp +++ b/cpp_layer/ql_settings.cpp @@ -1,5 +1,9 @@ #include + +// FIXME: add a conditional include for Windows arch, otherwise use +// ql/settings.hpp #include + using namespace QuantLib; namespace QuantLib { diff --git a/cpp_layer/ql_settings.hpp b/cpp_layer/ql_settings.hpp index 710d314bf..2cfa6ba92 100644 --- a/cpp_layer/ql_settings.hpp +++ b/cpp_layer/ql_settings.hpp @@ -5,7 +5,6 @@ */ #include -#include namespace QuantLib { QuantLib::Date get_evaluation_date(); From 1573a84ed062181a77ea5fa116ab1b12bc14af8d Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Thu, 4 Sep 2014 18:51:11 +0100 Subject: [PATCH 10/25] updated namespace import --- quantlib/settings/settings.pyx | 2 +- quantlib/sim/simulate.pyx | 2 +- quantlib/test/test_cython_bug.pyx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/quantlib/settings/settings.pyx b/quantlib/settings/settings.pyx index 994780b54..9c4d8ff3d 100644 --- a/quantlib/settings/settings.pyx +++ b/quantlib/settings/settings.pyx @@ -4,7 +4,7 @@ from libcpp cimport bool as cbool cimport quantlib.time._date as qldate cimport quantlib.time.date as date -cdef extern from "ql_settings.hpp" namespace "QL": +cdef extern from "ql_settings.hpp" namespace "QuantLib": qldate.Date get_evaluation_date() void set_evaluation_date(qldate.Date& date) diff --git a/quantlib/sim/simulate.pyx b/quantlib/sim/simulate.pyx index 6126bb873..e8eda7895 100644 --- a/quantlib/sim/simulate.pyx +++ b/quantlib/sim/simulate.pyx @@ -15,7 +15,7 @@ from quantlib.models.equity.bates_model cimport BatesModel, BatesDetJumpModel, B import numpy as np cimport numpy as cnp -cdef extern from "simulate_support_code.hpp": +cdef extern from "simulate_support_code.hpp" namespace 'PyQL': void simulateMP(shared_ptr[_sp.StochasticProcess]& process, int nbPaths, int nbSteps, Time horizon, BigNatural seed, diff --git a/quantlib/test/test_cython_bug.pyx b/quantlib/test/test_cython_bug.pyx index b85f41695..11777d836 100644 --- a/quantlib/test/test_cython_bug.pyx +++ b/quantlib/test/test_cython_bug.pyx @@ -15,7 +15,7 @@ from quantlib.time._schedule cimport Schedule, Backward from quantlib.time.date cimport date_from_qldate, Date from quantlib.time.daycounters._actual_actual cimport ISMA, ActualActual -cdef extern from "ql_settings.hpp" namespace "QL": +cdef extern from "ql_settings.hpp" namespace "QuantLib": QlDate get_evaluation_date() void set_evaluation_date(QlDate& date) From 0f90b1e70cff5b66eeb0de2692a5166aef0f814b Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Thu, 4 Sep 2014 18:55:43 +0100 Subject: [PATCH 11/25] moved quantlib.settings pyx file in the quantlib dir (removed quantlib/settings/) --- quantlib/{settings => }/settings.pyx | 0 quantlib/settings/settings.pxd | 0 setup.py | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) rename quantlib/{settings => }/settings.pyx (100%) delete mode 100644 quantlib/settings/settings.pxd diff --git a/quantlib/settings/settings.pyx b/quantlib/settings.pyx similarity index 100% rename from quantlib/settings/settings.pyx rename to quantlib/settings.pyx diff --git a/quantlib/settings/settings.pxd b/quantlib/settings/settings.pxd deleted file mode 100644 index e69de29bb..000000000 diff --git a/setup.py b/setup.py index 6995886e0..3748c749f 100644 --- a/setup.py +++ b/setup.py @@ -119,7 +119,7 @@ def collect_extensions(): } settings_extension = Extension('quantlib.settings', - ['quantlib/settings/settings.pyx', 'cpp_layer/ql_settings.cpp'], + ['quantlib/settings.pyx', 'cpp_layer/ql_settings.cpp'], **kwargs ) From 076f577bcfb78d6a52362ddd1bfc87259e535ad0 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Thu, 4 Sep 2014 18:56:18 +0100 Subject: [PATCH 12/25] ignore the QL dll if present --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0aec62dbc..8c3cf834f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ build/* docs/build quantlib.egg-info/* +QuantLib.dll *.cpp *.so *.h From 1a61a44dc721703c2081e7e89b40503f5a43934a Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Fri, 5 Sep 2014 01:13:00 +0100 Subject: [PATCH 13/25] adding notes about the windows build --- docs/source/getting_started.rst | 77 +++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/docs/source/getting_started.rst b/docs/source/getting_started.rst index ce30090d6..0410c5462 100644 --- a/docs/source/getting_started.rst +++ b/docs/source/getting_started.rst @@ -113,3 +113,80 @@ Prerequisites: .. note:: If you have installed QuantLib in a directory different from :code:`/opt`, edit the `setup.py` file before running make and update the :code:`INCLUDE_DIRS` and :code:`LIBRARY_DIRS` to point to your installation of QuantLib. .. _pip: https://pypi.python.org/pypi/pip + + +Installation from source on Windows +----------------------------------- + +The following instructions explain how to build the project from source, on a +Windows system. +The instructions have been tested on Windows 7 32bit with Visual Studio 2008. + +.. warning: Visual Studio version + + Visual Studio needs to be the 2008 version. It is the only version compatible + with a Python 2.7 installation that is built against the CRT90. + +Prerequisites: + +* python 2.7 (e.g. Canopy with Cython 0.20 or above) +* pandas 0.9 + +1. Install Quantlib + + a. Install the latest version of Boost from sourceforge. You can get the + binaries of 1.55 for windows 32 or 64bit depending on your target. + + b. Download Quantlib 1.4 from Quantlib.org and unzip locally + + c. Extract the Quantlib folder + + d. Open the QuantLib_vc9 solution with Visual Studio + + e. Patch ql/settings.py + + In the ql/settings.py file, update the Settings class defintion as + following (line 37):: + + class __declspec(dllexport) Settings : public Singleton { + + f. In the QuantLib project properties + + - Change "General" -> "Configuration type" to "Dynamic Library (DLL)" + - Apply + - Change "Linker" -> "Input" -> "Module definition file" to point to + symbol.def in your clone of the PyQL repo + + Apply the changes and build the project + +2. Install Cython. While you can install Cython from source, we strongly + recommend to install Cython via the Canopy Package Manager, another Python + distribution or via pip_:: + + pip install cython + + If you do not have the required permissions to install Python packages in the system path, you can install Cython in your local user account via:: + + pip install --user cython + +3. Build and test pyql + + Edit the setup.py to make sure the INCLUDE_DIRS and LIBRARY_DIRS point to + the correct directories. + + .. code-block:: bash + + PS C:\dev\pyql> python setup.py build + PS C:\dev\pyql> python setup.py install + + .. note:: Development mode + + If you want to build the library in place and test things, you can do: + + + .. code-block:: bash + + PS C:\dev\pyql> python setup.py build_ext --inplace + PS C:\dev\pyql> python -m unittest discover -v + +.. _pip: https://pypi.python.org/pypi/pip \ No newline at end of file From cf164d599d409eaed316b606070305f5978094f1 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Fri, 5 Sep 2014 01:13:52 +0100 Subject: [PATCH 14/25] add conditional include for the platform --- cpp_layer/ql_settings.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/cpp_layer/ql_settings.cpp b/cpp_layer/ql_settings.cpp index dacfcd007..29f8f7188 100644 --- a/cpp_layer/ql_settings.cpp +++ b/cpp_layer/ql_settings.cpp @@ -1,8 +1,14 @@ #include -// FIXME: add a conditional include for Windows arch, otherwise use -// ql/settings.hpp +#idef WIN32 +// using a custom settings.hpp that exposes the Setting class with dllimport +// This is required to make sure the Singleton is properly shared between the +// Cython pyd's. #include +#else +#include +#endif + using namespace QuantLib; From 8f9a0be66fe2387e937b9eb66acc84d80d0c9ada Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Fri, 5 Sep 2014 02:28:55 +0200 Subject: [PATCH 15/25] fix setup.py: QL_LIBRARY was defined only for windows --- setup.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 3748c749f..ef6e86cfb 100644 --- a/setup.py +++ b/setup.py @@ -19,6 +19,8 @@ SUPPORT_CODE_INCLUDE = './cpp_layer' +QL_LIBRARY = 'QuantLib' + # FIXME: would be good to be able to customize the path with environment # variables in place of hardcoded paths ... if sys.platform == 'darwin': @@ -44,7 +46,6 @@ '.', r'.\dll', ] - QL_LIBRARY = 'QuantLib' elif sys.platform == 'linux2': # good for Debian / ubuntu 10.04 (with QL .99 installed by default) INCLUDE_DIRS = ['/usr/local/include', '/usr/include', '.', SUPPORT_CODE_INCLUDE] From b64219b6a8af1ac7685ee25d19a1575b3d5306dd Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Fri, 5 Sep 2014 02:36:30 +0200 Subject: [PATCH 16/25] stupid fix to an ifdef and added boost include path --- cpp_layer/ql_settings.cpp | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cpp_layer/ql_settings.cpp b/cpp_layer/ql_settings.cpp index 29f8f7188..cbce89f9e 100644 --- a/cpp_layer/ql_settings.cpp +++ b/cpp_layer/ql_settings.cpp @@ -1,6 +1,6 @@ #include -#idef WIN32 +#ifdef WIN32 // using a custom settings.hpp that exposes the Setting class with dllimport // This is required to make sure the Singleton is properly shared between the // Cython pyd's. diff --git a/setup.py b/setup.py index ef6e86cfb..29bc16f51 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ # FIXME: would be good to be able to customize the path with environment # variables in place of hardcoded paths ... if sys.platform == 'darwin': - INCLUDE_DIRS = ['/usr/local/include', '.', SUPPORT_CODE_INCLUDE] + INCLUDE_DIRS = ['/usr/local/include', '.', '../sources/boost_1_55_0', SUPPORT_CODE_INCLUDE] LIBRARY_DIRS = ["/usr/local/lib"] ## From SO: hack to remove warning about strict prototypes From 6be7941a66fe791bf887644bb051db8900355b0e Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Fri, 5 Sep 2014 02:29:51 +0100 Subject: [PATCH 17/25] add info about copying the dll on the path --- docs/source/getting_started.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/source/getting_started.rst b/docs/source/getting_started.rst index 0410c5462..ed8690a20 100644 --- a/docs/source/getting_started.rst +++ b/docs/source/getting_started.rst @@ -158,6 +158,9 @@ Prerequisites: symbol.def in your clone of the PyQL repo Apply the changes and build the project + + g. Copy the QuantLib.dll to a directory which is on the PATH (or just the + PyQL directory if you're in development mode) 2. Install Cython. While you can install Cython from source, we strongly recommend to install Cython via the Canopy Package Manager, another Python From 86ef5eb98950b726dd194807f3647ba35d83fc88 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Thu, 11 Sep 2014 09:26:09 +0100 Subject: [PATCH 18/25] helper script for def file generation based on .obj --- scripts/generate_symbols.py | 50 +++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 scripts/generate_symbols.py diff --git a/scripts/generate_symbols.py b/scripts/generate_symbols.py new file mode 100644 index 000000000..692432924 --- /dev/null +++ b/scripts/generate_symbols.py @@ -0,0 +1,50 @@ +""" Symbol management to generate .def file. """ +import glob +import os +from subprocess import check_output + +def get_symbol_from_obj_file(object_file): + + command = ['nm', '-g', '--defined-only', object_file] + + result = check_output(command, shell=False) + + for line in result.split('\n'): + idx = line.find('?') + stat = line[idx-2:idx].strip() + if stat == 'w': + print 'Skipping ', line + continue + mangled_symbol = line[idx:].strip() + if len(mangled_symbol) > 0: + if 'QuantLib' in mangled_symbol and 'AVError' not in mangled_symbol: + yield mangled_symbol + elif '?assertion_failed@boost' in mangled_symbol: + yield mangled_symbol + +def process_directory(directory_name): + for object_file in glob.glob(os.path.join(directory_name, '*.obj')): + for symbol in get_symbol_from_obj_file(object_file): + yield symbol + +HEADER = """LIBRARY "QuantLib" +EXPORTS +""" + +def test(): + test_directory = r"C:\dev\QuantLib-1.4\build\vc90\Win32\Release" + test_file = os.path.join(test_directory, "zigguratrng.obj") + output_file = r'C:\dev\pyql\symbols_win32.def' + + for obj in get_symbol_from_obj_file(test_file): + print obj + + with open(output_file, 'w') as fh: + fh.write(HEADER) + for symbol in process_directory(test_directory): + fh.write(' {}\n'.format(symbol)) + + +if __name__ == '__main__': + test() + \ No newline at end of file From 469a25e3dfb0364d153b2926989dc35092ea7cb3 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Fri, 12 Sep 2014 00:00:11 +0100 Subject: [PATCH 19/25] adding some pragam to ignore warnings on the local settings.hpp --- cpp_layer/settings.hpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cpp_layer/settings.hpp b/cpp_layer/settings.hpp index e6eb2fe3e..1bf44fefe 100644 --- a/cpp_layer/settings.hpp +++ b/cpp_layer/settings.hpp @@ -1,4 +1,6 @@ // !! Patched version of ql/settings.hpp doing a dllimport on Settings + #pragma warning(disable:4251) + #pragma warning(disable:4275) /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* From e8d33c0687e820543f4291817664a6de4a2f46f6 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Fri, 12 Sep 2014 00:00:39 +0100 Subject: [PATCH 20/25] added some explanations on the skipped symbols --- scripts/generate_symbols.py | 76 +++++++++++++++++++++++++++---------- 1 file changed, 56 insertions(+), 20 deletions(-) diff --git a/scripts/generate_symbols.py b/scripts/generate_symbols.py index 692432924..d6b53bbc9 100644 --- a/scripts/generate_symbols.py +++ b/scripts/generate_symbols.py @@ -1,30 +1,60 @@ """ Symbol management to generate .def file. """ import glob import os -from subprocess import check_output +import subprocess -def get_symbol_from_obj_file(object_file): +def symbol_generator_from_obj_file(object_file): - command = ['nm', '-g', '--defined-only', object_file] + command = ['nm', '--extern-only', '--defined-only', object_file] - result = check_output(command, shell=False) + # don't show a window when executing the subprocess + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW - for line in result.split('\n'): + nm_result = subprocess.check_output(command, startupinfo=startupinfo) + + def _is_ql_symbols(symb): + # Includes all the symbols containing QuantLib except the ones with + # AVError and all the scalar deleting destructor (prefixed with _G) + # and all the vector deleting destructor (prefixed with a _E) + # and ?AVError (not yet sure what cause the problem : + # (Error 1 error LNK2001: unresolved external symbol + # "??_R0?AVError@QuantLib@@@8??0Error@QuantLib@@QAE@ABV01@@Z20" + # (??_R0?AVError@QuantLib@@@8??0Error@QuantLib@@QAE@ABV01@@Z20) + # QuantLib.exp QuantLib + # ) + # See http://en.wikipedia.org/wiki/Visual_C%2B%2B_name_mangling for + # reference + return ( + 'QuantLib' in symb and + '?AVError' not in symb and + '??_G' not in symb and + '??_E' not in symb + ) + + def _is_boost_assertion(symb): + return '?assertion_failed@boost' in mangled_symbol + + for line in nm_result.split('\n'): + # Example line: + # 0000000000000000 R ?value@?$integral_constant@_N$00@tr1@std@@2_NB + # Find the symbol location in the line idx = line.find('?') + + # Get the symbol type stat = line[idx-2:idx].strip() - if stat == 'w': - print 'Skipping ', line + if stat == 'w': # skip weak symbols continue + mangled_symbol = line[idx:].strip() + if len(mangled_symbol) > 0: - if 'QuantLib' in mangled_symbol and 'AVError' not in mangled_symbol: - yield mangled_symbol - elif '?assertion_failed@boost' in mangled_symbol: + if _is_ql_symbols(mangled_symbol) or _is_boost_assertion(mangled_symbol): yield mangled_symbol def process_directory(directory_name): for object_file in glob.glob(os.path.join(directory_name, '*.obj')): - for symbol in get_symbol_from_obj_file(object_file): + for symbol in symbol_generator_from_obj_file(object_file): yield symbol HEADER = """LIBRARY "QuantLib" @@ -32,19 +62,25 @@ def process_directory(directory_name): """ def test(): - test_directory = r"C:\dev\QuantLib-1.4\build\vc90\Win32\Release" - test_file = os.path.join(test_directory, "zigguratrng.obj") - output_file = r'C:\dev\pyql\symbols_win32.def' + test_directory = r"C:\dev\QuantLib-1.4\build\vc90\x64\Release" + test_file = os.path.join(test_directory, "zeroyieldstructure.obj") + + for obj in symbol_generator_from_obj_file(test_file): + pass - for obj in get_symbol_from_obj_file(test_file): - print obj +def generate_deffile_from_dir(input_directory, output_file): with open(output_file, 'w') as fh: fh.write(HEADER) - for symbol in process_directory(test_directory): + for symbol in process_directory(input_directory): fh.write(' {}\n'.format(symbol)) - +def main(): + input_directory = r"C:\dev\QuantLib-1.4\build\vc90\Win32\Release" + output_file = r'C:\dev\pyql\symbols_win32.def' + + generate_deffile_from_dir(input_directory, output_file) + print '{} generated'.format(output_file) + if __name__ == '__main__': - test() - \ No newline at end of file + main() \ No newline at end of file From ecee16e84a11bf8c6d3d9a7dca036af547164581 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Fri, 12 Sep 2014 00:08:25 +0100 Subject: [PATCH 21/25] adding full instruction with .def file generation --- docs/source/getting_started.rst | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/docs/source/getting_started.rst b/docs/source/getting_started.rst index ed8690a20..e2ae88c7d 100644 --- a/docs/source/getting_started.rst +++ b/docs/source/getting_started.rst @@ -154,12 +154,30 @@ Prerequisites: - Change "General" -> "Configuration type" to "Dynamic Library (DLL)" - Apply + - Add the Boost include directory to "C/C++" -> "Additional Include Directories" + - Apply + + Do a first build to get all the object files generated + + g. Generate the def file: + + In your PyQL clone, got the scripts directory, and edit the main function. + Set `input_directory` to the Release directory where your object files are + and change the `output_file` if appropriate (symbol_win32.def is the + default) ! The def file is platform specific (you can't reuse a 32bit def + file for a 64bit linker). + + This will generate a def file of about 44 Mb with all the needed symbols for + PyQL compilation. + + h. Build the dll with the new def file + - Change "Linker" -> "Input" -> "Module definition file" to point to - symbol.def in your clone of the PyQL repo + def file you just generated. Apply the changes and build the project - g. Copy the QuantLib.dll to a directory which is on the PATH (or just the + i. Copy the QuantLib.dll to a directory which is on the PATH (or just the PyQL directory if you're in development mode) 2. Install Cython. While you can install Cython from source, we strongly From 6a77e600e77d0885d8aa99c4f3ca3850a85680df Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Fri, 12 Sep 2014 00:13:17 +0100 Subject: [PATCH 22/25] adding reference to the getting started --- README.md | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 68c104832..b104ff272 100644 --- a/README.md +++ b/README.md @@ -19,13 +19,5 @@ Prerequisites Building the library -------------------- -The build and test suite can be run as follows:: - - make clean - make build - make tests - -To build the library on Mac OS X 10.9, the QuantLib library must be linked -against libstdc++. To do so, set the environment variables `CXXFLAGS` and -`LDFLAGS` to `-stlib=libstdc++ -mmacosx-version-min=10.6` before building -from source. +See the getting_started.rst documentation in docs/source for the +full details! \ No newline at end of file From 32702f1ce902bb32639fda04e8170cb46cd06632 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Fri, 12 Sep 2014 00:13:34 +0100 Subject: [PATCH 23/25] ignoring .def files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 8c3cf834f..6515d0aec 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ build/* docs/build quantlib.egg-info/* QuantLib.dll +symbol_win*.def *.cpp *.so *.h From a4f5e8409c12fda3a70662a8480c2b64dccd3202 Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Fri, 12 Sep 2014 00:18:04 +0100 Subject: [PATCH 24/25] removed manually created def file --- symbols.def | 262 ---------------------------------------------------- 1 file changed, 262 deletions(-) delete mode 100644 symbols.def diff --git a/symbols.def b/symbols.def deleted file mode 100644 index 687ec0e44..000000000 --- a/symbols.def +++ /dev/null @@ -1,262 +0,0 @@ -LIBRARY "QuantLib" -EXPORTS - ??0TARGET@QuantLib@@QAE@XZ - ?advance@Calendar@QuantLib@@QBE?AVDate@2@ABV32@HW4TimeUnit@2@W4BusinessDayConvention@2@_N@Z - ??0Schedule@QuantLib@@QAE@VDate@1@ABV21@ABVPeriod@1@ABVCalendar@1@W4BusinessDayConvention@1@4W4Rule@DateGeneration@1@_N11@Z - ?implementation@ActualActual@QuantLib@@CA?AV?$shared_ptr@VImpl@DayCounter@QuantLib@@@boost@@W4Convention@12@@Z - ?endOfMonth@Date@QuantLib@@SA?AV12@ABV12@@Z - ?settlementDate@Bond@QuantLib@@QBE?AVDate@2@V32@@Z - ??0ZeroCouponBond@QuantLib@@QAE@IABVCalendar@1@NABVDate@1@W4BusinessDayConvention@1@N1@Z - ?dirtyPrice@Bond@QuantLib@@QBENXZ - ?maturityDate@Bond@QuantLib@@QBE?AVDate@2@XZ - ?cleanPrice@Bond@QuantLib@@QBENXZ - ?holidayList@Calendar@QuantLib@@SA?AV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@std@@ABV12@ABVDate@2@1_N@Z - ?advance@Calendar@QuantLib@@QBE?AVDate@2@ABV32@ABVPeriod@2@W4BusinessDayConvention@2@_N@Z - ?removeHoliday@Calendar@QuantLib@@QAEXABVDate@2@@Z - ?addHoliday@Calendar@QuantLib@@QAEXABVDate@2@@Z - ?businessDaysBetween@Calendar@QuantLib@@QBEJABVDate@2@0_N1@Z - ?adjust@Calendar@QuantLib@@QBE?AVDate@2@ABV32@W4BusinessDayConvention@2@@Z - ?yearFraction@Impl@Business252@QuantLib@@UBENABVDate@3@000@Z - ?dayCount@Impl@Business252@QuantLib@@UBEJABVDate@3@0@Z - ?yearFraction@Impl@SimpleDayCounter@QuantLib@@UBENABVDate@3@000@Z - ?name@Impl@Business252@QuantLib@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ - ?dayCount@Impl@SimpleDayCounter@QuantLib@@UBEJABVDate@3@0@Z - ?previousDate@Schedule@QuantLib@@QBE?AVDate@2@ABV32@@Z - ?nextDate@Schedule@QuantLib@@QBE?AVDate@2@ABV32@@Z - ??0SimpleCashFlow@QuantLib@@QAE@NABVDate@1@@Z - ??0JointCalendar@QuantLib@@QAE@ABVCalendar@1@0W4JointCalendarRule@1@@Z - ??0UnitedKingdom@QuantLib@@QAE@W4Market@01@@Z - ??0UnitedStates@QuantLib@@QAE@W4Market@01@@Z - ??0Germany@QuantLib@@QAE@W4Market@01@@Z - ?implementation@Thirty360@QuantLib@@CA?AV?$shared_ptr@VImpl@DayCounter@QuantLib@@@boost@@W4Convention@12@@Z - ??0DiscountingBondEngine@QuantLib@@QAE@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@V?$optional@_N@boost@@@Z - ??0InterestRate@QuantLib@@QAE@XZ - ?zeroRate@YieldTermStructure@QuantLib@@QBE?AVInterestRate@2@ABVDate@2@ABVDayCounter@2@W4Compounding@2@W4Frequency@2@_N@Z - ??0InterestRate@QuantLib@@QAE@NABVDayCounter@1@W4Compounding@1@W4Frequency@1@@Z - ?discount@YieldTermStructure@QuantLib@@QBENN_N@Z - ??0FlatForward@QuantLib@@QAE@ABVDate@1@ABV?$Handle@VQuote@QuantLib@@@1@ABVDayCounter@1@W4Compounding@1@W4Frequency@1@@Z - ??0FlatForward@QuantLib@@QAE@ABVDate@1@NABVDayCounter@1@W4Compounding@1@W4Frequency@1@@Z - ??0FlatForward@QuantLib@@QAE@IABVCalendar@1@ABV?$Handle@VQuote@QuantLib@@@1@ABVDayCounter@1@W4Compounding@1@W4Frequency@1@@Z - ??0FlatForward@QuantLib@@QAE@IABVCalendar@1@NABVDayCounter@1@W4Compounding@1@W4Frequency@1@@Z - ??0FuturesRateHelper@QuantLib@@QAE@ABV?$Handle@VQuote@QuantLib@@@1@ABVDate@1@IABVCalendar@1@W4BusinessDayConvention@1@_NABVDayCounter@1@0@Z - ??0FraRateHelper@QuantLib@@QAE@ABV?$Handle@VQuote@QuantLib@@@1@IIIABVCalendar@1@W4BusinessDayConvention@1@_NABVDayCounter@1@@Z - ??0SwapRateHelper@QuantLib@@QAE@NABV?$shared_ptr@VSwapIndex@QuantLib@@@boost@@ABV?$Handle@VQuote@QuantLib@@@1@ABVPeriod@1@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@@Z - ??0SwapRateHelper@QuantLib@@QAE@NABVPeriod@1@ABVCalendar@1@W4Frequency@1@W4BusinessDayConvention@1@ABVDayCounter@1@ABV?$shared_ptr@VIborIndex@QuantLib@@@boost@@ABV?$Handle@VQuote@QuantLib@@@1@0ABV?$Handle@VYieldTermStructure@QuantLib@@@1@@Z - ??0DepositRateHelper@QuantLib@@QAE@NABV?$shared_ptr@VIborIndex@QuantLib@@@boost@@@Z - ??0DepositRateHelper@QuantLib@@QAE@NABVPeriod@1@IABVCalendar@1@W4BusinessDayConvention@1@_NABVDayCounter@1@@Z - ??0SwapIndex@QuantLib@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABVPeriod@1@IVCurrency@1@ABVCalendar@1@1W4BusinessDayConvention@1@ABVDayCounter@1@ABV?$shared_ptr@VIborIndex@QuantLib@@@boost@@@Z - ??0Libor@QuantLib@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABVPeriod@1@IABVCurrency@1@ABVCalendar@1@ABVDayCounter@1@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@@Z - ??0ZeroYieldStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@ABVDayCounter@1@ABV?$vector@V?$Handle@VQuote@QuantLib@@@QuantLib@@V?$allocator@V?$Handle@VQuote@QuantLib@@@QuantLib@@@std@@@std@@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@6@@Z - ?setJumps@YieldTermStructure@QuantLib@@AAEXXZ - ?update@TermStructure@QuantLib@@UAEXXZ - ?referenceDate@TermStructure@QuantLib@@UBEABVDate@2@XZ - ??0DividendVanillaOption@QuantLib@@QAE@ABV?$shared_ptr@VStrikedTypePayoff@QuantLib@@@boost@@ABV?$shared_ptr@VExercise@QuantLib@@@3@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@std@@ABV?$vector@NV?$allocator@N@std@@@6@@Z - ??0EuropeanOption@QuantLib@@QAE@ABV?$shared_ptr@VStrikedTypePayoff@QuantLib@@@boost@@ABV?$shared_ptr@VExercise@QuantLib@@@3@@Z - ??0VanillaOption@QuantLib@@QAE@ABV?$shared_ptr@VStrikedTypePayoff@QuantLib@@@boost@@ABV?$shared_ptr@VExercise@QuantLib@@@3@@Z - ??0AmericanExercise@QuantLib@@QAE@ABVDate@1@0_N@Z - ??0AmericanExercise@QuantLib@@QAE@ABVDate@1@_N@Z - ??0EuropeanExercise@QuantLib@@QAE@ABVDate@1@@Z - ?impliedVolatility@DividendVanillaOption@QuantLib@@QBENNABV?$shared_ptr@VGeneralizedBlackScholesProcess@QuantLib@@@boost@@NINN@Z - ?impliedVolatility@VanillaOption@QuantLib@@QBENNABV?$shared_ptr@VGeneralizedBlackScholesProcess@QuantLib@@@boost@@NINN@Z - ?itmCashProbability@OneAssetOption@QuantLib@@QBENXZ - ?strikeSensitivity@OneAssetOption@QuantLib@@QBENXZ - ?dividendRho@OneAssetOption@QuantLib@@QBENXZ - ?rho@OneAssetOption@QuantLib@@QBENXZ - ?vega@OneAssetOption@QuantLib@@QBENXZ - ?thetaPerDay@OneAssetOption@QuantLib@@QBENXZ - ?theta@OneAssetOption@QuantLib@@QBENXZ - ?gamma@OneAssetOption@QuantLib@@QBENXZ - ?elasticity@OneAssetOption@QuantLib@@QBENXZ - ?deltaForward@OneAssetOption@QuantLib@@QBENXZ - ?delta@OneAssetOption@QuantLib@@QBENXZ - ?accept@PlainVanillaPayoff@QuantLib@@UAEXAAVAcyclicVisitor@2@@Z - ?description@StrikedTypePayoff@QuantLib@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ - ?description@TypePayoff@QuantLib@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ - ??RPlainVanillaPayoff@QuantLib@@UBENN@Z - ??0BlackScholesMertonProcess@QuantLib@@QAE@ABV?$Handle@VQuote@QuantLib@@@1@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@1ABV?$Handle@VBlackVolTermStructure@QuantLib@@@1@ABV?$shared_ptr@Vdiscretization@StochasticProcess1D@QuantLib@@@boost@@@Z - ??0BlackScholesProcess@QuantLib@@QAE@ABV?$Handle@VQuote@QuantLib@@@1@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@ABV?$Handle@VBlackVolTermStructure@QuantLib@@@1@ABV?$shared_ptr@Vdiscretization@StochasticProcess1D@QuantLib@@@boost@@@Z - ?covariance@EulerDiscretization@QuantLib@@UBE?AV?$Disposable@VMatrix@QuantLib@@@2@ABVStochasticProcess@2@NABVArray@2@N@Z - ?diffusion@EulerDiscretization@QuantLib@@UBE?AV?$Disposable@VMatrix@QuantLib@@@2@ABVStochasticProcess@2@NABVArray@2@N@Z - ?diffusion@EulerDiscretization@QuantLib@@UBENABVStochasticProcess1D@2@NNN@Z - ?drift@EulerDiscretization@QuantLib@@UBE?AV?$Disposable@VArray@QuantLib@@@2@ABVStochasticProcess@2@NABVArray@2@N@Z - ?drift@EulerDiscretization@QuantLib@@UBENABVStochasticProcess1D@2@NNN@Z - ?variance@EulerDiscretization@QuantLib@@UBENABVStochasticProcess1D@2@NNN@Z - ??0BlackVolatilityTermStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@W4BusinessDayConvention@1@ABVDayCounter@1@@Z - ?blackVolatility@GeneralizedBlackScholesProcess@QuantLib@@QBEABV?$Handle@VBlackVolTermStructure@QuantLib@@@2@XZ - ??0AnalyticDividendEuropeanEngine@QuantLib@@QAE@ABV?$shared_ptr@VGeneralizedBlackScholesProcess@QuantLib@@@boost@@@Z - ??0AnalyticEuropeanEngine@QuantLib@@QAE@ABV?$shared_ptr@VGeneralizedBlackScholesProcess@QuantLib@@@boost@@@Z - ??0AnalyticHestonEngine@QuantLib@@QAE@ABV?$shared_ptr@VHestonModel@QuantLib@@@boost@@I@Z - ??0BaroneAdesiWhaleyApproximationEngine@QuantLib@@QAE@ABV?$shared_ptr@VGeneralizedBlackScholesProcess@QuantLib@@@boost@@@Z - ??0BatesDetJumpEngine@QuantLib@@QAE@ABV?$shared_ptr@VBatesDetJumpModel@QuantLib@@@boost@@I@Z - ??0BatesDoubleExpDetJumpEngine@QuantLib@@QAE@ABV?$shared_ptr@VBatesDoubleExpDetJumpModel@QuantLib@@@boost@@I@Z - ??0BatesDoubleExpEngine@QuantLib@@QAE@ABV?$shared_ptr@VBatesDoubleExpModel@QuantLib@@@boost@@I@Z - ??0BatesEngine@QuantLib@@QAE@ABV?$shared_ptr@VBatesModel@QuantLib@@@boost@@I@Z - ??0BlackCalculator@QuantLib@@QAE@ABV?$shared_ptr@VStrikedTypePayoff@QuantLib@@@boost@@NNN@Z - ?applyTo@TridiagonalOperator@QuantLib@@QBE?AV?$Disposable@VArray@QuantLib@@@2@ABVArray@2@@Z - ?checkRange@TermStructure@QuantLib@@IBEXABVDate@2@_N@Z - ?checkStrike@VolatilityTermStructure@QuantLib@@IBEXN_N@Z - ?delta@BlackCalculator@QuantLib@@UBENN@Z - ?discount@YieldTermStructure@QuantLib@@QBENN_N@Z - ?dividendYield@GeneralizedBlackScholesProcess@QuantLib@@QBEABV?$Handle@VYieldTermStructure@QuantLib@@@2@XZ - ?elasticity@BlackCalculator@QuantLib@@UBENN@Z - ?ensureStrikeInGrid@FDVanillaEngine@QuantLib@@IBEXXZ - ?firstDerivativeAtCenter@SampledCurve@QuantLib@@QBENXZ - ?gamma@BlackCalculator@QuantLib@@UBENN@Z - ?getResidualTime@FDVanillaEngine@QuantLib@@MBENXZ - ?identity@TridiagonalOperator@QuantLib@@SA?AV?$Disposable@VTridiagonalOperator@QuantLib@@@2@I@Z - ?initializeBoundaryConditions@FDVanillaEngine@QuantLib@@MBEXXZ - ?initializeInitialCondition@FDVanillaEngine@QuantLib@@MBEXXZ - ?initializeOperator@FDVanillaEngine@QuantLib@@MBEXXZ - ?riskFreeRate@GeneralizedBlackScholesProcess@QuantLib@@QBEABV?$Handle@VYieldTermStructure@QuantLib@@@2@XZ - ?secondDerivativeAtCenter@SampledCurve@QuantLib@@QBENXZ - ?setGridLimits@FDVanillaEngine@QuantLib@@MBEXNN@Z - ?setGridLimits@FDVanillaEngine@QuantLib@@MBEXXZ - ?setupArguments@FDVanillaEngine@QuantLib@@MBEXPBVarguments@PricingEngine@2@@Z - ?solveFor@TridiagonalOperator@QuantLib@@QBEXABVArray@2@AAV32@@Z - ?stateVariable@GeneralizedBlackScholesProcess@QuantLib@@QBEABV?$Handle@VQuote@QuantLib@@@2@XZ - ?theta@BlackCalculator@QuantLib@@UBENNN@Z - ?validate@arguments@DividendVanillaOption@QuantLib@@UBEXXZ - ?value@BlackCalculator@QuantLib@@QBENXZ - ?valueAtCenter@SampledCurve@QuantLib@@QBENXZ - ??0TridiagonalOperator@QuantLib@@QAE@ABV?$Disposable@VTridiagonalOperator@QuantLib@@@1@@Z - ??0TridiagonalOperator@QuantLib@@QAE@ABVArray@1@00@Z - ??0TridiagonalOperator@QuantLib@@QAE@I@Z - ??0Constraint@QuantLib@@QAE@ABV?$shared_ptr@VImpl@Constraint@QuantLib@@@boost@@@Z - ??0HestonModel@QuantLib@@QAE@ABV?$shared_ptr@VHestonProcess@QuantLib@@@boost@@@Z - ??0HestonModelHelper@QuantLib@@QAE@ABVPeriod@1@ABVCalendar@1@NNABV?$Handle@VQuote@QuantLib@@@1@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@3W4CalibrationErrorType@CalibrationHelper@1@@Z - ?impliedVolatility@CalibrationHelper@QuantLib@@QBENNNINN@Z - ??0BatesDetJumpModel@QuantLib@@QAE@ABV?$shared_ptr@VBatesProcess@QuantLib@@@boost@@NN@Z - ??0BatesDoubleExpDetJumpModel@QuantLib@@QAE@ABV?$shared_ptr@VHestonProcess@QuantLib@@@boost@@NNNNNN@Z - ??0BatesDoubleExpModel@QuantLib@@QAE@ABV?$shared_ptr@VHestonProcess@QuantLib@@@boost@@NNNN@Z - ??0BatesModel@QuantLib@@QAE@ABV?$shared_ptr@VBatesProcess@QuantLib@@@boost@@@Z - ??0EndCriteria@QuantLib@@QAE@IINNN@Z - ??0LevenbergMarquardt@QuantLib@@QAE@NNN@Z - ?s0@HestonProcess@QuantLib@@QBEABV?$Handle@VQuote@QuantLib@@@2@XZ - ??0HestonProcess@QuantLib@@QAE@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@0ABV?$Handle@VQuote@QuantLib@@@1@NNNNNW4Discretization@01@@Z - ??0BatesProcess@QuantLib@@QAE@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@0ABV?$Handle@VQuote@QuantLib@@@1@NNNNNNNNW4Discretization@HestonProcess@1@@Z - ?delta@BatesProcess@QuantLib@@QBENXZ - ?nu@BatesProcess@QuantLib@@QBENXZ - ?lambda@BatesProcess@QuantLib@@QBENXZ - ??0Data@Currency@QuantLib@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0H00HABVRounding@2@0ABV12@@Z - ?survivalProbability@DefaultProbabilityTermStructure@QuantLib@@QBENN_N@Z - ??0SpreadCdsHelper@QuantLib@@QAE@NABVPeriod@1@HABVCalendar@1@W4Frequency@1@W4BusinessDayConvention@1@W4Rule@DateGeneration@1@ABVDayCounter@1@NABV?$Handle@VYieldTermStructure@QuantLib@@@1@_N7@Z - ?clone@IborIndex@QuantLib@@UBE?AV?$shared_ptr@VIborIndex@QuantLib@@@boost@@ABV?$Handle@VYieldTermStructure@QuantLib@@@2@@Z - ?forecastFixing@IborIndex@QuantLib@@UBENABVDate@2@@Z - ??0Euribor@QuantLib@@QAE@ABVPeriod@1@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@@Z - ?fixing@InterestRateIndex@QuantLib@@UBENABVDate@2@_N@Z - ?addFixing@Index@QuantLib@@UAEXABVDate@2@N_N@Z - ?maturityDate@IborIndex@QuantLib@@UBE?AVDate@2@ABV32@@Z - ?couponLegNPV@CreditDefaultSwap@QuantLib@@QBENXZ - ?defaultLegNPV@CreditDefaultSwap@QuantLib@@QBENXZ - ?fairSpread@CreditDefaultSwap@QuantLib@@QBENXZ - ?fairUpfront@CreditDefaultSwap@QuantLib@@QBENXZ - ??0CreditDefaultSwap@QuantLib@@QAE@W4Side@Protection@1@NNABVSchedule@1@W4BusinessDayConvention@1@ABVDayCounter@1@_N4ABVDate@1@ABV?$shared_ptr@VClaim@QuantLib@@@boost@@@Z - ??0Date@QuantLib@@QAE@XZ - ?assertion_failed@boost@@YAXPBD00J@Z - ??0ZARCurrency@QuantLib@@QAE@XZ - ??0SGDCurrency@QuantLib@@QAE@XZ - ??0SEKCurrency@QuantLib@@QAE@XZ - ??0PLNCurrency@QuantLib@@QAE@XZ - ??0NZDCurrency@QuantLib@@QAE@XZ - ??0NOKCurrency@QuantLib@@QAE@XZ - ??0HKDCurrency@QuantLib@@QAE@XZ - ??0INRCurrency@QuantLib@@QAE@XZ - ??0DKKCurrency@QuantLib@@QAE@XZ - ??0AUDCurrency@QuantLib@@QAE@XZ - ??0CHFCurrency@QuantLib@@QAE@XZ - ??0JPYCurrency@QuantLib@@QAE@XZ - ??0GBPCurrency@QuantLib@@QAE@XZ - ??0EURCurrency@QuantLib@@QAE@XZ - ??0USDCurrency@QuantLib@@QAE@XZ - ?what@Error@QuantLib@@UBEPBDXZ - ??0Error@QuantLib@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@J00@Z - ??6QuantLib@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV12@ABVDate@0@@Z - ?businessDayConvention@IborIndex@QuantLib@@QBE?AW4BusinessDayConvention@2@XZ - ??0FixedRateBond@QuantLib@@QAE@INABVSchedule@1@ABV?$vector@NV?$allocator@N@std@@@std@@ABVDayCounter@1@W4BusinessDayConvention@1@NABVDate@1@ABVCalendar@1@ABVPeriod@1@5W461@_N@Z - ?yield@Bond@QuantLib@@QBENNABVDayCounter@2@W4Compounding@2@W4Frequency@2@VDate@2@NI@Z - ??0VanillaSwap@QuantLib@@QAE@W4Type@01@NABVSchedule@1@NABVDayCounter@1@1ABV?$shared_ptr@VIborIndex@QuantLib@@@boost@@N2V?$optional@W4BusinessDayConvention@QuantLib@@@6@@Z - ?floatingLegNPV@VanillaSwap@QuantLib@@QBENXZ - ?fixedLegNPV@VanillaSwap@QuantLib@@QBENXZ - ?floatingLegBPS@VanillaSwap@QuantLib@@QBENXZ - ?fixedLegBPS@VanillaSwap@QuantLib@@QBENXZ - ?fairSpread@VanillaSwap@QuantLib@@QBENXZ - ?fairRate@VanillaSwap@QuantLib@@QBENXZ - ?maturityDate@Swap@QuantLib@@QBE?AVDate@2@XZ - ?startDate@Swap@QuantLib@@QBE?AVDate@2@XZ - ?blackFormulaImpliedStdDev@QuantLib@@YANW4Type@Option@1@NNNNNNNI@Z - ?blackFormula@QuantLib@@YANW4Type@Option@1@NNNNN@Z - ??0MidPointCdsEngine@QuantLib@@QAE@ABV?$Handle@VDefaultProbabilityTermStructure@QuantLib@@@1@NABV?$Handle@VYieldTermStructure@QuantLib@@@1@V?$optional@_N@boost@@@Z - ??0DiscountingSwapEngine@QuantLib@@QAE@ABV?$Handle@VYieldTermStructure@QuantLib@@@1@V?$optional@_N@boost@@VDate@1@2@Z - ?maxDate@Date@QuantLib@@SA?AV12@XZ - ??0FixedRateBondHelper@QuantLib@@QAE@ABV?$Handle@VQuote@QuantLib@@@1@INABVSchedule@1@ABV?$vector@NV?$allocator@N@std@@@std@@ABVDayCounter@1@W4BusinessDayConvention@1@NABVDate@1@@Z - ??0BondHelper@QuantLib@@QAE@ABV?$Handle@VQuote@QuantLib@@@1@ABV?$shared_ptr@VBond@QuantLib@@@boost@@@Z - ?forwardRate@YieldTermStructure@QuantLib@@QBE?AVInterestRate@2@ABVDate@2@0ABVDayCounter@2@W4Compounding@2@W4Frequency@2@_N@Z - ?update@YieldTermStructure@QuantLib@@UAEXXZ - ?isLeap@Date@QuantLib@@SA_NH@Z - ?month@Date@QuantLib@@QBE?AW4Month@2@XZ - ?year@Date@QuantLib@@QBEHXZ - ?monthLength@Date@QuantLib@@CAHW4Month@2@_N@Z - ??0Date@QuantLib@@QAE@HW4Month@1@H@Z - ??0Period@QuantLib@@QAE@W4Frequency@1@@Z - ??_0Period@QuantLib@@QAEAAV01@H@Z - ?minDate@Date@QuantLib@@SA?AV12@XZ - ?nthWeekday@Date@QuantLib@@SA?AV12@IW4Weekday@2@W4Month@2@H@Z - ?nextWeekday@Date@QuantLib@@SA?AV12@ABV12@W4Weekday@2@@Z - ?todaysDate@Date@QuantLib@@SA?AV12@XZ - ??ZDate@QuantLib@@QAEAAV01@ABVPeriod@1@@Z - ??ZDate@QuantLib@@QAEAAV01@J@Z - ??YDate@QuantLib@@QAEAAV01@ABVPeriod@1@@Z - ??YDate@QuantLib@@QAEAAV01@J@Z - ??ZPeriod@QuantLib@@QAEAAV01@ABV01@@Z - ??YPeriod@QuantLib@@QAEAAV01@ABV01@@Z - ??GQuantLib@@YA?AVPeriod@0@ABV10@0@Z - ?normalize@Period@QuantLib@@QAEXXZ - ?frequency@Period@QuantLib@@QBE?AW4Frequency@2@XZ - ?monthOffset@Date@QuantLib@@CAHW4Month@2@_N@Z - ?advance@Date@QuantLib@@CA?AV12@ABV12@HW4TimeUnit@2@@Z - ??0Date@QuantLib@@QAE@J@Z - ?yearOffset@Date@QuantLib@@CAJH@Z - ??MQuantLib@@YA_NABVPeriod@0@0@Z - ?nextCode@IMM@QuantLib@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV34@_NABVDate@2@@Z - ?nextCode@IMM@QuantLib@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABVDate@2@_N@Z - ?nextDate@IMM@QuantLib@@SA?AVDate@2@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_NABV32@@Z - ?nextDate@IMM@QuantLib@@SA?AVDate@2@ABV32@_N@Z - ?date@IMM@QuantLib@@SA?AVDate@2@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV32@@Z - ?code@IMM@QuantLib@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABVDate@2@@Z - ?isIMMdate@IMM@QuantLib@@SA_NABVDate@2@_N@Z - ?isIMMcode@IMM@QuantLib@@SA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z - ??0Japan@QuantLib@@QAE@XZ - ??0Switzerland@QuantLib@@QAE@XZ - ?make_sequence_generator@?$GenericPseudoRandom@VMersenneTwisterUniformRng@QuantLib@@VInverseCumulativeNormal@2@@QuantLib@@SA?AV?$InverseCumulativeRsg@V?$RandomSequenceGenerator@VMersenneTwisterUniformRng@QuantLib@@@QuantLib@@VInverseCumulativeNormal@2@@2@IK@Z - ??0Settings@QuantLib@@AAE@XZ - ??6QuantLib@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV12@W4BusinessDayConvention@0@@Z - ??6detail@QuantLib@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV23@ABUordinal_holder@01@@Z - ?checkRange@TermStructure@QuantLib@@IBEXN_N@Z - ??0SurvivalProbabilityStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@ABVDayCounter@1@ABV?$vector@V?$Handle@VQuote@QuantLib@@@QuantLib@@V?$allocator@V?$Handle@VQuote@QuantLib@@@QuantLib@@@std@@@std@@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@6@@Z - ??0DefaultDensityStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@ABVDayCounter@1@ABV?$vector@V?$Handle@VQuote@QuantLib@@@QuantLib@@V?$allocator@V?$Handle@VQuote@QuantLib@@@QuantLib@@@std@@@std@@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@6@@Z - ??0HazardRateStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@ABVDayCounter@1@ABV?$vector@V?$Handle@VQuote@QuantLib@@@QuantLib@@V?$allocator@V?$Handle@VQuote@QuantLib@@@QuantLib@@@std@@@std@@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@6@@Z - ??6detail@QuantLib@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@std@@AAV23@ABUordinal_holder@01@@Z - ?inverse@QuantLib@@YA?AV?$Disposable@VMatrix@QuantLib@@@1@ABVMatrix@1@@Z - ??0ForwardRateStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@ABVDayCounter@1@ABV?$vector@V?$Handle@VQuote@QuantLib@@@QuantLib@@V?$allocator@V?$Handle@VQuote@QuantLib@@@QuantLib@@@std@@@std@@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@6@@Z - ??0YieldTermStructure@QuantLib@@QAE@ABVDate@1@ABVCalendar@1@ABVDayCounter@1@ABV?$vector@V?$Handle@VQuote@QuantLib@@@QuantLib@@V?$allocator@V?$Handle@VQuote@QuantLib@@@QuantLib@@@std@@@std@@ABV?$vector@VDate@QuantLib@@V?$allocator@VDate@QuantLib@@@std@@@6@@Z - ?setJumps@DefaultProbabilityTermStructure@QuantLib@@AAEXXZ - ??0TimeGrid@QuantLib@@QAE@NI@Z - ??0MersenneTwisterUniformRng@QuantLib@@QAE@K@Z - ?riskFreeRate@HestonProcess@QuantLib@@QBEABV?$Handle@VYieldTermStructure@QuantLib@@@2@XZ - ?mean@GeneralStatistics@QuantLib@@QBENXZ - ?variance@GeneralStatistics@QuantLib@@QBENXZ - ?x_low_@InverseCumulativeNormal@QuantLib@@0NB - ?x_high_@InverseCumulativeNormal@QuantLib@@0NB - ?a1_@InverseCumulativeNormal@QuantLib@@0NB - ?a2_@InverseCumulativeNormal@QuantLib@@0NB - ?a3_@InverseCumulativeNormal@QuantLib@@0NB - ?a4_@InverseCumulativeNormal@QuantLib@@0NB - ?a5_@InverseCumulativeNormal@QuantLib@@0NB - ?a6_@InverseCumulativeNormal@QuantLib@@0NB - ?b1_@InverseCumulativeNormal@QuantLib@@0NB - ?b2_@InverseCumulativeNormal@QuantLib@@0NB - ?b3_@InverseCumulativeNormal@QuantLib@@0NB - ?b4_@InverseCumulativeNormal@QuantLib@@0NB - ?b5_@InverseCumulativeNormal@QuantLib@@0NB - ?tail_value@InverseCumulativeNormal@QuantLib@@CANN@Z - ?twist@MersenneTwisterUniformRng@QuantLib@@ABEXXZ \ No newline at end of file From aa05013dedd3fe4df8e3aad626fc71bdb553feae Mon Sep 17 00:00:00 2001 From: Didrik Pinte Date: Fri, 12 Sep 2014 00:40:05 +0100 Subject: [PATCH 25/25] added changelog entry --- CHANGES.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGES.txt b/CHANGES.txt index 4f856612d..39cf019df 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,6 +1,12 @@ PyQL CHANGELOG ============== +Pre 0.2 +------- + +Builds are finally usable on Windows 32 and 64 bit (two tests are failing due +to numerical issues but the Singleton problem is fixed) + Release 0.1 -----------