@@ -355,50 +355,66 @@ OREApp::OREApp(const boost::shared_ptr<InputParameters>& inputs, const std::stri
355355}
356356
357357void OREApp::dummyRegisterBuildersForWindows () {
358- std::size_t dummy = 0 ;
359-
360- dummy |= (std::size_t )boost::make_shared<Swap>().get ();
361- dummy |= (std::size_t )boost::make_shared<Swaption>().get ();
362- dummy |= (std::size_t )boost::make_shared<CapFloor>().get ();
363- dummy |= (std::size_t )boost::make_shared<ForwardRateAgreement>().get ();
364- dummy |= (std::size_t )boost::make_shared<FxForward>().get ();
365- dummy |= (std::size_t )boost::make_shared<FxOption>().get ();
366- dummy |= (std::size_t )boost::make_shared<FxSwap>().get ();
367-
368- dummy |= (std::size_t )boost::make_shared<SwapEngineBuilder>().get ();
369- dummy |= (std::size_t )boost::make_shared<CrossCurrencySwapEngineBuilder>().get ();
370- dummy |= (std::size_t )boost::make_shared<FxForwardEngineBuilder>().get ();
371- dummy |= (std::size_t )boost::make_shared<FxEuropeanOptionEngineBuilder>().get ();
372- dummy |= (std::size_t )boost::make_shared<FxEuropeanCSOptionEngineBuilder>().get ();
373- dummy |= (std::size_t )boost::make_shared<FxAmericanOptionFDEngineBuilder>().get ();
374- dummy |= (std::size_t )boost::make_shared<FxAmericanOptionBAWEngineBuilder>().get ();
375- dummy |= (std::size_t )boost::make_shared<CapFloorEngineBuilder>().get ();
376- dummy |= (std::size_t )boost::make_shared<CapFlooredOvernightIndexedCouponLegEngineBuilder>().get ();
377- dummy |= (std::size_t )boost::make_shared<CapFlooredAverageONIndexedCouponLegEngineBuilder>().get ();
378- dummy |= (std::size_t )boost::make_shared<CapFlooredIborLegEngineBuilder>().get ();
379- dummy |= (std::size_t )boost::make_shared<LinearTSRCmsCouponPricerBuilder>().get ();
380-
381- boost::shared_ptr<QuantExt::CrossAssetModel> cam;
382- std::vector<Date> simulationDates;
383- dummy |= (std::size_t )boost::make_shared<CamAmcFxOptionEngineBuilder>(cam, simulationDates).get ();
384- dummy |= (std::size_t )boost::make_shared<CamAmcCurrencySwapEngineBuilder>(cam, simulationDates).get ();
385- dummy |= (std::size_t )boost::make_shared<CamAmcSwapEngineBuilder>(cam, simulationDates).get ();
386- dummy |= (std::size_t )boost::make_shared<LgmAmcBermudanSwaptionEngineBuilder>(cam, simulationDates).get ();
387-
388- dummy |= (std::size_t )boost::make_shared<FixedLegBuilder>().get ();
389- dummy |= (std::size_t )boost::make_shared<ZeroCouponFixedLegBuilder>().get ();
390- dummy |= (std::size_t )boost::make_shared<FloatingLegBuilder>().get ();
391- dummy |= (std::size_t )boost::make_shared<CashflowLegBuilder>().get ();
392- dummy |= (std::size_t )boost::make_shared<CPILegBuilder>().get ();
393- dummy |= (std::size_t )boost::make_shared<YYLegBuilder>().get ();
394- dummy |= (std::size_t )boost::make_shared<CMSLegBuilder>().get ();
395- dummy |= (std::size_t )boost::make_shared<CMBLegBuilder>().get ();
396- dummy |= (std::size_t )boost::make_shared<DigitalCMSLegBuilder>().get ();
397- dummy |= (std::size_t )boost::make_shared<CMSSpreadLegBuilder>().get ();
398- dummy |= (std::size_t )boost::make_shared<DigitalCMSSpreadLegBuilder>().get ();
399- dummy |= (std::size_t )boost::make_shared<EquityLegBuilder>().get ();
400-
401- ELOG (" Enforce builder registration: " << dummy);
358+ TradeFactory::instance ().addBuilder (" Swap" , boost::make_shared<TradeBuilder<Swap>>(), true );
359+ TradeFactory::instance ().addBuilder (" Swaption" , boost::make_shared<TradeBuilder<Swaption>>(), true );
360+ TradeFactory::instance ().addBuilder (" CapFloor" , boost::make_shared<TradeBuilder<CapFloor>>(), true );
361+ TradeFactory::instance ().addBuilder (" ForwardRateAgreement" ,
362+ boost::make_shared<TradeBuilder<ForwardRateAgreement>>(), true );
363+ TradeFactory::instance ().addBuilder (" FxForward" , boost::make_shared<TradeBuilder<FxForward>>(), true );
364+ TradeFactory::instance ().addBuilder (" FxOption" , boost::make_shared<TradeBuilder<FxOption>>(), true );
365+ TradeFactory::instance ().addBuilder (" FxSwap" , boost::make_shared<TradeBuilder<FxSwap>>(), true );
366+
367+ EngineBuilderFactory::instance ().addEngineBuilder ([]() { return boost::make_shared<SwapEngineBuilder>(); });
368+ EngineBuilderFactory::instance ().addEngineBuilder (
369+ []() { return boost::make_shared<CrossCurrencySwapEngineBuilder>(); });
370+ EngineBuilderFactory::instance ().addEngineBuilder ([]() { return boost::make_shared<FxForwardEngineBuilder>(); });
371+ EngineBuilderFactory::instance ().addEngineBuilder (
372+ []() { return boost::make_shared<FxEuropeanOptionEngineBuilder>(); });
373+ EngineBuilderFactory::instance ().addEngineBuilder (
374+ []() { return boost::make_shared<FxEuropeanCSOptionEngineBuilder>(); });
375+ EngineBuilderFactory::instance ().addEngineBuilder (
376+ []() { return boost::make_shared<FxAmericanOptionFDEngineBuilder>(); });
377+ EngineBuilderFactory::instance ().addEngineBuilder (
378+ []() { return boost::make_shared<FxAmericanOptionBAWEngineBuilder>(); });
379+ EngineBuilderFactory::instance ().addEngineBuilder ([]() { return boost::make_shared<CapFloorEngineBuilder>(); });
380+ EngineBuilderFactory::instance ().addEngineBuilder (
381+ []() { return boost::make_shared<CapFlooredOvernightIndexedCouponLegEngineBuilder>(); });
382+ EngineBuilderFactory::instance ().addEngineBuilder (
383+ []() { return boost::make_shared<CapFlooredAverageONIndexedCouponLegEngineBuilder>(); });
384+ EngineBuilderFactory::instance ().addEngineBuilder (
385+ []() { return boost::make_shared<CapFlooredIborLegEngineBuilder>(); });
386+ EngineBuilderFactory::instance ().addEngineBuilder (
387+ []() { return boost::make_shared<LinearTSRCmsCouponPricerBuilder>(); });
388+
389+ EngineBuilderFactory::instance ().addAmcEngineBuilder (
390+ [](const boost::shared_ptr<QuantExt::CrossAssetModel>& cam, const std::vector<Date>& grid) {
391+ return boost::make_shared<CamAmcCurrencySwapEngineBuilder>(cam, grid);
392+ });
393+ EngineBuilderFactory::instance ().addAmcEngineBuilder (
394+ [](const boost::shared_ptr<QuantExt::CrossAssetModel>& cam, const std::vector<Date>& grid) {
395+ return boost::make_shared<CamAmcFxOptionEngineBuilder>(cam, grid);
396+ });
397+ EngineBuilderFactory::instance ().addAmcEngineBuilder (
398+ [](const boost::shared_ptr<QuantExt::CrossAssetModel>& cam, const std::vector<Date>& grid) {
399+ return boost::make_shared<CamAmcSwapEngineBuilder>(cam, grid);
400+ });
401+ EngineBuilderFactory::instance ().addAmcEngineBuilder (
402+ [](const boost::shared_ptr<QuantExt::CrossAssetModel>& cam, const std::vector<Date>& grid) {
403+ return boost::make_shared<LgmAmcBermudanSwaptionEngineBuilder>(cam, grid);
404+ });
405+
406+ EngineBuilderFactory::instance ().addLegBuilder ([]() { return boost::make_shared<FixedLegBuilder>(); });
407+ EngineBuilderFactory::instance ().addLegBuilder ([]() { return boost::make_shared<ZeroCouponFixedLegBuilder>(); });
408+ EngineBuilderFactory::instance ().addLegBuilder ([]() { return boost::make_shared<FloatingLegBuilder>(); });
409+ EngineBuilderFactory::instance ().addLegBuilder ([]() { return boost::make_shared<CashflowLegBuilder>(); });
410+ EngineBuilderFactory::instance ().addLegBuilder ([]() { return boost::make_shared<CPILegBuilder>(); });
411+ EngineBuilderFactory::instance ().addLegBuilder ([]() { return boost::make_shared<YYLegBuilder>(); });
412+ EngineBuilderFactory::instance ().addLegBuilder ([]() { return boost::make_shared<CMSLegBuilder>(); });
413+ EngineBuilderFactory::instance ().addLegBuilder ([]() { return boost::make_shared<CMBLegBuilder>(); });
414+ EngineBuilderFactory::instance ().addLegBuilder ([]() { return boost::make_shared<DigitalCMSLegBuilder>(); });
415+ EngineBuilderFactory::instance ().addLegBuilder ([]() { return boost::make_shared<CMSSpreadLegBuilder>(); });
416+ EngineBuilderFactory::instance ().addLegBuilder ([]() { return boost::make_shared<DigitalCMSSpreadLegBuilder>(); });
417+ EngineBuilderFactory::instance ().addLegBuilder ([]() { return boost::make_shared<EquityLegBuilder>(); });
402418}
403419
404420OREApp::~OREApp () {
0 commit comments