[QuantLibAddin-cvs] QuantLibAddin/qlo typefactory.hpp, 1.24.2.3, 1.24.2.4
Brought to you by:
ericehlers,
nando
|
From: Eric E. <eri...@us...> - 2006-08-04 18:18:16
|
Update of /cvsroot/quantlibaddin/QuantLibAddin/qlo In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv10181 Modified Files: Tag: R000313f0-branch typefactory.hpp Log Message: fix for gcc Index: typefactory.hpp =================================================================== RCS file: /cvsroot/quantlibaddin/QuantLibAddin/qlo/typefactory.hpp,v retrieving revision 1.24.2.3 retrieving revision 1.24.2.4 diff -C2 -d -r1.24.2.3 -r1.24.2.4 *** typefactory.hpp 3 Aug 2006 18:05:22 -0000 1.24.2.3 --- typefactory.hpp 4 Aug 2006 18:18:11 -0000 1.24.2.4 *************** *** 48,53 **** class RegistryManager { protected: ! template<typename KeyClass, typename ConstructorSignature> ! ConstructorSignature getType(const KeyClass& id); bool checkType(const std::string& id) { --- 48,61 ---- class RegistryManager { protected: ! template<typename KeyClass> ! void *getType(const KeyClass& id) { ! typename RegistryClass::TypeMapPtr type_map = getTypeMap(); ! KeyClass idUpper = uppercase(id); ! typename RegistryClass::TypeMap::iterator i; ! for (i = type_map->begin(); i != type_map->end(); i++) ! if (uppercase(i->first) == idUpper) ! return i->second; ! QL_FAIL("Unknown id for Type: " << id); ! } bool checkType(const std::string& id) { *************** *** 81,98 **** }; - template<typename T, typename RegistryClass> - template<typename KeyClass, typename ConstructorSignature> - ConstructorSignature - RegistryManager<T, RegistryClass>::getType(const KeyClass& id) { - typename RegistryClass::TypeMapPtr type_map = getTypeMap(); - KeyClass idUpper = uppercase(id); - typename RegistryClass::TypeMap::iterator i; - for (i = type_map->begin(); i != type_map->end(); i++) - if (uppercase(i->first) == idUpper) - //return static_cast<ConstructorSignature>(i->second); - return (ConstructorSignature)(i->second); - QL_FAIL("Unknown id for Type: " << id); - } - /* *** Enumerated Types *** */ template<typename T> --- 89,92 ---- *************** *** 100,105 **** public: T operator()(const std::string& id) { ! //return *(getType<std::string, T*>(id)); ! return *(this->getType(id)); } using RegistryManager<T, EnumTypeRegistry>::checkType; --- 94,98 ---- public: T operator()(const std::string& id) { ! return *(static_cast<T*>(this->getType(id))); } using RegistryManager<T, EnumTypeRegistry>::checkType; *************** *** 123,127 **** const double& strike) { StrikedTypePayoffConstructor1 strikedTypePayoffConstructor = ! getType<std::string, StrikedTypePayoffConstructor1>(payoffID); return strikedTypePayoffConstructor(optionType, strike); } --- 116,120 ---- const double& strike) { StrikedTypePayoffConstructor1 strikedTypePayoffConstructor = ! (StrikedTypePayoffConstructor1)(getType(payoffID)); return strikedTypePayoffConstructor(optionType, strike); } *************** *** 132,136 **** const double& strikeIncrement) { StrikedTypePayoffConstructor2 strikedTypePayoffConstructor = ! getType<std::string, StrikedTypePayoffConstructor2>(payoffID); return strikedTypePayoffConstructor(optionType, strike, strikeIncrement); } --- 125,129 ---- const double& strikeIncrement) { StrikedTypePayoffConstructor2 strikedTypePayoffConstructor = ! (StrikedTypePayoffConstructor2)(getType(payoffID)); return strikedTypePayoffConstructor(optionType, strike, strikeIncrement); } *************** *** 150,154 **** QL_REQUIRE(timeSteps>0, "timeSteps must be positive"); PricingEngineConstructor pricingEngineConstructor = ! getType<std::string, PricingEngineConstructor>(engineID); return pricingEngineConstructor(timeSteps); } --- 143,147 ---- QL_REQUIRE(timeSteps>0, "timeSteps must be positive"); PricingEngineConstructor pricingEngineConstructor = ! (PricingEngineConstructor)(getType(engineID)); return pricingEngineConstructor(timeSteps); } *************** *** 168,172 **** dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin) { InterpolationConstructor interpolationConstructor = ! getType<std::string, InterpolationConstructor>(interpolationID); return interpolationConstructor(xBegin, xEnd, yBegin); } --- 161,165 ---- dbl_itr& xBegin, dbl_itr& xEnd, dbl_itr& yBegin) { InterpolationConstructor interpolationConstructor = ! (InterpolationConstructor)(getType(interpolationID)); return interpolationConstructor(xBegin, xEnd, yBegin); } *************** *** 186,190 **** const QuantLib::Matrix& zData) { Interpolation2DConstructor interpolation2DConstructor = ! getType<std::string, Interpolation2DConstructor>(interpolationID); return interpolation2DConstructor(xBegin, xEnd, yBegin, yEnd, zData); } --- 179,183 ---- const QuantLib::Matrix& zData) { Interpolation2DConstructor interpolation2DConstructor = ! (Interpolation2DConstructor)(getType(interpolationID)); return interpolation2DConstructor(xBegin, xEnd, yBegin, yEnd, zData); } *************** *** 203,207 **** const std::string& handleYieldTermStructureID = "") { EuriborConstructor euriborConstructor = ! getType<std::string, EuriborConstructor>(euriborID); return euriborConstructor(handleYieldTermStructureID); } --- 196,200 ---- const std::string& handleYieldTermStructureID = "") { EuriborConstructor euriborConstructor = ! (EuriborConstructor)(getType(euriborID)); return euriborConstructor(handleYieldTermStructureID); } *************** *** 260,264 **** KeyPair key(traitsID, interpolatorID); YieldTermStructureConstructor yieldTermStructureConstructor = ! getType<KeyPair, YieldTermStructureConstructor>(key); return yieldTermStructureConstructor(nDays, calendar, rateHelpers, dayCounter); } --- 253,257 ---- KeyPair key(traitsID, interpolatorID); YieldTermStructureConstructor yieldTermStructureConstructor = ! (YieldTermStructureConstructor)(getType(key)); return yieldTermStructureConstructor(nDays, calendar, rateHelpers, dayCounter); } |