diff --git a/ql/cashflows/cpicouponpricer.cpp b/ql/cashflows/cpicouponpricer.cpp index 6b2c09c42f4..55662c06851 100644 --- a/ql/cashflows/cpicouponpricer.cpp +++ b/ql/cashflows/cpicouponpricer.cpp @@ -122,12 +122,15 @@ namespace QuantLib { gearing_ = coupon_->fixedRate(); spread_ = coupon_->spread(); paymentDate_ = coupon_->date(); + + QL_DEPRECATED_DISABLE_WARNING rateCurve_ = !nominalTermStructure_.empty() ? nominalTermStructure_ : ext::dynamic_pointer_cast(coupon.index()) ->zeroInflationTermStructure() ->nominalTermStructure(); + QL_DEPRECATED_ENABLE_WARNING // past or future fixing is managed in YoYInflationIndex::fixing() // use yield curve from index (which sets discount) diff --git a/ql/cashflows/inflationcouponpricer.cpp b/ql/cashflows/inflationcouponpricer.cpp index 52d3b12aa8f..59f45a783cc 100644 --- a/ql/cashflows/inflationcouponpricer.cpp +++ b/ql/cashflows/inflationcouponpricer.cpp @@ -138,12 +138,15 @@ namespace QuantLib { gearing_ = coupon_->gearing(); spread_ = coupon_->spread(); paymentDate_ = coupon_->date(); + + QL_DEPRECATED_DISABLE_WARNING rateCurve_ = !nominalTermStructure_.empty() ? nominalTermStructure_ : ext::dynamic_pointer_cast(coupon.index()) ->yoyInflationTermStructure() ->nominalTermStructure(); + QL_DEPRECATED_ENABLE_WARNING // past or future fixing is managed in YoYInflationIndex::fixing() // use yield curve from index (which sets discount) diff --git a/ql/instruments/makeyoyinflationcapfloor.cpp b/ql/instruments/makeyoyinflationcapfloor.cpp index 067a14dd397..78385046274 100644 --- a/ql/instruments/makeyoyinflationcapfloor.cpp +++ b/ql/instruments/makeyoyinflationcapfloor.cpp @@ -83,7 +83,9 @@ namespace QuantLib { QL_REQUIRE(!index_->yoyInflationTermStructure().empty(), "no forecasting yoy term structure set for " << index_->name()); + QL_DEPRECATED_DISABLE_WARNING fc = index_->yoyInflationTermStructure()->nominalTermStructure(); + QL_DEPRECATED_ENABLE_WARNING } strikeVector[0] = CashFlows::atmRate(leg,**fc, false, fc->referenceDate()); diff --git a/ql/pricingengines/inflation/inflationcapfloorengines.cpp b/ql/pricingengines/inflation/inflationcapfloorengines.cpp index f5253f1cfa6..81733b8875c 100644 --- a/ql/pricingengines/inflation/inflationcapfloorengines.cpp +++ b/ql/pricingengines/inflation/inflationcapfloorengines.cpp @@ -61,10 +61,14 @@ namespace QuantLib { Handle yoyTS = index()->yoyInflationTermStructure(); + + QL_DEPRECATED_DISABLE_WARNING Handle nominalTS = !nominalTermStructure_.empty() ? nominalTermStructure_ : yoyTS->nominalTermStructure(); + QL_DEPRECATED_ENABLE_WARNING + Date settlement = nominalTS->referenceDate(); for (Size i=0; i new_zii = zii_->clone(zits); + QL_DEPRECATED_DISABLE_WARNING Handle nominalTS = !nominalTermStructure_.empty() ? nominalTermStructure_ : z->nominalTermStructure(); + QL_DEPRECATED_ENABLE_WARNING Real nominal = 1000000.0; // has to be something but doesn't matter what Date start = nominalTS->referenceDate(); @@ -223,8 +225,11 @@ namespace QuantLib { // The instrument takes a standard discounting swap engine. // The inflation-related work is done by the coupons. + QL_DEPRECATED_DISABLE_WARNING Handle nominalTS = !nominalTermStructure_.empty() ? nominalTermStructure_ : y->nominalTermStructure(); + QL_DEPRECATED_ENABLE_WARNING + yyiis_->setPricingEngine( ext::shared_ptr(new DiscountingSwapEngine(nominalTS))); } diff --git a/ql/termstructures/inflationtermstructure.cpp b/ql/termstructures/inflationtermstructure.cpp index e68f446df42..1e983db5481 100644 --- a/ql/termstructures/inflationtermstructure.cpp +++ b/ql/termstructures/inflationtermstructure.cpp @@ -23,6 +23,8 @@ namespace QuantLib { + QL_DEPRECATED_DISABLE_WARNING + InflationTermStructure::InflationTermStructure( Rate baseRate, const Period& observationLag, @@ -68,6 +70,7 @@ namespace QuantLib { setSeasonality(seasonality); } + QL_DEPRECATED_ENABLE_WARNING void InflationTermStructure::setSeasonality( const ext::shared_ptr& seasonality) { diff --git a/ql/termstructures/inflationtermstructure.hpp b/ql/termstructures/inflationtermstructure.hpp index 428d19587bb..27ace42ea69 100644 --- a/ql/termstructures/inflationtermstructure.hpp +++ b/ql/termstructures/inflationtermstructure.hpp @@ -30,6 +30,8 @@ namespace QuantLib { class InflationIndex; + QL_DEPRECATED_DISABLE_WARNING + //! Interface for inflation term structures. /*! \ingroup inflationtermstructures */ class InflationTermStructure : public TermStructure { @@ -69,7 +71,6 @@ namespace QuantLib { virtual Frequency frequency() const; virtual bool indexIsInterpolated() const; virtual Rate baseRate() const; - virtual Handle nominalTermStructure() const; //! minimum (base) date /*! Important in inflation since it starts before nominal @@ -84,6 +85,14 @@ namespace QuantLib { virtual Date baseDate() const = 0; //@} + /*! \deprecated Don't use this method. Objects such as pricers + or bootstrap helpers that need a nominal curve + should be passed one explicitly. + Deprecated in version 1.24. + */ + QL_DEPRECATED + virtual Handle nominalTermStructure() const; + //! Functions to set and get seasonality. /*! Calling setSeasonality with no arguments means unsetting as the default is used to choose unsetting. @@ -114,9 +123,19 @@ namespace QuantLib { Frequency frequency_; bool indexIsInterpolated_; mutable Rate baseRate_; + /*! \deprecated Don't use this data member. If you're + inheriting from InflationTermStructure, don't + have your class take a nominal curve. Objects + such as pricers or bootstrap helpers that need + a nominal curve should be passed one + explicitly. + Deprecated in version 1.24. + */ + QL_DEPRECATED Handle nominalTermStructure_; }; + QL_DEPRECATED_ENABLE_WARNING //! Interface for zero inflation term structures. // Child classes use templates but do not want that exposed to @@ -271,10 +290,12 @@ namespace QuantLib { return baseRate_; } + QL_DEPRECATED_DISABLE_WARNING inline Handle InflationTermStructure::nominalTermStructure() const { return nominalTermStructure_; } + QL_DEPRECATED_ENABLE_WARNING inline ext::shared_ptr InflationTermStructure::seasonality() const { return seasonality_;