long ohObjectSave( const std::vector<std::string>& ObjectList, const std::string &Filename, const ObjectHandler::property_t &Overwrite, const ObjectHandler::property_t &IncludeGroups, const ObjectHandler::property_t &Trigger) { try { // convert input datatypes to C++ datatypes bool OverwriteCpp = ObjectHandler::convert2<bool>( Overwrite, "Overwrite", false); bool IncludeGroupsCpp = ObjectHandler::convert2<bool>( IncludeGroups, "IncludeGroups", true); // invoke the utility function long returnValue = ObjectHandler::SerializationFactory::instance().saveObject( ObjectList, Filename, OverwriteCpp, IncludeGroupsCpp); // convert and return the return value return returnValue; } catch (const std::exception &e) { OH_FAIL("Error in function ohObjectSave : " << e.what()); } }
void qlAbcdAtmVolCurve::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) { std::string nameUpper = boost::algorithm::to_upper_copy(name); if(strcmp(nameUpper.c_str(), "OBJECTID")==0) objectId_ = boost::get<std::string>(value); else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0) className_ = boost::get<std::string>(value); else if(strcmp(nameUpper.c_str(), "SETTLEMENTDAYS")==0) SettlementDays_ = ObjectHandler::convert2<long>(value); else if(strcmp(nameUpper.c_str(), "CALENDAR")==0) Calendar_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "OPTIONTENORS")==0) OptionTenors_ = ObjectHandler::vector::convert2<ObjectHandler::property_t>(value, nameUpper); else if(strcmp(nameUpper.c_str(), "VOLATILITIESQUOTES")==0) VolatilitiesQuotes_ = ObjectHandler::vector::convert2<ObjectHandler::property_t>(value, nameUpper); else if(strcmp(nameUpper.c_str(), "INCLUSIONININTERPOLATION")==0) InclusionInInterpolation_ = ObjectHandler::vector::convert2<bool>(value, nameUpper); else if(strcmp(nameUpper.c_str(), "CONVENTION")==0) Convention_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "DAYCOUNTER")==0) DayCounter_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "PERMANENT")==0) Permanent_ = ObjectHandler::convert2<bool>(value); else OH_FAIL("Error: attempt to set non-existent Property: '" + name + "'"); }
ObjectHandler::property_t qlInterpolatedYieldCurve::getSystemProperty(const std::string& name) const { std::string nameUpper = boost::algorithm::to_upper_copy(name); if(strcmp(nameUpper.c_str(), "OBJECTID")==0) return objectId_; else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0) return className_; else if(strcmp(nameUpper.c_str(), "REFDATE")==0) return RefDate_; else if(strcmp(nameUpper.c_str(), "DATES")==0) return Dates_; else if(strcmp(nameUpper.c_str(), "DATA")==0) return Data_; else if(strcmp(nameUpper.c_str(), "CALENDAR")==0) return Calendar_; else if(strcmp(nameUpper.c_str(), "DAYCOUNTER")==0) return DayCounter_; else if(strcmp(nameUpper.c_str(), "JUMPS")==0) return Jumps_; else if(strcmp(nameUpper.c_str(), "JUMPDATES")==0) return JumpDates_; else if(strcmp(nameUpper.c_str(), "TRAITSID")==0) return TraitsID_; else if(strcmp(nameUpper.c_str(), "INTERPOLATORID")==0) return InterpolatorID_; else if(strcmp(nameUpper.c_str(), "PERMANENT")==0) return Permanent_; else OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'"); }
void qlInterpolatedYieldCurve::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) { std::string nameUpper = boost::algorithm::to_upper_copy(name); if(strcmp(nameUpper.c_str(), "OBJECTID")==0) objectId_ = boost::get<std::string>(value); else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0) className_ = boost::get<std::string>(value); else if(strcmp(nameUpper.c_str(), "REFDATE")==0) RefDate_ = value; else if(strcmp(nameUpper.c_str(), "DATES")==0) Dates_ = ObjectHandler::vector::convert2<ObjectHandler::property_t>(value, nameUpper); else if(strcmp(nameUpper.c_str(), "DATA")==0) Data_ = ObjectHandler::vector::convert2<double>(value, nameUpper); else if(strcmp(nameUpper.c_str(), "CALENDAR")==0) Calendar_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "DAYCOUNTER")==0) DayCounter_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "JUMPS")==0) Jumps_ = ObjectHandler::vector::convert2<ObjectHandler::property_t>(value, nameUpper); else if(strcmp(nameUpper.c_str(), "JUMPDATES")==0) JumpDates_ = ObjectHandler::vector::convert2<ObjectHandler::property_t>(value, nameUpper); else if(strcmp(nameUpper.c_str(), "TRAITSID")==0) TraitsID_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "INTERPOLATORID")==0) InterpolatorID_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "PERMANENT")==0) Permanent_ = ObjectHandler::convert2<bool>(value); else OH_FAIL("Error: attempt to set non-existent Property: '" + name + "'"); }
ObjectHandler::property_t qlAbcdAtmVolCurve::getSystemProperty(const std::string& name) const { std::string nameUpper = boost::algorithm::to_upper_copy(name); if(strcmp(nameUpper.c_str(), "OBJECTID")==0) return objectId_; else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0) return className_; else if(strcmp(nameUpper.c_str(), "SETTLEMENTDAYS")==0) return SettlementDays_; else if(strcmp(nameUpper.c_str(), "CALENDAR")==0) return Calendar_; else if(strcmp(nameUpper.c_str(), "OPTIONTENORS")==0) return OptionTenors_; else if(strcmp(nameUpper.c_str(), "VOLATILITIESQUOTES")==0) return VolatilitiesQuotes_; else if(strcmp(nameUpper.c_str(), "INCLUSIONININTERPOLATION")==0) return InclusionInInterpolation_; else if(strcmp(nameUpper.c_str(), "CONVENTION")==0) return Convention_; else if(strcmp(nameUpper.c_str(), "DAYCOUNTER")==0) return DayCounter_; else if(strcmp(nameUpper.c_str(), "PERMANENT")==0) return Permanent_; else OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'"); }
bool CALSettingsSetEvaluationDate( const ObjectHandler::property_t &EvalDate, const ObjectHandler::property_t &Trigger) { try { // convert input datatypes to QuantLib datatypes QuantLib::Date EvalDateLib = ObjectHandler::convert2<QuantLib::Date>( EvalDate, "EvalDate", QuantLib::Date()); // invoke the utility function static bool returnValue = true; QuantLibAddin::qlSettingsSetEvaluationDate( EvalDateLib); // convert and return the return value return returnValue; } catch (const std::exception &e) { OH_FAIL("Error in function CALSettingsSetEvaluationDate : " << e.what()); } }
RepositoryXL &RepositoryXL::instance() { if (instance_) { RepositoryXL *ret = dynamic_cast<RepositoryXL*>(instance_); if (ret) return *ret; } OH_FAIL("Attempt to reference uninitialized RepositoryXL object"); }
std::string ohObjectSaveString( const std::vector<std::string>& ObjectList, const ObjectHandler::property_t &Overwrite, const ObjectHandler::property_t &Trigger) { try { // convert input datatypes to C++ datatypes bool OverwriteCpp = ObjectHandler::convert2<bool>( Overwrite, "Overwrite", false); // convert input datatypes to Object references std::vector<boost::shared_ptr<ObjectHandler::Object> > ObjectListObjPtr = ObjectHandler::getObjectVector<ObjectHandler::Object>(ObjectList); // invoke the utility function std::string returnValue = ObjectHandler::SerializationFactory::instance().saveObjectString( ObjectListObjPtr, OverwriteCpp); // convert and return the return value return returnValue; } catch (const std::exception &e) { OH_FAIL("Error in function ohObjectSaveString : " << e.what()); } }
void qlAssetSwap::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) { std::string nameUpper = boost::algorithm::to_upper_copy(name); if(strcmp(nameUpper.c_str(), "OBJECTID")==0) objectId_ = boost::get<std::string>(value); else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0) className_ = boost::get<std::string>(value); else if(strcmp(nameUpper.c_str(), "PAYBONDCOUPON")==0) PayBondCoupon_ = ObjectHandler::convert2<bool>(value); else if(strcmp(nameUpper.c_str(), "BOND")==0) Bond_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "CLEANPRICE")==0) CleanPrice_ = ObjectHandler::convert2<double>(value); else if(strcmp(nameUpper.c_str(), "IBORINDEX")==0) IborIndex_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "SPREAD")==0) Spread_ = ObjectHandler::convert2<double>(value); else if(strcmp(nameUpper.c_str(), "FLOATINGLEGSCHEDULE")==0) FloatingLegSchedule_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "FLOATINGLEGDAYCOUNTER")==0) FloatingLegDayCounter_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "PARASSETSWAP")==0) ParAssetSwap_ = ObjectHandler::convert2<bool>(value); else if(strcmp(nameUpper.c_str(), "PERMANENT")==0) Permanent_ = ObjectHandler::convert2<bool>(value); else OH_FAIL("Error: attempt to set non-existent Property: '" + name + "'"); }
std::vector<std::string> ohObjectLoadString( const std::string &Xml, const ObjectHandler::property_t &Overwrite, const ObjectHandler::property_t &Trigger) { try { // convert input datatypes to C++ datatypes bool OverwriteCpp = ObjectHandler::convert2<bool>( Overwrite, "Overwrite", false); // invoke the utility function std::vector<std::string> returnValue = ObjectHandler::SerializationFactory::instance().loadObjectString( Xml, OverwriteCpp); // convert and return the return value return returnValue; } catch (const std::exception &e) { OH_FAIL("Error in function ohObjectLoadString : " << e.what()); } }
void qlSchedule::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) { std::string nameUpper = boost::algorithm::to_upper_copy(name); if(strcmp(nameUpper.c_str(), "OBJECTID")==0) objectId_ = boost::get<std::string>(value); else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0) className_ = boost::get<std::string>(value); else if(strcmp(nameUpper.c_str(), "EFFECTIVEDATE")==0) EffectiveDate_ = value; else if(strcmp(nameUpper.c_str(), "TERMINATIONDATE")==0) TerminationDate_ = value; else if(strcmp(nameUpper.c_str(), "TENOR")==0) Tenor_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "CALENDAR")==0) Calendar_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "CONVENTION")==0) Convention_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "TERMDATECONV")==0) TermDateConv_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "GENRULE")==0) GenRule_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "ENDOFMONTH")==0) EndOfMonth_ = ObjectHandler::convert2<bool>(value); else if(strcmp(nameUpper.c_str(), "FIRSTDATE")==0) FirstDate_ = value; else if(strcmp(nameUpper.c_str(), "NEXTTOLASTDATE")==0) NextToLastDate_ = value; else if(strcmp(nameUpper.c_str(), "PERMANENT")==0) Permanent_ = ObjectHandler::convert2<bool>(value); else OH_FAIL("Error: attempt to set non-existent Property: '" + name + "'"); }
void operToOper(OPER *xTarget, const OPER *xSource) { if (xSource->xltype == xltypeNum) { xTarget->xltype = xltypeNum; xTarget->val.num = xSource->val.num; return; } else if (xSource->xltype == xltypeStr) { // Must use type unsigned char (BYTE) to process the 0th byte of Excel byte-counted string unsigned char len = xSource->val.str[0]; xTarget->val.str = new char[ len + 1 ]; xTarget->xltype = xltypeStr | xlbitDLLFree; xTarget->val.str[0] = len; if (len) strncpy(xTarget->val.str + 1, xSource->val.str + 1, len); return; } else if (xSource->xltype == xltypeErr) { xTarget->xltype = xltypeErr; xTarget->val.err = xSource->val.err; return; } else if (xSource->xltype == xltypeNil) { xTarget->xltype = xltypeNil; return; } else { OH_FAIL("operToOper: unexpected OPER type: " << xSource->xltype); } }
ObjectHandler::property_t qlAssetSwap::getSystemProperty(const std::string& name) const { std::string nameUpper = boost::algorithm::to_upper_copy(name); if(strcmp(nameUpper.c_str(), "OBJECTID")==0) return objectId_; else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0) return className_; else if(strcmp(nameUpper.c_str(), "PAYBONDCOUPON")==0) return PayBondCoupon_; else if(strcmp(nameUpper.c_str(), "BOND")==0) return Bond_; else if(strcmp(nameUpper.c_str(), "CLEANPRICE")==0) return CleanPrice_; else if(strcmp(nameUpper.c_str(), "IBORINDEX")==0) return IborIndex_; else if(strcmp(nameUpper.c_str(), "SPREAD")==0) return Spread_; else if(strcmp(nameUpper.c_str(), "FLOATINGLEGSCHEDULE")==0) return FloatingLegSchedule_; else if(strcmp(nameUpper.c_str(), "FLOATINGLEGDAYCOUNTER")==0) return FloatingLegDayCounter_; else if(strcmp(nameUpper.c_str(), "PARASSETSWAP")==0) return ParAssetSwap_; else if(strcmp(nameUpper.c_str(), "PERMANENT")==0) return Permanent_; else OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'"); }
std::string qlIntegralNtdEngine( const std::string &ObjectId, const std::string &IntegrationStep, const std::string &YieldCurve, const ObjectHandler::property_t &Permanent, const ObjectHandler::property_t &Trigger, const bool &Overwrite) { try { // convert input datatypes to C++ datatypes bool PermanentCpp = ObjectHandler::convert2<bool>( Permanent, "Permanent", false); // convert input datatypes to QuantLib datatypes QuantLib::Period IntegrationStepLib; QuantLibAddin::cppToLibrary(IntegrationStep, IntegrationStepLib); // convert object IDs into library objects OH_GET_OBJECT(YieldCurveCoerce, YieldCurve, ObjectHandler::Object) QuantLib::Handle<QuantLib::YieldTermStructure> YieldCurveLibObj = QuantLibAddin::CoerceHandle< QuantLibAddin::YieldTermStructure, QuantLib::YieldTermStructure>()( YieldCurveCoerce); // Construct the Value Object boost::shared_ptr<ObjectHandler::ValueObject> valueObject( new QuantLibAddin::ValueObjects::qlIntegralNtdEngine( ObjectId, IntegrationStep, YieldCurve, PermanentCpp)); // Construct the Object boost::shared_ptr<ObjectHandler::Object> object( new QuantLibAddin::IntegralNtdEngine( valueObject, IntegrationStepLib, YieldCurveLibObj, PermanentCpp)); // Store the Object in the Repository std::string returnValue = ObjectHandler::Repository::instance().storeObject(ObjectId, object, Overwrite, valueObject); // Convert and return the return value return returnValue; } catch (const std::exception &e) { OH_FAIL("Error in function qlIntegralNtdEngine : " << e.what()); } }
ObjectHandler::property_t qlSchedule::getSystemProperty(const std::string& name) const { std::string nameUpper = boost::algorithm::to_upper_copy(name); if(strcmp(nameUpper.c_str(), "OBJECTID")==0) return objectId_; else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0) return className_; else if(strcmp(nameUpper.c_str(), "EFFECTIVEDATE")==0) return EffectiveDate_; else if(strcmp(nameUpper.c_str(), "TERMINATIONDATE")==0) return TerminationDate_; else if(strcmp(nameUpper.c_str(), "TENOR")==0) return Tenor_; else if(strcmp(nameUpper.c_str(), "CALENDAR")==0) return Calendar_; else if(strcmp(nameUpper.c_str(), "CONVENTION")==0) return Convention_; else if(strcmp(nameUpper.c_str(), "TERMDATECONV")==0) return TermDateConv_; else if(strcmp(nameUpper.c_str(), "GENRULE")==0) return GenRule_; else if(strcmp(nameUpper.c_str(), "ENDOFMONTH")==0) return EndOfMonth_; else if(strcmp(nameUpper.c_str(), "FIRSTDATE")==0) return FirstDate_; else if(strcmp(nameUpper.c_str(), "NEXTTOLASTDATE")==0) return NextToLastDate_; else if(strcmp(nameUpper.c_str(), "PERMANENT")==0) return Permanent_; else OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'"); }
void qlOvernightIndexedSwap::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) { std::string nameUpper = boost::algorithm::to_upper_copy(name); if(strcmp(nameUpper.c_str(), "OBJECTID")==0) objectId_ = boost::get<std::string>(value); else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0) className_ = boost::get<std::string>(value); else if(strcmp(nameUpper.c_str(), "PAYERRECEIVER")==0) PayerReceiver_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "NOMINAL")==0) Nominal_ = ObjectHandler::vector::convert2<double>(value, nameUpper); else if(strcmp(nameUpper.c_str(), "SCHEDULE")==0) Schedule_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "FIXEDRATE")==0) FixedRate_ = ObjectHandler::convert2<double>(value); else if(strcmp(nameUpper.c_str(), "FIXDAYCOUNTER")==0) FixDayCounter_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "OVERNIGHTINDEX")==0) OvernightIndex_ = ObjectHandler::convert2<std::string>(value); else if(strcmp(nameUpper.c_str(), "SPREAD")==0) Spread_ = ObjectHandler::convert2<double>(value); else if(strcmp(nameUpper.c_str(), "PERMANENT")==0) Permanent_ = ObjectHandler::convert2<bool>(value); else OH_FAIL("Error: attempt to set non-existent Property: '" + name + "'"); }
ObjectHandler::property_t qlOvernightIndexedSwap::getSystemProperty(const std::string& name) const { std::string nameUpper = boost::algorithm::to_upper_copy(name); if(strcmp(nameUpper.c_str(), "OBJECTID")==0) return objectId_; else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0) return className_; else if(strcmp(nameUpper.c_str(), "PAYERRECEIVER")==0) return PayerReceiver_; else if(strcmp(nameUpper.c_str(), "NOMINAL")==0) return Nominal_; else if(strcmp(nameUpper.c_str(), "SCHEDULE")==0) return Schedule_; else if(strcmp(nameUpper.c_str(), "FIXEDRATE")==0) return FixedRate_; else if(strcmp(nameUpper.c_str(), "FIXDAYCOUNTER")==0) return FixDayCounter_; else if(strcmp(nameUpper.c_str(), "OVERNIGHTINDEX")==0) return OvernightIndex_; else if(strcmp(nameUpper.c_str(), "SPREAD")==0) return Spread_; else if(strcmp(nameUpper.c_str(), "PERMANENT")==0) return Permanent_; else OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'"); }
std::string CALCapFloor( const std::string &ObjectId, const std::string &OptionType, const std::string &LegID, const std::vector<double>& Strikes, const ObjectHandler::property_t &Permanent, const ObjectHandler::property_t &Trigger, const bool &Overwrite) { try { // convert input datatypes to C++ datatypes bool PermanentCpp = ObjectHandler::convert2<bool>( Permanent, "Permanent", false); // convert input datatypes to QuantLib enumerated datatypes QuantLib::CapFloor::Type OptionTypeEnum = ObjectHandler::Create<QuantLib::CapFloor::Type>()(OptionType); // convert object IDs into library objects OH_GET_UNDERLYING(LegIDLibObj, LegID, QuantLibAddin::Leg, QuantLib::Leg) // Construct the Value Object boost::shared_ptr<ObjectHandler::ValueObject> valueObject( new QuantLibAddin::ValueObjects::CALCapFloor( ObjectId, OptionType, LegID, Strikes, PermanentCpp)); // Construct the Object boost::shared_ptr<ObjectHandler::Object> object( new QuantLibAddin::CapFloor( valueObject, OptionTypeEnum, LegIDLibObj, Strikes, PermanentCpp)); // Store the Object in the Repository std::string returnValue = ObjectHandler::Repository::instance().storeObject(ObjectId, object, Overwrite); // Convert and return the return value return returnValue; } catch (const std::exception &e) { OH_FAIL("Error in function CALCapFloor : " << e.what()); } }
value_t convert2(const container_t& c, const std::string ¶meterName) { try { return convert2<value_t, container_t>(c); } catch(const std::exception& e) { OH_FAIL("Error converting parameter '" << parameterName << "' : '" << e.what()); } }
value_t convert2(const container_t& c) { try { return c.operator value_t(); } catch(const std::exception& e) { OH_FAIL("Unable to convert type '" << c.type().name() << "' to type '" << typeid(value_t).name() << "' - " << e.what()); } }
std::string qlIssuer( const std::string &ObjectId, const ObjectHandler::property_t &DefaultCurves, const std::string &DefaultEvents, const ObjectHandler::property_t &Permanent, const ObjectHandler::property_t &Trigger, const bool &Overwrite) { try { // convert input datatypes to C++ datatypes std::string DefaultCurvesCpp = ObjectHandler::convert2<std::string>( DefaultCurves, "DefaultCurves", ""); bool PermanentCpp = ObjectHandler::convert2<bool>( Permanent, "Permanent", false); // convert object IDs into library objects OH_GET_REFERENCE_DEFAULT(DefaultCurvesLibObjPtr, DefaultCurvesCpp, QuantLibAddin::DefaultProbabilityTermStructure, QuantLib::DefaultProbabilityTermStructure) OH_GET_REFERENCE(DefaultEventsLibObjPtr, DefaultEvents, QuantLibAddin::DefaultEventSet, QuantLib::DefaultEventSet) // Construct the Value Object boost::shared_ptr<ObjectHandler::ValueObject> valueObject( new QuantLibAddin::ValueObjects::qlIssuer( ObjectId, DefaultCurvesCpp, DefaultEvents, PermanentCpp)); // Construct the Object boost::shared_ptr<ObjectHandler::Object> object( new QuantLibAddin::Issuer( valueObject, DefaultCurvesLibObjPtr, DefaultEventsLibObjPtr, PermanentCpp)); // Store the Object in the Repository std::string returnValue = ObjectHandler::Repository::instance().storeObject(ObjectId, object, Overwrite, valueObject); // Convert and return the return value return returnValue; } catch (const std::exception &e) { OH_FAIL("Error in function qlIssuer : " << e.what()); } }
std::string qlScheduleTruncated( const std::string &ObjectId, const std::string &OriginalSchedule, const ObjectHandler::property_t &TruncationDate, const ObjectHandler::property_t &Permanent, const ObjectHandler::property_t &Trigger, const bool &Overwrite) { try { // convert input datatypes to C++ datatypes bool PermanentCpp = ObjectHandler::convert2<bool>( Permanent, "Permanent", false); // convert input datatypes to QuantLib datatypes QuantLib::Date TruncationDateLib = ObjectHandler::convert2<QuantLib::Date>( TruncationDate, "TruncationDate"); // convert object IDs into library objects OH_GET_REFERENCE(OriginalScheduleLibObjPtr, OriginalSchedule, QuantLibAddin::Schedule, QuantLib::Schedule) // Construct the Value Object boost::shared_ptr<ObjectHandler::ValueObject> valueObject( new QuantLibAddin::ValueObjects::qlScheduleTruncated( ObjectId, OriginalSchedule, TruncationDate, PermanentCpp)); // Construct the Object boost::shared_ptr<ObjectHandler::Object> object( new QuantLibAddin::Schedule( valueObject, OriginalScheduleLibObjPtr, TruncationDateLib, PermanentCpp)); // Store the Object in the Repository std::string returnValue = ObjectHandler::Repository::instance().storeObject(ObjectId, object, Overwrite, valueObject); // Convert and return the return value return returnValue; } catch (const std::exception &e) { OH_FAIL("Error in function qlScheduleTruncated : " << e.what()); } }
std::string qlVanillaSwapFromSwapIndex( const std::string &ObjectId, const std::string &SwapIndex, const ObjectHandler::property_t &FixingDate, const ObjectHandler::property_t &Permanent, const ObjectHandler::property_t &Trigger, const bool &Overwrite) { try { // convert input datatypes to C++ datatypes bool PermanentCpp = ObjectHandler::convert2<bool>( Permanent, "Permanent", false); // convert input datatypes to QuantLib datatypes QuantLib::Date FixingDateLib = ObjectHandler::convert2<QuantLib::Date>( FixingDate, "FixingDate"); // convert object IDs into library objects OH_GET_REFERENCE(SwapIndexLibObjPtr, SwapIndex, QuantLibAddin::SwapIndex, QuantLib::SwapIndex) // Construct the Value Object boost::shared_ptr<ObjectHandler::ValueObject> valueObject( new QuantLibAddin::ValueObjects::qlVanillaSwapFromSwapIndex( ObjectId, SwapIndex, FixingDate, PermanentCpp)); // Construct the Object boost::shared_ptr<ObjectHandler::Object> object( new QuantLibAddin::VanillaSwap( valueObject, SwapIndexLibObjPtr, FixingDateLib, PermanentCpp)); // Store the Object in the Repository std::string returnValue = ObjectHandler::Repository::instance().storeObject(ObjectId, object, Overwrite, valueObject); // Convert and return the return value return returnValue; } catch (const std::exception &e) { OH_FAIL("Error in function qlVanillaSwapFromSwapIndex : " << e.what()); } }
value_t convert2(const container_t& c, const std::string ¶meterName, const value_t& defaultValue) { try { if(c.missing()) return defaultValue; return convert2<value_t, container_t>(c); } catch(const std::exception& e) { OH_FAIL("Error converting parameter '" << parameterName << "' : '" << e.what()); } }
inline void ObjectWrapper::recreate(){ try { object_ = SerializationFactory::instance().recreateObject( object_->properties()); dirty_ = false; updateTime_ = getTime(); } catch (const std::exception &e) { OH_FAIL("Error in function ObjectWrapper::recreate() : " << e.what()); } }
std::string CALVanillaOption( const std::string &ObjectId, const std::string &Payoff, const std::string &Exercise, const ObjectHandler::property_t &Permanent, const ObjectHandler::property_t &Trigger, const bool &Overwrite) { try { // convert input datatypes to C++ datatypes bool PermanentCpp = ObjectHandler::convert2<bool>( Permanent, "Permanent", false); // convert object IDs into library objects OH_GET_REFERENCE(PayoffLibObjPtr, Payoff, QuantLibAddin::StrikedTypePayoff, QuantLib::StrikedTypePayoff) OH_GET_REFERENCE(ExerciseLibObjPtr, Exercise, QuantLibAddin::Exercise, QuantLib::Exercise) // Construct the Value Object boost::shared_ptr<ObjectHandler::ValueObject> valueObject( new QuantLibAddin::ValueObjects::CALVanillaOption( ObjectId, Payoff, Exercise, PermanentCpp)); // Construct the Object boost::shared_ptr<ObjectHandler::Object> object( new QuantLibAddin::VanillaOption( valueObject, PayoffLibObjPtr, ExerciseLibObjPtr, PermanentCpp)); // Store the Object in the Repository std::string returnValue = ObjectHandler::Repository::instance().storeObject(ObjectId, object, Overwrite); // Convert and return the return value return returnValue; } catch (const std::exception &e) { OH_FAIL("Error in function CALVanillaOption : " << e.what()); } }
void ESTSValueObject::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) { std::string nameUpper = boost::algorithm::to_upper_copy(name); if (strcmp(nameUpper.c_str(), "OBJECTID")==0) objectId_ = boost::get<std::string>(value); else if (strcmp(nameUpper.c_str(), "CLASSNAME")==0) className_ = boost::get<std::string>(value); else if (strcmp(nameUpper.c_str(), "PERMANENT")==0) permanent_ = boost::get<bool>(value); else OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'"); }
ObjectHandler::property_t ESTSValueObject::getSystemProperty(const std::string& name) const { std::string nameUpper = boost::algorithm::to_upper_copy(name); if (strcmp(nameUpper.c_str(), "OBJECTID")==0) return objectId_; else if (strcmp(nameUpper.c_str(), "CLASSNAME")==0) return className_; else if (strcmp(nameUpper.c_str(), "PERMANENT")==0) //return (long)permanent_; return (bool)permanent_; else OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'"); }
ObjectHandler::property_t qlScheduleFromDateVector::getSystemProperty(const std::string& name) const { std::string nameUpper = boost::algorithm::to_upper_copy(name); if(strcmp(nameUpper.c_str(), "OBJECTID")==0) return objectId_; else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0) return className_; else if(strcmp(nameUpper.c_str(), "EFFECTIVEDATE")==0) return EffectiveDate_; else if(strcmp(nameUpper.c_str(), "PERMANENT")==0) return Permanent_; else OH_FAIL("Error: attempt to retrieve non-existent Property: '" + name + "'"); }
void qlScheduleFromDateVector::setSystemProperty(const std::string& name, const ObjectHandler::property_t& value) { std::string nameUpper = boost::algorithm::to_upper_copy(name); if(strcmp(nameUpper.c_str(), "OBJECTID")==0) objectId_ = boost::get<std::string>(value); else if(strcmp(nameUpper.c_str(), "CLASSNAME")==0) className_ = boost::get<std::string>(value); else if(strcmp(nameUpper.c_str(), "EFFECTIVEDATE")==0) EffectiveDate_ = ObjectHandler::vector::convert2<ObjectHandler::property_t>(value, nameUpper); else if(strcmp(nameUpper.c_str(), "PERMANENT")==0) Permanent_ = ObjectHandler::convert2<bool>(value); else OH_FAIL("Error: attempt to set non-existent Property: '" + name + "'"); }