Skip to content

Commit 56e5e37

Browse files
Sebastien Bouvardjenkins
authored andcommitted
QPR-12223 switch all boost pointers to quant ext pointers and add referencedata null ptr check
1 parent 0e564fb commit 56e5e37

3 files changed

Lines changed: 14 additions & 12 deletions

File tree

OREData/ored/portfolio/compositetrade.cpp

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ void CompositeTrade::build(const QuantLib::ext::shared_ptr<EngineFactory>& engin
4242
populateFromReferenceData(engineFactory->referenceData());
4343

4444

45-
for (const boost::shared_ptr<Trade>& trade : trades_) {
45+
for (const QuantLib::ext::shared_ptr<Trade>& trade : trades_) {
4646

4747
trade->reset();
4848
trade->build(engineFactory);
@@ -51,7 +51,7 @@ void CompositeTrade::build(const QuantLib::ext::shared_ptr<EngineFactory>& engin
5151
if (sensitivityTemplate_.empty())
5252
setSensitivityTemplate(trade->sensitivityTemplate());
5353

54-
Handle<Quote> fx = Handle<Quote>(boost::make_shared<SimpleQuote>(1.0));
54+
Handle<Quote> fx = Handle<Quote>(QuantLib::ext::make_shared<SimpleQuote>(1.0));
5555
if (trade->npvCurrency() != npvCurrency_)
5656
fx = engineFactory->market()->fxRate(trade->npvCurrency() + npvCurrency_);
5757
fxRates_.push_back(fx);
@@ -72,7 +72,7 @@ void CompositeTrade::build(const QuantLib::ext::shared_ptr<EngineFactory>& engin
7272

7373
QuantLib::ext::shared_ptr<InstrumentWrapper> instrumentWrapper = trade->instrument();
7474
Real effectiveMultiplier = instrumentWrapper->multiplier();
75-
if (auto optionWrapper = boost::dynamic_pointer_cast<ore::data::OptionWrapper>(instrumentWrapper)) {
75+
if (auto optionWrapper = QuantLib::ext::dynamic_pointer_cast<ore::data::OptionWrapper>(instrumentWrapper)) {
7676
effectiveMultiplier *= optionWrapper->isLong() ? 1.0 : -1.0;
7777
}
7878

@@ -166,7 +166,7 @@ void CompositeTrade::fromXML(XMLNode* node) {
166166
id = this->id() + "_" + std::to_string(i);
167167
DLOG("Parsing composite trade " << this->id() << " node " << i << " with id: " << id);
168168

169-
boost::shared_ptr<Trade> trade;
169+
QuantLib::ext::shared_ptr<Trade> trade;
170170
try {
171171
trade = TradeFactory::instance().build(tradeType);
172172
trade->id() = id;
@@ -271,10 +271,11 @@ const std::map<std::string, boost::any>& CompositeTrade::additionalData() const
271271
return additionalData_;
272272
}
273273

274-
void CompositeTrade::populateFromReferenceData(const boost::shared_ptr<ReferenceDataManager>& referenceData) {
274+
void CompositeTrade::populateFromReferenceData(const QuantLib::ext::shared_ptr<ReferenceDataManager>& referenceData) {
275275

276-
if (!portfolioId_.empty() && (referenceData->hasData(PortfolioBasketReferenceDatum::TYPE, portfolioId_))) {
277-
auto ptfRefData = boost::dynamic_pointer_cast<PortfolioBasketReferenceDatum>(
276+
if (!portfolioId_.empty() && referenceData != nullptr &&
277+
(referenceData->hasData(PortfolioBasketReferenceDatum::TYPE, portfolioId_))) {
278+
auto ptfRefData = QuantLib::ext::dynamic_pointer_cast<PortfolioBasketReferenceDatum>(
278279
referenceData->getData(PortfolioBasketReferenceDatum::TYPE, portfolioId_));
279280
QL_REQUIRE(ptfRefData, "could not cast to PortfolioBasketReferenceDatum, this is unexpected");
280281
getTradesFromReferenceData(ptfRefData);
@@ -284,7 +285,8 @@ void CompositeTrade::populateFromReferenceData(const boost::shared_ptr<Reference
284285

285286
}
286287

287-
void CompositeTrade::getTradesFromReferenceData(const boost::shared_ptr<PortfolioBasketReferenceDatum>& ptfReferenceDatum) {
288+
void CompositeTrade::getTradesFromReferenceData(
289+
const QuantLib::ext::shared_ptr<PortfolioBasketReferenceDatum>& ptfReferenceDatum) {
288290

289291
DLOG("populating portfolio basket data from reference data");
290292
QL_REQUIRE(ptfReferenceDatum, "populateFromReferenceData(): empty cbo reference datum given");

OREData/ored/portfolio/compositetrade.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,8 @@ class CompositeTrade : public Trade {
101101

102102
private:
103103

104-
void populateFromReferenceData(const boost::shared_ptr<ReferenceDataManager>& referenceDataManager);
105-
void getTradesFromReferenceData(const boost::shared_ptr<PortfolioBasketReferenceDatum>& ptfReferenceDatum);
104+
void populateFromReferenceData(const QuantLib::ext::shared_ptr<ReferenceDataManager>& referenceDataManager);
105+
void getTradesFromReferenceData(const QuantLib::ext::shared_ptr<PortfolioBasketReferenceDatum>& ptfReferenceDatum);
106106

107107
string currency_;
108108
Real notionalOverride_;

OREData/test/compositetrade.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ BOOST_AUTO_TEST_CASE(testCompositeReferenceData) {
222222

223223
// build CompositeTrade with referencedata
224224
auto rdm = QuantLib::ext::make_shared<BasicReferenceDataManager>(TEST_INPUT_FILE("reference_data.xml"));
225-
auto ptfReferenceDatum = boost::dynamic_pointer_cast<PortfolioBasketReferenceDatum>(rdm->getData("PortfolioBasket", "MSFDSJP"));
225+
auto ptfReferenceDatum = QuantLib::ext::dynamic_pointer_cast<PortfolioBasketReferenceDatum>(rdm->getData("PortfolioBasket", "MSFDSJP"));
226226
auto refData = ptfReferenceDatum->getTrades();
227227
QuantLib::ext::shared_ptr<Trade> eqRefCall = refData[0];
228228
QuantLib::ext::shared_ptr<Trade> eqRefPut = refData[1];
@@ -275,7 +275,7 @@ BOOST_AUTO_TEST_CASE(testConstructionWithCompositeTradeReferenceData) {
275275
// CompoiteTrade with Reference Data
276276
auto rdm = QuantLib::ext::make_shared<BasicReferenceDataManager>(TEST_INPUT_FILE("reference_data.xml"));
277277
auto ptfReferenceDatum =
278-
boost::dynamic_pointer_cast<PortfolioBasketReferenceDatum>(rdm->getData("PortfolioBasket", "MSFDSJP"));
278+
QuantLib::ext::dynamic_pointer_cast<PortfolioBasketReferenceDatum>(rdm->getData("PortfolioBasket", "MSFDSJP"));
279279

280280
string xmlRefData = ptfReferenceDatum->toXMLString();
281281
PortfolioBasketReferenceDatum xmlPortfolioBasket("MSFDSJP");

0 commit comments

Comments
 (0)