Skip to content

Commit 1fbf9f5

Browse files
pcaspersjenkins
authored andcommitted
QPR-11568 move leg builders
1 parent 3f1051d commit 1fbf9f5

10 files changed

Lines changed: 21 additions & 45 deletions

OREAnalytics/orea/app/initbuilders.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@
8787
#include <ored/portfolio/indexing.hpp>
8888
#include <ored/portfolio/inflationswap.hpp>
8989
#include <ored/portfolio/instrumentwrapper.hpp>
90+
#include <ored/portfolio/legbuilders.hpp>
9091
#include <ored/portfolio/legdata.hpp>
9192
#include <ored/portfolio/legdatafactory.hpp>
9293
#include <ored/portfolio/multilegoption.hpp>
@@ -116,6 +117,9 @@
116117
#define REG_TRADEBUILDER(NAME, CLASS) \
117118
ore::data::TradeFactory::instance().addBuilder(NAME, boost::make_shared<ore::data::TradeBuilder<CLASS>>());
118119

120+
#define REG_LEGBUILDER(NAME, CLASS) \
121+
ore::data::EngineBuilderFactory::instance().addLegBuilder([]() { return boost::make_shared<CLASS>(); });
122+
119123
namespace ore::analytics {
120124

121125
void initBuilders() {
@@ -220,6 +224,23 @@ void initBuilders() {
220224
REG_TRADEBUILDER("FxBarrierOption", ore::data::FxBarrierOption)
221225
REG_TRADEBUILDER("EquityOption", ore::data::EquityOption)
222226
REG_TRADEBUILDER("FxOption", ore::data::FxOption)
227+
228+
REG_LEGBUILDER("CommodityFixedLegBuilder", ore::data::CommodityFixedLegBuilder)
229+
REG_LEGBUILDER("CommodityFloatingLegBuilder", ore::data::CommodityFloatingLegBuilder)
230+
REG_LEGBUILDER("DurationAdjustedCmsLegBuilder", ore::data::DurationAdjustedCmsLegBuilder)
231+
REG_LEGBUILDER("FixedLegBuilder", ore::data::FixedLegBuilder)
232+
REG_LEGBUILDER("ZeroCouponFixedLegBuilder", ore::data::ZeroCouponFixedLegBuilder)
233+
REG_LEGBUILDER("FloatingLegBuilder", ore::data::FloatingLegBuilder)
234+
REG_LEGBUILDER("CashflowLegBuilder", ore::data::CashflowLegBuilder)
235+
REG_LEGBUILDER("CPILegBuilder", ore::data::CPILegBuilder)
236+
REG_LEGBUILDER("YYLegBuilder", ore::data::YYLegBuilder)
237+
REG_LEGBUILDER("CMSLegBuilder", ore::data::CMSLegBuilder)
238+
REG_LEGBUILDER("CMBLegBuilder", ore::data::CMBLegBuilder)
239+
REG_LEGBUILDER("DigitalCMSLegBuilder", ore::data::DigitalCMSLegBuilder)
240+
REG_LEGBUILDER("CMSSpreadLegBuilder", ore::data::CMSSpreadLegBuilder)
241+
REG_LEGBUILDER("DigitalCMSSpreadLegBuilder", ore::data::DigitalCMSSpreadLegBuilder)
242+
REG_LEGBUILDER("EquityLegBuilder", ore::data::EquityLegBuilder)
243+
REG_LEGBUILDER("EquityMarginLegBuilder", ore::data::EquityMarginLegBuilder)
223244
}
224245

225246
} // namespace ore::analytics

OREData/ored/portfolio/commoditylegbuilder.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -308,9 +308,6 @@ void updateQuantities(Leg& leg, bool isAveragingFuture, CommodityQuantityFrequen
308308
namespace ore {
309309
namespace data {
310310

311-
ORE_REGISTER_LEG_BUILDER_IMPL(CommodityFixedLegBuilder)
312-
ORE_REGISTER_LEG_BUILDER_IMPL(CommodityFloatingLegBuilder)
313-
314311
Leg CommodityFixedLegBuilder::buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
315312
RequiredFixings& requiredFixings, const string& configuration,
316313
const QuantLib::Date& openEndDateReplacement, const bool useXbsCurves) const {

OREData/ored/portfolio/commoditylegbuilder.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ namespace ore {
3131
namespace data {
3232

3333
class CommodityFixedLegBuilder : public ore::data::LegBuilder {
34-
ORE_REGISTER_LEG_BUILDER(CommodityFixedLegBuilder)
3534
public:
3635
CommodityFixedLegBuilder() : LegBuilder("CommodityFixed") {}
3736

@@ -43,7 +42,6 @@ class CommodityFixedLegBuilder : public ore::data::LegBuilder {
4342
};
4443

4544
class CommodityFloatingLegBuilder : public ore::data::LegBuilder {
46-
ORE_REGISTER_LEG_BUILDER(CommodityFloatingLegBuilder)
4745
public:
4846
CommodityFloatingLegBuilder()
4947
: LegBuilder("CommodityFloating"), allAveraging_(false) {}

OREData/ored/portfolio/durationadjustedcmslegbuilder.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ using namespace QuantLib;
3434
namespace ore {
3535
namespace data {
3636

37-
ORE_REGISTER_LEG_BUILDER_IMPL(DurationAdjustedCmsLegBuilder)
38-
3937
Leg DurationAdjustedCmsLegBuilder::buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
4038
RequiredFixings& requiredFixings, const string& configuration,
4139
const QuantLib::Date& openEndDateReplacement,

OREData/ored/portfolio/durationadjustedcmslegbuilder.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ namespace ore {
3131
namespace data {
3232

3333
class DurationAdjustedCmsLegBuilder : public ore::data::LegBuilder {
34-
ORE_REGISTER_LEG_BUILDER(DurationAdjustedCmsLegBuilder)
3534
public:
3635
DurationAdjustedCmsLegBuilder() : LegBuilder("DurationAdjustedCMS") {}
3736

OREData/ored/portfolio/enginefactory.hpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,6 @@
4141
#define ORE_REGISTER_ENGINE_BUILDER_IMPL(CLASSNAME) ore::data::EngineBuilderRegister<CLASSNAME> CLASSNAME::reg_eb_;
4242
#define ORE_REGISTER_AMC_ENGINE_BUILDER(CLASSNAME) static ore::data::AmcEngineBuilderRegister<CLASSNAME> reg_amceb_;
4343
#define ORE_REGISTER_AMC_ENGINE_BUILDER_IMPL(CLASSNAME) ore::data::AmcEngineBuilderRegister<CLASSNAME> CLASSNAME::reg_amceb_;
44-
#define ORE_REGISTER_LEG_BUILDER(CLASSNAME) static ore::data::LegBuilderRegister<CLASSNAME> reg_lb_;
45-
#define ORE_REGISTER_LEG_BUILDER_IMPL(CLASSNAME) ore::data::LegBuilderRegister<CLASSNAME> CLASSNAME::reg_lb_;
4644

4745
namespace ore {
4846
namespace data {
@@ -216,12 +214,6 @@ template <typename T> struct AmcEngineBuilderRegister {
216214
}
217215
};
218216

219-
template <typename T> struct LegBuilderRegister {
220-
LegBuilderRegister<T>() {
221-
EngineBuilderFactory::instance().addLegBuilder([]() { return boost::make_shared<T>(); });
222-
}
223-
};
224-
225217
//! Pricing Engine Factory class
226218
/*! A Pricing Engine Factory is used when building a portfolio, it provides
227219
* QuantLib::PricingEngines to each of the Trade objects.

OREData/ored/portfolio/equityfxlegbuilder.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ using std::string;
3636
namespace ore {
3737
namespace data {
3838

39-
ORE_REGISTER_LEG_BUILDER_IMPL(EquityMarginLegBuilder)
40-
4139
Leg EquityMarginLegBuilder::buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
4240
RequiredFixings& requiredFixings, const string& configuration,
4341
const QuantLib::Date& openEndDateReplacement, const bool useXbsCurves) const {

OREData/ored/portfolio/equityfxlegbuilder.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ namespace ore {
3131
namespace data {
3232

3333
class EquityMarginLegBuilder : public ore::data::LegBuilder {
34-
ORE_REGISTER_LEG_BUILDER(EquityMarginLegBuilder)
3534
public:
3635
EquityMarginLegBuilder() : LegBuilder("EquityMargin") {}
3736
QuantLib::Leg buildLeg(const ore::data::LegData& data,

OREData/ored/portfolio/legbuilders.cpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,6 @@ using namespace QuantExt;
2828
namespace ore {
2929
namespace data {
3030

31-
ORE_REGISTER_LEG_BUILDER_IMPL(FixedLegBuilder)
32-
ORE_REGISTER_LEG_BUILDER_IMPL(ZeroCouponFixedLegBuilder)
33-
ORE_REGISTER_LEG_BUILDER_IMPL(FloatingLegBuilder)
34-
ORE_REGISTER_LEG_BUILDER_IMPL(CashflowLegBuilder)
35-
ORE_REGISTER_LEG_BUILDER_IMPL(CPILegBuilder)
36-
ORE_REGISTER_LEG_BUILDER_IMPL(YYLegBuilder)
37-
ORE_REGISTER_LEG_BUILDER_IMPL(CMSLegBuilder)
38-
ORE_REGISTER_LEG_BUILDER_IMPL(CMBLegBuilder)
39-
ORE_REGISTER_LEG_BUILDER_IMPL(DigitalCMSLegBuilder)
40-
ORE_REGISTER_LEG_BUILDER_IMPL(CMSSpreadLegBuilder)
41-
ORE_REGISTER_LEG_BUILDER_IMPL(DigitalCMSSpreadLegBuilder)
42-
ORE_REGISTER_LEG_BUILDER_IMPL(EquityLegBuilder)
43-
44-
4531
Leg FixedLegBuilder::buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
4632
RequiredFixings& requiredFixings, const string& configuration,
4733
const QuantLib::Date& openEndDateReplacement, const bool useXbsCurves) const {

OREData/ored/portfolio/legbuilders.hpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ namespace ore {
3232
namespace data {
3333

3434
class FixedLegBuilder : public LegBuilder {
35-
ORE_REGISTER_LEG_BUILDER(FixedLegBuilder)
3635
public:
3736
FixedLegBuilder() : LegBuilder("Fixed") {}
3837
Leg buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
@@ -42,7 +41,6 @@ class FixedLegBuilder : public LegBuilder {
4241
};
4342

4443
class ZeroCouponFixedLegBuilder : public LegBuilder {
45-
ORE_REGISTER_LEG_BUILDER(ZeroCouponFixedLegBuilder)
4644
public:
4745
ZeroCouponFixedLegBuilder() : LegBuilder("ZeroCouponFixed") {}
4846
Leg buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
@@ -52,7 +50,6 @@ class ZeroCouponFixedLegBuilder : public LegBuilder {
5250
};
5351

5452
class FloatingLegBuilder : public LegBuilder {
55-
ORE_REGISTER_LEG_BUILDER(FloatingLegBuilder)
5653
public:
5754
FloatingLegBuilder() : LegBuilder("Floating") {}
5855
Leg buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
@@ -62,7 +59,6 @@ class FloatingLegBuilder : public LegBuilder {
6259
};
6360

6461
class CashflowLegBuilder : public LegBuilder {
65-
ORE_REGISTER_LEG_BUILDER(CashflowLegBuilder)
6662
public:
6763
CashflowLegBuilder() : LegBuilder("Cashflow") {}
6864
Leg buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
@@ -72,7 +68,6 @@ class CashflowLegBuilder : public LegBuilder {
7268
};
7369

7470
class CPILegBuilder : public LegBuilder {
75-
ORE_REGISTER_LEG_BUILDER(CPILegBuilder)
7671
public:
7772
CPILegBuilder() : LegBuilder("CPI") {}
7873
Leg buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
@@ -82,7 +77,6 @@ class CPILegBuilder : public LegBuilder {
8277
};
8378

8479
class YYLegBuilder : public LegBuilder {
85-
ORE_REGISTER_LEG_BUILDER(YYLegBuilder)
8680
public:
8781
YYLegBuilder() : LegBuilder("YY") {}
8882
Leg buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
@@ -92,7 +86,6 @@ class YYLegBuilder : public LegBuilder {
9286
};
9387

9488
class CMSLegBuilder : public LegBuilder {
95-
ORE_REGISTER_LEG_BUILDER(CMSLegBuilder)
9689
public:
9790
CMSLegBuilder() : LegBuilder("CMS") {}
9891
Leg buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
@@ -102,7 +95,6 @@ class CMSLegBuilder : public LegBuilder {
10295
};
10396

10497
class CMBLegBuilder : public LegBuilder {
105-
ORE_REGISTER_LEG_BUILDER(CMBLegBuilder)
10698
public:
10799
CMBLegBuilder() : LegBuilder("CMB") {}
108100
Leg buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
@@ -112,7 +104,6 @@ class CMBLegBuilder : public LegBuilder {
112104
};
113105

114106
class DigitalCMSLegBuilder : public LegBuilder {
115-
ORE_REGISTER_LEG_BUILDER(DigitalCMSLegBuilder)
116107
public:
117108
DigitalCMSLegBuilder() : LegBuilder("DigitalCMS") {}
118109
Leg buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
@@ -122,7 +113,6 @@ class DigitalCMSLegBuilder : public LegBuilder {
122113
};
123114

124115
class CMSSpreadLegBuilder : public LegBuilder {
125-
ORE_REGISTER_LEG_BUILDER(CMSSpreadLegBuilder)
126116
public:
127117
CMSSpreadLegBuilder() : LegBuilder("CMSSpread") {}
128118
Leg buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
@@ -132,7 +122,6 @@ class CMSSpreadLegBuilder : public LegBuilder {
132122
};
133123

134124
class DigitalCMSSpreadLegBuilder : public LegBuilder {
135-
ORE_REGISTER_LEG_BUILDER(DigitalCMSSpreadLegBuilder)
136125
public:
137126
DigitalCMSSpreadLegBuilder() : LegBuilder("DigitalCMSSpread") {}
138127
Leg buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,
@@ -142,7 +131,6 @@ class DigitalCMSSpreadLegBuilder : public LegBuilder {
142131
};
143132

144133
class EquityLegBuilder : public LegBuilder {
145-
ORE_REGISTER_LEG_BUILDER(EquityLegBuilder)
146134
public:
147135
EquityLegBuilder() : LegBuilder("Equity") {}
148136
Leg buildLeg(const LegData& data, const boost::shared_ptr<EngineFactory>& engineFactory,

0 commit comments

Comments
 (0)