Skip to content

Commit

Permalink
More pointer checks
Browse files Browse the repository at this point in the history
  • Loading branch information
lballabio committed Mar 2, 2022
1 parent 1020e44 commit 91afff9
Show file tree
Hide file tree
Showing 9 changed files with 35 additions and 15 deletions.
4 changes: 3 additions & 1 deletion ql/cashflows/cmscoupon.cpp
Expand Up @@ -56,7 +56,9 @@ namespace QuantLib {

CmsLeg::CmsLeg(Schedule schedule, ext::shared_ptr<SwapIndex> swapIndex)
: schedule_(std::move(schedule)), swapIndex_(std::move(swapIndex)),
paymentAdjustment_(Following), inArrears_(false), zeroPayments_(false) {}
paymentAdjustment_(Following), inArrears_(false), zeroPayments_(false) {
QL_REQUIRE(swapIndex_, "no index provided");
}

CmsLeg& CmsLeg::withNotionals(Real notional) {
notionals_ = std::vector<Real>(1, notional);
Expand Down
3 changes: 2 additions & 1 deletion ql/cashflows/floatingratecoupon.cpp
Expand Up @@ -45,8 +45,9 @@ namespace QuantLib {
const Date& exCouponDate)
: Coupon(paymentDate, nominal, startDate, endDate, refPeriodStart, refPeriodEnd, exCouponDate),
index_(index), dayCounter_(std::move(dayCounter)),
fixingDays_(fixingDays == Null<Natural>() ? index->fixingDays() : fixingDays),
fixingDays_(fixingDays == Null<Natural>() ? (index ? index->fixingDays() : 0) : fixingDays),
gearing_(gearing), spread_(spread), isInArrears_(isInArrears) {
QL_REQUIRE(index_, "no index provided");
QL_REQUIRE(gearing_!=0, "Null gearing not allowed");

if (dayCounter_.empty())
Expand Down
4 changes: 3 additions & 1 deletion ql/cashflows/iborcoupon.cpp
Expand Up @@ -165,7 +165,9 @@ namespace QuantLib {
: schedule_(std::move(schedule)), index_(std::move(index)), paymentAdjustment_(Following),
paymentLag_(0), paymentCalendar_(Calendar()), inArrears_(false), zeroPayments_(false),
exCouponPeriod_(Period()), exCouponCalendar_(Calendar()), exCouponAdjustment_(Unadjusted),
exCouponEndOfMonth_(false) {}
exCouponEndOfMonth_(false) {
QL_REQUIRE(index_, "no index provided");
}

IborLeg& IborLeg::withNotionals(Real notional) {
notionals_ = std::vector<Real>(1,notional);
Expand Down
13 changes: 13 additions & 0 deletions ql/cashflows/indexedcashflow.cpp
Expand Up @@ -22,6 +22,19 @@

namespace QuantLib {

IndexedCashFlow::IndexedCashFlow(Real notional,
const ext::shared_ptr<Index> &index,
const Date& baseDate,
const Date& fixingDate,
const Date& paymentDate,
bool growthOnly)
: notional_(notional), index_(index),
baseDate_(baseDate), fixingDate_(fixingDate),
paymentDate_(paymentDate), growthOnly_(growthOnly) {
QL_REQUIRE(index_, "no index provided");
registerWith(index_);
}

Real IndexedCashFlow::amount() const {
Real I0 = index_->fixing(baseDate_);
Real I1 = index_->fixing(fixingDate_);
Expand Down
7 changes: 1 addition & 6 deletions ql/cashflows/indexedcashflow.hpp
Expand Up @@ -49,12 +49,7 @@ namespace QuantLib {
const Date& baseDate,
const Date& fixingDate,
const Date& paymentDate,
bool growthOnly = false)
: notional_(notional), index_(index),
baseDate_(baseDate), fixingDate_(fixingDate),
paymentDate_(paymentDate), growthOnly_(growthOnly) {
registerWith(index);
}
bool growthOnly = false);
//! \name Event interface
//@{
Date date() const override { return paymentDate_; }
Expand Down
7 changes: 5 additions & 2 deletions ql/cashflows/overnightindexedcoupon.cpp
Expand Up @@ -149,7 +149,8 @@ namespace QuantLib {
bool telescopicValueDates,
RateAveraging::Type averagingMethod)
: FloatingRateCoupon(paymentDate, nominal, startDate, endDate,
overnightIndex->fixingDays(), overnightIndex,
overnightIndex ? overnightIndex->fixingDays() : 0,
overnightIndex,
gearing, spread,
refPeriodStart, refPeriodEnd,
dayCounter, false) {
Expand Down Expand Up @@ -271,7 +272,9 @@ namespace QuantLib {
OvernightLeg::OvernightLeg(const Schedule& schedule, ext::shared_ptr<OvernightIndex> i)
: schedule_(schedule), overnightIndex_(std::move(i)), paymentCalendar_(schedule.calendar()),
paymentAdjustment_(Following), paymentLag_(0), telescopicValueDates_(false),
averagingMethod_(RateAveraging::Compound) {}
averagingMethod_(RateAveraging::Compound) {
QL_REQUIRE(overnightIndex_, "no index provided");
}

OvernightLeg& OvernightLeg::withNotionals(Real notional) {
notionals_ = vector<Real>(1, notional);
Expand Down
4 changes: 3 additions & 1 deletion ql/cashflows/subperiodcoupon.cpp
Expand Up @@ -159,7 +159,9 @@ namespace QuantLib {
: schedule_(schedule), index_(std::move(i)), paymentCalendar_(schedule.calendar()),
paymentAdjustment_(Following), paymentLag_(0), averagingMethod_(RateAveraging::Compound),
exCouponPeriod_(Period()), exCouponCalendar_(Calendar()),
exCouponAdjustment_(Unadjusted), exCouponEndOfMonth_(false) {}
exCouponAdjustment_(Unadjusted), exCouponEndOfMonth_(false) {
QL_REQUIRE(index_, "no index provided");
}

SubPeriodsLeg& SubPeriodsLeg::withNotionals(Real notional) {
notionals_ = std::vector<Real>(1, notional);
Expand Down
4 changes: 3 additions & 1 deletion ql/experimental/coupons/cmsspreadcoupon.cpp
Expand Up @@ -46,7 +46,9 @@ namespace QuantLib {

CmsSpreadLeg::CmsSpreadLeg(Schedule schedule, ext::shared_ptr<SwapSpreadIndex> index)
: schedule_(std::move(schedule)), swapSpreadIndex_(std::move(index)),
paymentAdjustment_(Following), inArrears_(false), zeroPayments_(false) {}
paymentAdjustment_(Following), inArrears_(false), zeroPayments_(false) {
QL_REQUIRE(swapSpreadIndex_, "no index provided");
}

CmsSpreadLeg &CmsSpreadLeg::withNotionals(Real notional) {
notionals_ = std::vector<Real>(1, notional);
Expand Down
4 changes: 2 additions & 2 deletions ql/instruments/compositeinstrument.cpp
Expand Up @@ -21,8 +21,8 @@

namespace QuantLib {

void CompositeInstrument::add(
const ext::shared_ptr<Instrument>& instrument, Real multiplier) {
void CompositeInstrument::add(const ext::shared_ptr<Instrument>& instrument, Real multiplier) {
QL_REQUIRE(instrument, "null instrument provided");
components_.emplace_back(instrument, multiplier);
registerWith(instrument);
update();
Expand Down

0 comments on commit 91afff9

Please sign in to comment.