Update of /cvsroot/quantlibaddin/QuantLibAddin/qlo
In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv9648
Modified Files:
calendarfactory.cpp typefactory.hpp
Log Message:
fix the calendar factory for gcc
Index: calendarfactory.cpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/calendarfactory.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** calendarfactory.cpp 28 Sep 2006 12:51:51 -0000 1.6
--- calendarfactory.cpp 4 Oct 2006 13:33:52 -0000 1.7
***************
*** 28,37 ****
*/
- Create<QuantLib::Calendar>::Create() {
- jcCtorMap[2] = &QuantLibAddin::Create<QuantLib::Calendar>::makeJointCalendar2;
- jcCtorMap[3] = &QuantLibAddin::Create<QuantLib::Calendar>::makeJointCalendar3;
- jcCtorMap[4] = &QuantLibAddin::Create<QuantLib::Calendar>::makeJointCalendar4;
- }
-
QuantLib::Calendar Create<QuantLib::Calendar>::operator()(const std::string &id) {
idOriginal = id;
--- 28,31 ----
***************
*** 46,51 ****
} else {
// It doesn't - create it, add it to the registry, and return it.
! MakeJointCalendar makeJointCalendar = jcCtorMap[calendarIDs.size()];
! QuantLib::Calendar *jointCalendar = (this->*(makeJointCalendar))();
registerType(idFull, jointCalendar);
return *jointCalendar;
--- 40,44 ----
} else {
// It doesn't - create it, add it to the registry, and return it.
! QuantLib::Calendar *jointCalendar = makeJointCalendar(calendarIDs.size());
registerType(idFull, jointCalendar);
return *jointCalendar;
***************
*** 135,138 ****
--- 128,153 ----
}
+ /*
+ Wrappers for the various QuantLib::JointCalendar constructors.
+ */
+
+ QuantLib::Calendar *Create<QuantLib::Calendar>::makeJointCalendar(
+ const unsigned int &numCals) {
+ switch (numCals) {
+ case 2:
+ return makeJointCalendar2();
+ case 3:
+ return makeJointCalendar3();
+ case 4:
+ return makeJointCalendar4();
+ // if the end user provided the wrong #/calendars, the error
+ // would have been detected earlier in parseID(), and the case
+ // below is just a sanity check.
+ default:
+ QL_FAIL("JointCalendar constructor expects 2, 3, or 4 "
+ "calendars - " << numCals << " were provided");
+ }
+ }
+
QuantLib::Calendar *Create<QuantLib::Calendar>::makeJointCalendar2() {
QuantLib::Calendar *calendar1 =
Index: typefactory.hpp
===================================================================
RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/typefactory.hpp,v
retrieving revision 1.43
retrieving revision 1.44
diff -C2 -d -r1.43 -r1.44
*** typefactory.hpp 28 Sep 2006 11:27:43 -0000 1.43
--- typefactory.hpp 4 Oct 2006 13:33:52 -0000 1.44
***************
*** 116,121 ****
/* *** Calendar *** */
- typedef QuantLib::Calendar* (Create<QuantLib::Calendar>::* MakeJointCalendar)();
-
template<>
class Create<QuantLib::Calendar> :
--- 116,119 ----
***************
*** 131,135 ****
bool testID();
void parseID();
! std::map<int, MakeJointCalendar> jcCtorMap;
QuantLib::Calendar *makeJointCalendar2();
QuantLib::Calendar *makeJointCalendar3();
--- 129,133 ----
bool testID();
void parseID();
! QuantLib::Calendar *makeJointCalendar(const unsigned int&);
QuantLib::Calendar *makeJointCalendar2();
QuantLib::Calendar *makeJointCalendar3();
|