Update of /cvsroot/quantlibaddin/QuantLibAddin/qlo
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv26647/qlo
Modified Files:
enumclassctors.cpp enumclassctors.hpp typefactory.hpp
Log Message:
link enumerated EURIBORs to a global Handle<YieldTermStructure>
Index: enumclassctors.cpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/enumclassctors.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** enumclassctors.cpp 10 Jul 2006 11:24:57 -0000 1.5
--- enumclassctors.cpp 10 Jul 2006 13:58:41 -0000 1.6
***************
*** 225,347 ****
/* *** 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));
}
--- 225,302 ----
/* *** Euribor *** */
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_SW() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::EuriborSW(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_2W() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor2W(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_3W() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor3W(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_1M() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor1M(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_2M() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor2M(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_3M() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor3M(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_4M() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor4M(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_5M() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor5M(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_6M() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor6M(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_7M() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor7M(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_8M() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor8M(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_9M() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor9M(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_10M() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor10M(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_11M() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor11M(
! EuriborHandle::instance().handleYieldTermStructure()));
}
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_1Y() {
return boost::shared_ptr<QuantLib::Euribor>(
! new QuantLib::Euribor1Y(
! EuriborHandle::instance().handleYieldTermStructure()));
}
Index: enumclassctors.hpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/enumclassctors.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** enumclassctors.hpp 10 Jul 2006 11:24:57 -0000 1.5
--- enumclassctors.hpp 10 Jul 2006 13:58:41 -0000 1.6
***************
*** 105,138 ****
/* *** 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);
/* *** YieldTermStructure *** */
--- 105,123 ----
/* *** Euribor *** */
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_SW();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_2W();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_3W();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_1M();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_2M();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_3M();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_4M();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_5M();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_6M();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_7M();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_8M();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_9M();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_10M();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_11M();
! boost::shared_ptr<QuantLib::Euribor> EURIBOR_1Y();
/* *** YieldTermStructure *** */
Index: typefactory.hpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/typefactory.hpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** typefactory.hpp 10 Jul 2006 11:24:57 -0000 1.17
--- typefactory.hpp 10 Jul 2006 13:58:41 -0000 1.18
***************
*** 208,211 ****
--- 208,226 ----
};
+ // a singleton to store the Handle<YieldTermStructure>
+ // shared by all enumerated Euribor classes
+ class EuriborHandle : public QuantLib::Singleton<EuriborHandle> {
+ friend class QuantLib::Singleton<EuriborHandle>;
+ public:
+ const QuantLib::Handle<QuantLib::YieldTermStructure> &handleYieldTermStructure() const {
+ return handleYieldTermStructure_;
+ }
+ void linkEuriborHandle(boost::shared_ptr<QuantLib::YieldTermStructure> yieldTermStructure) {
+ handleYieldTermStructure_.linkTo(yieldTermStructure);
+ }
+ private:
+ QuantLib::Handle<QuantLib::YieldTermStructure> handleYieldTermStructure_;
+ };
+
/* *** YieldTermStructure *** */
typedef boost::shared_ptr<QuantLib::YieldTermStructure>(*YieldTermStructureConstructor)(
|