499 {
501 auto vc = QuantLib::ext::make_shared<ConstantVolatilityConfig>();
502 vc->fromXML(n);
504 }
505
507 auto vc = QuantLib::ext::make_shared<VolatilityCurveConfig>();
508 vc->fromXML(n);
510 }
511
514 auto vc = QuantLib::ext::make_shared<VolatilityDeltaSurfaceConfig>();
515 vc->fromXML(n);
517 }
518
521 auto vc = QuantLib::ext::make_shared<VolatilityStrikeSurfaceConfig>();
522 vc->fromXML(n);
524 }
525
528 auto vc = QuantLib::ext::make_shared<VolatilityMoneynessSurfaceConfig>();
529 vc->fromXML(n);
531 }
532
535 auto vc = QuantLib::ext::make_shared<VolatilityApoFutureSurfaceConfig>();
536 vc->fromXML(n);
538 }
539
542 auto vc = QuantLib::ext::make_shared<ProxyVolatilityConfig>();
543 vc->fromXML(n);
545 }
546
548 "VolatilityConfigBuilder expects at least one child node of type: "
549 "Constant, Curve, StrikeSurface, DeltaSurface, MoneynessSurface, ApoFutureSurface, ProxySurface.");
550
551
554 [](const QuantLib::ext::shared_ptr<VolatilityConfig>& a, const QuantLib::ext::shared_ptr<VolatilityConfig>& b) {
555 QL_REQUIRE(a && b,
556 "VolatilityConfigBuilder fails to sort the configs, can not compare a nullptr");
557 return *a < *b;
558 });
559}
std::vector< QuantLib::ext::shared_ptr< VolatilityConfig > > volatilityConfig_
static XMLNode * getNextSibling(XMLNode *node, const string &name="")
Get a node's next sibling node.