Update of /cvsroot/quantlibaddin/QuantLibAddin/qlo
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv21706/qlo
Modified Files:
conversions.hpp enumclassctors.cpp enumclassctors.hpp
typefactory.hpp
Log Message:
Euribor as Enumerated Class
Index: conversions.hpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/conversions.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** conversions.hpp 22 Jun 2006 10:56:36 -0000 1.5
--- conversions.hpp 4 Jul 2006 08:42:52 -0000 1.6
***************
*** 28,34 ****
#include <ql/calendar.hpp>
#include <ql/interestrate.hpp>
! #include <ohxl/conversions.hpp>
#include <vector>
namespace QuantLibAddin {
--- 28,125 ----
#include <ql/calendar.hpp>
#include <ql/interestrate.hpp>
! #include <qlo/handle.hpp>
#include <vector>
+ // Accept an id of an Object in the Repository and return a QuantLib::Handle<qlClass>.
+ // 1) If the id is an empty string then return an empty handle
+ // 2) If the Object is of class QuantLibAddin::Handle then return the contained QuantLib::Handle<qlClass>
+ // 3) If the Object is of class QuantLibAddin::qloClass then convert it to a QuantLib::Handle<qlClass>
+ // 4) Otherwise the Object is of an unexpected class so raise an exception
+
+ template <class qlClass, class qloClass>
+ inline QuantLib::Handle<qlClass> libToHandle(const std::string &id) {
+ if (id.empty()) {
+ return QuantLib::Handle<qlClass>();
+ }
+
+ OH_GET_OBJECT(objectPointer, id, ObjHandler::Object)
+ boost::shared_ptr<QuantLibAddin::Handle<qlClass> > handlePointer =
+ boost::dynamic_pointer_cast<QuantLibAddin::Handle<qlClass> >(objectPointer);
+
+ if (handlePointer) {
+ return handlePointer->getHandle();
+ } else {
+ boost::shared_ptr<qloClass> qloPointer =
+ boost::dynamic_pointer_cast<qloClass>(objectPointer);
+
+ if (qloPointer)
+ return QuantLib::Handle<qlClass>(
+ qloPointer->getLibraryObject<qlClass>());
+ else {
+ std::ostringstream msg;
+ msg << "error retrieving object with id '" << id
+ << "' from repository - this object could be converted neither "
+ << " to " << std::endl << " " << typeid(QuantLib::Handle<qlClass>).name()
+ << " nor " << std::endl << " " << typeid(qloClass).name();
+ throw ObjHandler::Exception(msg.str());
+ }
+ }
+ }
+
+ // Accept an id of an Object in the Repository and return a boost::shared_ptr<qlClass>.
+ // 1) If the Object is of class QuantLibAddin::Handle then return the contained boost::shared_ptr<qlClass>
+ // 2) If the Object is of class QuantLibAddin::qloClass then return the contained boost::shared_ptr<qlClass>
+ // 3) Otherwise the Object is of an unexpected class so raise an exception
+
+ template <class qlClass, class qloClass>
+ inline boost::shared_ptr<qlClass> handleToLib(const std::string &id) {
+
+ OH_GET_OBJECT(objectPointer, id, ObjHandler::Object)
+ boost::shared_ptr<QuantLibAddin::Handle<qlClass> > handlePointer =
+ boost::dynamic_pointer_cast<QuantLibAddin::Handle<qlClass> >(objectPointer);
+
+ if (handlePointer) {
+ return handlePointer->getHandle().currentLink();
+ } else {
+ boost::shared_ptr<qloClass> qloPointer =
+ boost::dynamic_pointer_cast<qloClass>(objectPointer);
+
+ if (qloPointer)
+ return qloPointer->getLibraryObject<qlClass>();
+ else {
+ std::ostringstream msg;
+ msg << "error retrieving object with id '" << id
+ << "' from repository - this object could be converted neither "
+ << " to " << std::endl << " " << typeid(QuantLib::Handle<qlClass>).name()
+ << " nor " << std::endl << " " << typeid(qloClass).name();
+ throw ObjHandler::Exception(msg.str());
+ }
+ }
+ }
+
+ // Accept a string which is the ID of either
+ // 1) A Euribor Enumerated Class
+ // 2) An Object of class Index (or its derived classes e.g. Xibor, Euribor)
+ template <class qlClass, class qloClass>
+ inline boost::shared_ptr<qlClass> convertEuribor(const std::string &id) {
+ if (id.empty()) {
+ return boost::shared_ptr<qlClass>();
+ }
+ if (QuantLibAddin::Create<boost::shared_ptr<QuantLib::Euribor> >().checkType(id)) {
+ boost::shared_ptr<QuantLib::Euribor> ret =
+ QuantLibAddin::Create<boost::shared_ptr<QuantLib::Euribor> >()(id);
+ boost::shared_ptr<qlClass> ret2 =
+ boost::dynamic_pointer_cast<qlClass>(ret);
+ if (ret2)
+ return ret2;
+ else
+ QL_FAIL("Unable to convert enumerated class with ID " << id <<
+ " to class " << typeid(qloClass).name());
+ } else {
+ OH_GET_REFERENCE(ret, id, qloClass, qlClass)
+ return ret;
+ }
+ }
+
namespace QuantLibAddin {
Index: enumclassctors.cpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/enumclassctors.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** enumclassctors.cpp 3 Jul 2006 13:25:52 -0000 1.2
--- enumclassctors.cpp 4 Jul 2006 08:42:52 -0000 1.3
***************
*** 18,21 ****
--- 18,23 ----
#include <qlo/enumclassctors.hpp>
+ #include <qlo/conversions.hpp>
+ #include <qlo/termstructures.hpp>
namespace QuantLibAddin {
***************
*** 187,191 ****
/* *** Interpolation *** */
! boost::shared_ptr<QuantLib::Interpolation> Linear_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin) {
return boost::shared_ptr<QuantLib::Interpolation>(
--- 189,193 ----
/* *** Interpolation *** */
! boost::shared_ptr<QuantLib::Interpolation> LINEAR_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin) {
return boost::shared_ptr<QuantLib::Interpolation>(
***************
*** 193,197 ****
xBegin, xEnd, yBegin));
}
! boost::shared_ptr<QuantLib::Interpolation> BackwardFlat_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin) {
return boost::shared_ptr<QuantLib::Interpolation>(
--- 195,199 ----
xBegin, xEnd, yBegin));
}
! boost::shared_ptr<QuantLib::Interpolation> BACKWARDFLAT_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin) {
return boost::shared_ptr<QuantLib::Interpolation>(
***************
*** 199,203 ****
xBegin, xEnd, yBegin));
}
! boost::shared_ptr<QuantLib::Interpolation> ForwardFlat_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin) {
return boost::shared_ptr<QuantLib::Interpolation>(
--- 201,205 ----
xBegin, xEnd, yBegin));
}
! boost::shared_ptr<QuantLib::Interpolation> FORWARDFLAT_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin) {
return boost::shared_ptr<QuantLib::Interpolation>(
***************
*** 207,211 ****
/* *** Interpolation2D *** */
! boost::shared_ptr<QuantLib::Interpolation2D> Bilinear_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin, dbl_itr& yEnd,
const QuantLib::Matrix& zData) {
--- 209,213 ----
/* *** Interpolation2D *** */
! boost::shared_ptr<QuantLib::Interpolation2D> BILINEAR_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin, dbl_itr& yEnd,
const QuantLib::Matrix& zData) {
***************
*** 214,218 ****
xBegin, xEnd, yBegin, yEnd, zData));
}
! boost::shared_ptr<QuantLib::Interpolation2D> BicubicSpline(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin, dbl_itr& yEnd,
const QuantLib::Matrix& zData) {
--- 216,220 ----
xBegin, xEnd, yBegin, yEnd, zData));
}
! boost::shared_ptr<QuantLib::Interpolation2D> BICUBICSPLINE(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin, dbl_itr& yEnd,
const QuantLib::Matrix& zData) {
***************
*** 222,225 ****
--- 224,349 ----
}
+ /* *** EURIBOR *** */
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_SW(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::EuriborSW(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_2W(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor2W(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_3W(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor3W(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_1M(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor1M(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_2M(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor2M(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_3M(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor3M(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_4M(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor4M(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_5M(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor5M(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_6M(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor6M(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_7M(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor7M(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_8M(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor8M(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_9M(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor9M(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_10M(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor10M(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_11M(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor11M(handleYieldTermStructure));
+ }
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_1Y(
+ const std::string& handleYieldTermStructureID) {
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure =
+ libToHandle<QuantLib::YieldTermStructure, QuantLibAddin::YieldTermStructure>
+ (handleYieldTermStructureID);
+ return boost::shared_ptr<QuantLib::Euribor>(
+ new QuantLib::Euribor1Y(handleYieldTermStructure));
+ }
+
}
Index: enumclassctors.hpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/enumclassctors.hpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** enumclassctors.hpp 3 Jul 2006 13:25:52 -0000 1.2
--- enumclassctors.hpp 4 Jul 2006 08:42:52 -0000 1.3
***************
*** 43,46 ****
--- 43,47 ----
const QuantLib::Option::Type& optionType,
const double &moneyness);
+
/* *** StrikedTypePayoff - strike & strikeIncrement *** */
boost::shared_ptr<QuantLib::StrikedTypePayoff> SUPERSHARE_Payoff(
***************
*** 88,106 ****
/* *** Interpolation *** */
! boost::shared_ptr<QuantLib::Interpolation> Linear_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin);
! boost::shared_ptr<QuantLib::Interpolation> BackwardFlat_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin);
! boost::shared_ptr<QuantLib::Interpolation> ForwardFlat_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin);
/* *** Interpolation2D *** */
! boost::shared_ptr<QuantLib::Interpolation2D> Bilinear_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin, dbl_itr& yEnd,
const QuantLib::Matrix& zData);
! boost::shared_ptr<QuantLib::Interpolation2D> BicubicSpline(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin, dbl_itr& yEnd,
const QuantLib::Matrix& zData);
}
--- 89,139 ----
/* *** Interpolation *** */
! boost::shared_ptr<QuantLib::Interpolation> LINEAR_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin);
! boost::shared_ptr<QuantLib::Interpolation> BACKWARDFLAT_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin);
! boost::shared_ptr<QuantLib::Interpolation> FORWARDFLAT_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin);
/* *** Interpolation2D *** */
! boost::shared_ptr<QuantLib::Interpolation2D> BILINEAR_Interpolation(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin, dbl_itr& yEnd,
const QuantLib::Matrix& zData);
! boost::shared_ptr<QuantLib::Interpolation2D> BICUBICSPLINE(
dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin, dbl_itr& yEnd,
const QuantLib::Matrix& zData);
+ /* *** EURIBOR *** */
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_SW(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_2W(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_3W(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_1M(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_2M(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_3M(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_4M(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_5M(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_6M(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_7M(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_8M(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_9M(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_10M(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_11M(
+ const std::string& handleYieldTermStructureID);
+ boost::shared_ptr<QuantLib::Euribor> EURIBOR_1Y(
+ const std::string& handleYieldTermStructureID);
+
}
Index: typefactory.hpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/typefactory.hpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** typefactory.hpp 3 Jul 2006 13:25:52 -0000 1.14
--- typefactory.hpp 4 Jul 2006 08:42:52 -0000 1.15
***************
*** 26,29 ****
--- 26,30 ----
#include <ql/Math/interpolation2D.hpp>
#include <oh/exception.hpp>
+ #include <ql/Indexes/euribor.hpp>
namespace QuantLibAddin {
***************
*** 33,37 ****
protected:
template<typename ConstructorSignature>
! ConstructorSignature getType(const std::string& id, bool failIfNotFound = true) {
TypeMapPtr type_map = getTypeMap();
std::string idUpper = QuantLib::uppercase(id);
--- 34,38 ----
protected:
template<typename ConstructorSignature>
! ConstructorSignature getType(const std::string& id) {
TypeMapPtr type_map = getTypeMap();
std::string idUpper = QuantLib::uppercase(id);
***************
*** 39,46 ****
if (QuantLib::uppercase(i->first) == idUpper)
return static_cast<ConstructorSignature>(i->second);
! if (failIfNotFound)
! throw ObjHandler::Exception("Unknown id for Type: " + id);
! else
! return 0;
}
private:
--- 40,59 ----
if (QuantLib::uppercase(i->first) == idUpper)
return static_cast<ConstructorSignature>(i->second);
! QL_FAIL("Unknown id for Type: " + id);
! }
! bool checkType(const std::string& id) {
! TypeMapPtr type_map;
! AllTypeMap::const_iterator i =
! RegistryClass::instance().getAllTypesMap().find(typeid(T).name());
! if (i == RegistryClass::instance().getAllTypesMap().end()) {
! return false;
! } else {
! type_map = i->second;
! }
! std::string idUpper = QuantLib::uppercase(id);
! for (TypeMap::iterator i = type_map->begin(); i != type_map->end(); i++)
! if (QuantLib::uppercase(i->first) == idUpper)
! return true;
! return false;
}
private:
***************
*** 66,70 ****
return *(getType<T*>(id));
}
! using RegistryManager<T, EnumTypeRegistry>::getType;
};
--- 79,83 ----
return *(getType<T*>(id));
}
! using RegistryManager<T, EnumTypeRegistry>::checkType;
};
***************
*** 159,162 ****
--- 172,193 ----
};
+ /* *** EURIBOR *** */
+ typedef boost::shared_ptr<QuantLib::Euribor>(*EuriborConstructor)(
+ const std::string& handleYieldTermStructureID);
+
+ template<>
+ class Create<boost::shared_ptr<QuantLib::Euribor> > :
+ private RegistryManager<QuantLib::Euribor, EnumClassRegistry> {
+ public:
+ boost::shared_ptr<QuantLib::Euribor> operator() (
+ const std::string& euriborID,
+ const std::string& handleYieldTermStructureID = "") {
+ EuriborConstructor euriborConstructor =
+ getType<EuriborConstructor>(euriborID);
+ return euriborConstructor(handleYieldTermStructureID);
+ }
+ using RegistryManager<QuantLib::Euribor, EnumClassRegistry>::checkType;
+ };
+
}
|