hasquant-0.5.0.2: cbits/qlInstrument.h
// Discriminants for QlAdditionalResult.type, read by both the C++ shim and c2hs. Declared here,
// before the `#ifdef __cplusplus` guard that wraps the function prototypes, so c2hs (whose
// preprocessor does NOT define __cplusplus) can see and bind them with `{#enum ... #}`; the C++
// shim references the same names below.
enum AdditionalResultType {
AdditionalResultDouble = 0, // value holds a Real (double)
AdditionalResultString = 1, // value holds a std::string
AdditionalResultDoubleVector = 2, // value holds a std::vector<Real>
AdditionalResultUnknown = 3 // value is an unrecognised type; sval holds its C++ RTTI name
};
#ifdef __cplusplus
extern "C" {
#endif
// Flat, C-friendly projection of Instrument::additionalResults(), whose values are
// QuantLib's ext::any (std::any or boost::any depending on the QuantLib build). We pick
// four concrete shapes -- double, std::string, vector<Real>, and an "unknown" fallback that
// records the value's RTTI type name -- so no key is ever silently dropped or mislabelled.
// Every key, (when set) sval, and (when set) varr is strdup'd/heap-allocated and freed by
// qlFreeAdditionalResults.
struct QlAdditionalResult {
char *key; // strdup'd, freed by qlFreeAdditionalResults
int type; // AdditionalResultType discriminant
double dval; // valid iff type == AdditionalResultDouble
char *sval; // strdup'd (or NULL), freed by qlFreeAdditionalResults
double *varr; // heap array (or NULL), freed by qlFreeAdditionalResults; valid iff type == AdditionalResultDoubleVector
unsigned vlen; // varr's length
};
void qlInstrumentAdditionalResults(QlInstrument *instr, unsigned *len,
struct QlAdditionalResult **out, char **e);
void qlFreeAdditionalResults(unsigned len, struct QlAdditionalResult *out);
void qlInstrumentSetPricingEngine(QlInstrument *instr, QlPricingEngine *eng,
char **e);
double qlInstrumentNPV(QlInstrument *instr, char **e);
void qlFreeInstrument(QlInstrument *instr);
QlInstrument* qlCompositeInstrument(unsigned instrLen, QlInstrument **instrs, unsigned cLen, double *coeff, char **e);
double qlInstrumentErrorEstimate(QlInstrument* o, char **e);
int qlInstrumentIsExpired(QlInstrument* o, char **e);
int qlInstrumentValuationDate(QlInstrument* o, char **e);
void qlFreePayoff(QlPayoff *o);
void qlFreeBasketPayoff(QlBasketPayoff *o);
QlPayoff* qlBasketPayoffAsPayoff(QlBasketPayoff *o);
void qlFreeStrikedTypePayoff(QlStrikedTypePayoff *o);
QlTypePayoff* qlStrikedTypePayoffAsTypePayoff(QlStrikedTypePayoff *o);
void qlFreeTypePayoff(QlTypePayoff *o);
QlPayoff* qlTypePayoffAsPayoff(QlTypePayoff *o);
void qlFreePercentageStrikePayoff(QlPercentageStrikePayoff *o);
QlStrikedTypePayoff* qlPercentageStrikePayoffAsStrikedTypePayoff(QlPercentageStrikePayoff *o);
void qlFreePlainVanillaPayoff(QlPlainVanillaPayoff *o);
QlStrikedTypePayoff* qlPlainVanillaPayoffAsStrikedTypePayoff(QlPlainVanillaPayoff *o);
QlStrikedTypePayoff* qlAssetOrNothingPayoff(int type, double strike, char **e);
QlBasketPayoff* qlAverageBasketPayoff(QlPayoff* p, unsigned n, char **e);
QlBasketPayoff* qlAverageBasketPayoff1(QlPayoff* p, unsigned aLen, double* a, char **e);
QlStrikedTypePayoff* qlCashOrNothingPayoff(int type, double strike, double cashPayoff, char **e);
QlPayoff* qlDoubleStickyRatchetPayoff(double type1, double type2, double gearing1, double gearing2, double gearing3, double spread1, double spread2, double spread3, double initialValue1, double initialValue2, double accrualFactor, char **e);
QlTypePayoff* qlFloatingTypePayoff(int type, char **e);
QlPayoff* qlForwardTypePayoff(int type, double strike, char **e);
QlStrikedTypePayoff* qlGapPayoff(int type, double strike, double secondStrike, char **e);
QlBasketPayoff* qlMaxBasketPayoff(QlPayoff* p, char **e);
QlBasketPayoff* qlMinBasketPayoff(QlPayoff* p, char **e);
QlPercentageStrikePayoff* qlPercentageStrikePayoff(int type, double moneyness, char **e);
QlPlainVanillaPayoff* qlPlainVanillaPayoff(int type, double strike, char **e);
QlPayoff* qlRatchetMaxPayoff(double gearing1, double gearing2, double gearing3, double spread1, double spread2, double spread3, double initialValue1, double initialValue2, double accrualFactor, char **e);
QlPayoff* qlRatchetMinPayoff(double gearing1, double gearing2, double gearing3, double spread1, double spread2, double spread3, double initialValue1, double initialValue2, double accrualFactor, char **e);
QlPayoff* qlRatchetPayoff(double gearing1, double gearing2, double spread1, double spread2, double initialValue, double accrualFactor, char **e);
QlBasketPayoff* qlSpreadBasketPayoff(QlPayoff* p, char **e);
QlPayoff* qlStickyMaxPayoff(double gearing1, double gearing2, double gearing3, double spread1, double spread2, double spread3, double initialValue1, double initialValue2, double accrualFactor, char **e);
QlPayoff* qlStickyMinPayoff(double gearing1, double gearing2, double gearing3, double spread1, double spread2, double spread3, double initialValue1, double initialValue2, double accrualFactor, char **e);
QlPayoff* qlStickyPayoff(double gearing1, double gearing2, double spread1, double spread2, double initialValue, double accrualFactor, char **e);
QlStrikedTypePayoff* qlSuperFundPayoff(double strike, double secondStrike, char **e);
QlStrikedTypePayoff* qlSuperSharePayoff(double strike, double secondStrike, double cashPayoff, char **e);
void qlFreeAmericanExercise(QlAmericanExercise *o);
QlExercise* qlAmericanExerciseAsExercise(QlAmericanExercise *o);
void qlFreeBermudanExercise(QlBermudanExercise *o);
QlExercise* qlBermudanExerciseAsExercise(QlBermudanExercise *o);
void qlFreeEuropeanExercise(QlEuropeanExercise *o);
QlExercise* qlEuropeanExerciseAsExercise(QlEuropeanExercise *o);
void qlFreeExercise(QlExercise *o);
QlAmericanExercise* qlAmericanExercise(int earliestDate, int latestDate, int payoffAtExpiry, char **e);
QlBermudanExercise* qlBermudanExercise(unsigned datesLen, int *dates, int payoffAtExpiry, char **e);
QlExercise* qlEarlyExercise(int type, int payoffAtExpiry, char **e);
QlExercise* qlExercise(int type, char **e);
QlEuropeanExercise* qlEuropeanExercise(int date, char **e);
QlAmericanExercise* qlAmericanExercise1(int latestDate, int payoffAtExpiry, char **e);
QlSwingExercise* qlSwingExercise(unsigned datesLen, int* dates, unsigned secLen, unsigned* seconds, char **e);
QlSwingExercise* qlSwingExercise1(int from, int to, unsigned stepSizeSecs, char **e);
QlExercise* qlSwingExerciseAsExercise(QlSwingExercise *o);
void qlFreeCapFloor(QlCapFloor *o);
QlInstrument* qlCapFloorAsInstrument(QlCapFloor *o);
QlCapFloor* qlCap(Leg* floatingLeg, unsigned exerciseRatesLen, double* exerciseRates, char **e);
QlCapFloor* qlCollar(Leg* floatingLeg, unsigned capRatesLen, double* capRates, unsigned floorRatesLen, double* floorRates, char **e);
QlCapFloor* qlFloor(Leg* floatingLeg, unsigned exerciseRatesLen, double* exerciseRates, char **e);
double qlCapFloorAtmRate(QlCapFloor* o, QlYieldTermStructure* discountCurve, char **e);
double qlCapFloorImpliedVolatility(QlCapFloor* o, double price, QlYieldTermStructure* disc, double guess, double accuracy, unsigned maxEvaluations, double minVol, double maxVol, int type, double displacement, char **e);
QlCapFloor* qlCapFloorOptionlet(QlCapFloor* o, unsigned n, char **e);
void qlFreeCallability(QlCallability *o);
QlCallability* qlCallability(double price, int priceType, int type, int date, char **e);
void qlFreeBondForward(QlBondForward *fwd);
QlForward* qlBondForwardAsForward(QlBondForward *fwd);
QlBondForward* qlBondForward(int valueDate, int maturityDate, int type, double strike, unsigned settlementDays, DayCounter* dayCounter, Calendar* calendar, int businessDayConvention, QlBond* fixedCouponBond, QlYieldTermStructure* discountCurve, QlYieldTermStructure* incomeDiscountCurve, char **e);
double qlBondForwardCleanForwardPrice(QlBondForward* o, char **e);
double qlBondForwardForwardPrice(QlBondForward* o, char **e);
void qlFreeForward(QlForward *fwd);
QlInstrument* qlForwardAsInstrument(QlForward *fwd);
double qlForwardForwardValue(QlForward* o, char **e);
InterestRate* qlForwardImpliedYield(QlForward* o, double underlyingSpotValue, double forwardValue, int settlementDate, int compoundingConvention, DayCounter* dayCounter, char **e);
int qlForwardSettlementDate(QlForward* o, char **e);
double qlForwardSpotIncome(QlForward* o, QlYieldTermStructure* incomeDiscountCurve, char **e);
double qlForwardSpotValue(QlForward* o, char **e);
void qlFreeForwardRateAgreement(QlForwardRateAgreement *fwd);
QlInstrument* qlForwardRateAgreementAsInstrument(QlForwardRateAgreement *fwd);
QlForwardRateAgreement* qlForwardRateAgreement(QlIborIndex* index, int valueDate, int maturityDate, int type, double strikeForwardRate, double notionalAmount, QlYieldTermStructure* discountCurve, char **e);
InterestRate* qlForwardRateAgreementForwardRate(QlForwardRateAgreement* o, char **e);
void qlFreeFxForward(QlFxForward *fwd);
QlInstrument* qlFxForwardAsInstrument(QlFxForward *fwd);
QlFxForward* qlFxForward(double sourceNominal, Currency* sourceCurrency, double targetNominal, Currency* targetCurrency, int maturityDate, int paySourceCurrency, unsigned settlementDays, Calendar* paymentCalendar, char **e);
QlFxForward* qlFxForward1(double sourceNominal, Currency* sourceCurrency, Currency* targetCurrency, double forwardRate, int maturityDate, int paySourceCurrency, unsigned settlementDays, Calendar* paymentCalendar, char **e);
double qlFxForwardFairForwardRate(QlFxForward* o, char **e);
double qlFxForwardNpvSourceCurrency(QlFxForward* o, char **e);
double qlFxForwardNpvTargetCurrency(QlFxForward* o, char **e);
void qlFreeSwap(QlSwap *o);
QlInstrument* qlSwapAsInstrument(QlSwap *o);
void qlFreeVanillaSwap(QlVanillaSwap *o);
QlSwap* qlVanillaSwapAsSwap(QlVanillaSwap *o);
void qlFreeBMASwap(QlBMASwap *o);
QlSwap* qlBMASwapAsSwap(QlBMASwap *o);
void qlFreeOvernightIndexedSwap(QlOvernightIndexedSwap *o);
QlSwap* qlOvernightIndexedSwapAsSwap(QlOvernightIndexedSwap *o);
void qlFreeAssetSwap(QlAssetSwap *o);
QlSwap* qlAssetSwapAsSwap(QlAssetSwap *o);
void qlFreeZeroCouponInflationSwap(QlZeroCouponInflationSwap *o);
QlSwap* qlZeroCouponInflationSwapAsSwap(QlZeroCouponInflationSwap *o);
QlZeroCouponInflationSwap* qlZeroCouponInflationSwap(int type, double nominal, int startDate, int maturity, Calendar* cal, int paymentConvention, DayCounter* dayCounter, double fixedRate, QlZeroInflationIndex* index, int obsLagLen, int obsLagUnit, int observationInterpolation, int adjustInfObsDates, Calendar* infCalendar, int infConvention, char **e);
double qlZeroCouponInflationSwapFairRate(QlZeroCouponInflationSwap* o, char **e);
void qlFreeYearOnYearInflationSwap(QlYearOnYearInflationSwap *o);
QlSwap* qlYearOnYearInflationSwapAsSwap(QlYearOnYearInflationSwap *o);
QlYearOnYearInflationSwap* qlYearOnYearInflationSwap(int type, double nominal, Schedule* fixedSchedule, double fixedRate, DayCounter* fixedDayCount, Schedule* yoySchedule, QlYoYInflationIndex* yoyIndex, int obsLagLen, int obsLagUnit, int interpolation, double spread, DayCounter* yoyDayCount, Calendar* paymentCalendar, int paymentConvention, char **e);
double qlYearOnYearInflationSwapFairRate(QlYearOnYearInflationSwap* o, char **e);
double qlYearOnYearInflationSwapFairSpread(QlYearOnYearInflationSwap* o, char **e);
void qlFreeCPISwap(QlCPISwap *o);
QlSwap* qlCPISwapAsSwap(QlCPISwap *o);
QlCPISwap* qlCPISwap(int type, double nominal, int subtractInflationNominal, double spread, DayCounter* floatDayCount, Schedule* floatSchedule, int floatRoll, unsigned fixingDays, QlIborIndex* floatIndex, double fixedRate, double baseCPI, DayCounter* fixedDayCount, Schedule* fixedSchedule, int fixedRoll, int obsLagLen, int obsLagUnit, QlZeroInflationIndex* fixedIndex, int observationInterpolation, double inflationNominal, char **e);
double qlCPISwapFairRate(QlCPISwap* o, char **e);
double qlCPISwapFairSpread(QlCPISwap* o, char **e);
void qlFreeZeroCouponSwap(QlZeroCouponSwap *o);
QlSwap* qlZeroCouponSwapAsSwap(QlZeroCouponSwap *o);
QlZeroCouponSwap* qlZeroCouponSwap(int type, double baseNominal, int startDate, int maturityDate, double fixedPayment, QlIborIndex* iborIndex, Calendar* paymentCalendar, int paymentConvention, unsigned paymentDelay, char **e);
QlZeroCouponSwap* qlZeroCouponSwap1(int type, double baseNominal, int startDate, int maturityDate, double fixedRate, DayCounter* fixedDayCounter, QlIborIndex* iborIndex, Calendar* paymentCalendar, int paymentConvention, unsigned paymentDelay, char **e);
double qlZeroCouponSwapFairFixedPayment(QlZeroCouponSwap* o, char **e);
double qlZeroCouponSwapFairFixedRate(QlZeroCouponSwap* o, DayCounter* dayCounter, char **e);
QlOvernightIndexedSwap* qlOvernightIndexedSwap(int type, double nominal, Schedule* schedule, double fixedRate, DayCounter* fixedDC, QlOvernightIndex* overnightIndex, double spread, int paymentLag, int paymentAdjustment, Calendar* paymentCalendar, int telescopicValueDates, int averagingMethod, unsigned lookbackDays, unsigned lockoutDays, int applyObservationShift, char **e);
QlOvernightIndexedSwap* qlOvernightIndexedSwap1(int type, unsigned nominalsLen, double* nominals, Schedule* schedule, double fixedRate, DayCounter* fixedDC, QlOvernightIndex* overnightIndex, double spread, int paymentLag, int paymentAdjustment, Calendar* paymentCalendar, int telescopicValueDates, int averagingMethod, unsigned lookbackDays, unsigned lockoutDays, int applyObservationShift, char **e);
QlSwap* qlSwap1(unsigned legsLen, Leg** legs, unsigned payerLen, int *payer, char **e);
QlAssetSwap* qlAssetSwap(int payBondCoupon, QlBond* bond, double bondCleanPrice, QlIborIndex* iborIndex, double spread, Schedule* floatSchedule, DayCounter* floatingDayCount, int parAssetSwap, double gearing, double nonParRepayment, int dealMaturity, char **e);
QlBMASwap* qlBMASwap(int type, double nominal, Schedule* liborSchedule, double liborFraction, double liborSpread, QlIborIndex* liborIndex, DayCounter* liborDayCount, Schedule* bmaSchedule, QlBMAIndex* bmaIndex, DayCounter* bmaDayCount, char **e);
QlVanillaSwap* qlVanillaSwap(int type, double nominal, Schedule* fixedSchedule, double fixedRate, DayCounter* fixedDayCount, Schedule* floatSchedule, QlIborIndex* iborIndex, double spread, DayCounter* floatingDayCount, int paymentConvention, int useIndexedCoupons, char **e);
QlSwap* qlSwap(Leg* firstLeg, Leg* secondLeg, char **e);
Leg* qlSwapLeg(QlSwap* o, unsigned j, char **e);
Leg* qlVanillaSwapFixedLeg(QlVanillaSwap* o, char **e);
Leg* qlVanillaSwapFloatingLeg(QlVanillaSwap* o, char **e);
Leg* qlAssetSwapBondLeg(QlAssetSwap* o, char **e);
Leg* qlAssetSwapFloatingLeg(QlAssetSwap* o, char **e);
Leg* qlBMASwapBmaLeg(QlBMASwap* o, char **e);
Leg* qlBMASwapLiborLeg(QlBMASwap* o, char **e);
Leg* qlOvernightIndexedSwapFixedLeg(QlOvernightIndexedSwap* o, char **e);
Leg* qlOvernightIndexedSwapOvernightLeg(QlOvernightIndexedSwap* o, char **e);
double qlAssetSwapCleanPrice(QlAssetSwap* o, char **e);
double qlAssetSwapFairCleanPrice(QlAssetSwap* o, char **e);
double qlAssetSwapFairNonParRepayment(QlAssetSwap* o, char **e);
double qlAssetSwapFairSpread(QlAssetSwap* o, char **e);
double qlAssetSwapFloatingLegBPS(QlAssetSwap* o, char **e);
double qlAssetSwapFloatingLegNPV(QlAssetSwap* o, char **e);
double qlAssetSwapNonParRepayment(QlAssetSwap* o, char **e);
int qlAssetSwapParSwap(QlAssetSwap* o, char **e);
int qlAssetSwapPayBondCoupon(QlAssetSwap* o, char **e);
double qlBMASwapBmaLegBPS(QlBMASwap* o, char **e);
double qlBMASwapBmaLegNPV(QlBMASwap* o, char **e);
double qlBMASwapFairLiborFraction(QlBMASwap* o, char **e);
double qlBMASwapFairLiborSpread(QlBMASwap* o, char **e);
double qlBMASwapLiborFraction(QlBMASwap* o, char **e);
double qlBMASwapLiborLegBPS(QlBMASwap* o, char **e);
double qlBMASwapLiborLegNPV(QlBMASwap* o, char **e);
double qlOvernightIndexedSwapFairRate(QlOvernightIndexedSwap* o, char **e);
double qlOvernightIndexedSwapFairSpread(QlOvernightIndexedSwap* o, char **e);
double qlOvernightIndexedSwapFixedLegBPS(QlOvernightIndexedSwap* o, char **e);
double qlOvernightIndexedSwapFixedLegNPV(QlOvernightIndexedSwap* o, char **e);
double qlOvernightIndexedSwapOvernightLegBPS(QlOvernightIndexedSwap* o, char **e);
double qlOvernightIndexedSwapOvernightLegNPV(QlOvernightIndexedSwap* o, char **e);
double qlSwapEndDiscounts(QlSwap* o, unsigned j, char **e);
double qlSwapLegBPS(QlSwap* o, unsigned j, char **e);
double qlSwapLegNPV(QlSwap* o, unsigned j, char **e);
int qlSwapMaturityDate(QlSwap* o, char **e);
double qlSwapNpvDateDiscount(QlSwap* o, char **e);
int qlSwapStartDate(QlSwap* o, char **e);
double qlSwapStartDiscounts(QlSwap* o, unsigned j, char **e);
double qlVanillaSwapFairRate(QlVanillaSwap* o, char **e);
double qlVanillaSwapFairSpread(QlVanillaSwap* o, char **e);
double qlVanillaSwapFixedLegBPS(QlVanillaSwap* o, char **e);
double qlVanillaSwapFixedLegNPV(QlVanillaSwap* o, char **e);
double qlVanillaSwapFloatingLegBPS(QlVanillaSwap* o, char **e);
double qlVanillaSwapFloatingLegNPV(QlVanillaSwap* o, char **e);
void qlFreeEquityTotalReturnSwap(QlEquityTotalReturnSwap *o);
QlSwap* qlEquityTotalReturnSwapAsSwap(QlEquityTotalReturnSwap *o);
QlEquityTotalReturnSwap* qlEquityTotalReturnSwapIbor(int type, double nominal, Schedule* schedule, QlEquityIndex* equityIndex, QlIborIndex* interestRateIndex, DayCounter* dayCounter, double margin, double gearing, Calendar* paymentCalendar, int paymentConvention, unsigned paymentDelay, char **e);
QlEquityTotalReturnSwap* qlEquityTotalReturnSwapOvernight(int type, double nominal, Schedule* schedule, QlEquityIndex* equityIndex, QlOvernightIndex* interestRateIndex, DayCounter* dayCounter, double margin, double gearing, Calendar* paymentCalendar, int paymentConvention, unsigned paymentDelay, char **e);
double qlEquityTotalReturnSwapEquityLegNPV(QlEquityTotalReturnSwap* o, char **e);
double qlEquityTotalReturnSwapInterestRateLegNPV(QlEquityTotalReturnSwap* o, char **e);
double qlEquityTotalReturnSwapFairMargin(QlEquityTotalReturnSwap* o, char **e);
void qlFreeCreditDefaultSwap(QlCreditDefaultSwap *o);
QlInstrument* qlCreditDefaultSwapAsInstrument(QlCreditDefaultSwap *o);
void qlFreeClaim(QlClaim *o);
QlClaim* qlFaceValueAccrualClaim(QlBond* referenceSecurity, char **e);
QlClaim* qlFaceValueClaim(char **e);
QlCreditDefaultSwap* qlCreditDefaultSwap(int side, double notional, double spread, Schedule* schedule, int paymentConvention, DayCounter* dayCounter, int settlesAccrual, int paysAtDefaultTime, int protectionStart, QlClaim* x9, DayCounter* lastPeriodDayCounter, int rebatesAccrual, int tradeDate, unsigned cashSettlementDays, char **e);
QlCreditDefaultSwap* qlCreditDefaultSwap1(int side, double notional, double upfront, double spread, Schedule* schedule, int paymentConvention, DayCounter* dayCounter, int settlesAccrual, int paysAtDefaultTime, int protectionStart, int upfrontDate, QlClaim* x11, DayCounter* lastPeriodDayCounter, int rebatesAccrual, int tradeDate, unsigned cashSettlementDays, char **e);
QlOption* qlCdsOptionAsOption(QlCdsOption *o);
void qlFreeCdsOption(QlCdsOption *o);
double qlCreditDefaultSwapFairSpread(QlCreditDefaultSwap* o, char **e);
double qlCreditDefaultSwapConventionalSpread(QlCreditDefaultSwap* o, double conventionalRecovery, QlYieldTermStructure* discountCurve, DayCounter* dayCounter, int model, char **e);
double qlCreditDefaultSwapCouponLegBPS(QlCreditDefaultSwap* o, char **e);
double qlCreditDefaultSwapCouponLegNPV(QlCreditDefaultSwap* o, char **e);
Leg* qlCreditDefaultSwapCoupons(QlCreditDefaultSwap* o, char **e);
double qlCreditDefaultSwapDefaultLegNPV(QlCreditDefaultSwap* o, char **e);
double qlCreditDefaultSwapFairUpfront(QlCreditDefaultSwap* o, char **e);
double qlCreditDefaultSwapImpliedHazardRate(QlCreditDefaultSwap* o, double targetNPV, QlYieldTermStructure* discountCurve, DayCounter* dayCounter, double recoveryRate, double accuracy, int model, char **e);
double qlCreditDefaultSwapUpfrontBPS(QlCreditDefaultSwap* o, char **e);
double qlCreditDefaultSwapUpfrontNPV(QlCreditDefaultSwap* o, char **e);
void qlFreeBarrierOption(QlBarrierOption *o);
QlOneAssetOption* qlBarrierOptionAsOneAssetOption(QlBarrierOption *o);
void qlFreeDoubleBarrierOption(QlDoubleBarrierOption *o);
QlOneAssetOption* qlDoubleBarrierOptionAsOneAssetOption(QlDoubleBarrierOption *o);
void qlFreeMargrabeOption(QlMargrabeOption *o);
QlMultiAssetOption* qlMargrabeOptionAsMultiAssetOption(QlMargrabeOption *o);
void qlFreeMultiAssetOption(QlMultiAssetOption *o);
QlOption* qlMultiAssetOptionAsOption(QlMultiAssetOption *o);
void qlFreeOneAssetOption(QlOneAssetOption *o);
QlOption* qlOneAssetOptionAsOption(QlOneAssetOption *o);
void qlFreeOption(QlOption *o);
QlInstrument* qlOptionAsInstrument(QlOption *o);
void qlFreeQuantoVanillaOption(QlQuantoVanillaOption *o);
QlOneAssetOption* qlQuantoVanillaOptionAsOneAssetOption(QlQuantoVanillaOption *o);
void qlFreeSwaption(QlSwaption *o);
QlOption* qlSwaptionAsOption(QlSwaption *o);
void qlFreeSwingExercise(QlSwingExercise *o);
QlBermudanExercise* qlSwingExerciseAsBermudanExercise(QlSwingExercise *o);
void qlFreeVanillaOption(QlVanillaOption *o);
QlOneAssetOption* qlVanillaOptionAsOneAssetOption(QlVanillaOption *o);
double qlCdsOptionAtmRate(QlCdsOption* o, char **e);
QlCdsOption* qlCdsOption(QlCreditDefaultSwap* swap, QlExercise* exercise, int knocksOut, char **e);
double qlCdsOptionImpliedVolatility(QlCdsOption* o, double price, QlYieldTermStructure* termStructure, QlDefaultProbabilityTermStructure* x3, double recoveryRate, double accuracy, unsigned maxEvaluations, double minVol, double maxVol, char **e);
double qlCdsOptionRiskyAnnuity(QlCdsOption* o, char **e);
double qlSwaptionImpliedVolatility(QlSwaption* o, double price, QlYieldTermStructure* discountCurve, double guess, double accuracy, unsigned maxEvaluations, double minVol, double maxVol, int type, double displacement, int priceType, char **e);
QlSwaption* qlSwaption(QlVanillaSwap* swap, QlExercise* exercise, int delivery, int settlementMethod, char **e);
void qlFreeQuantoBarrierOption(QlQuantoBarrierOption *o);
QlOneAssetOption* qlQuantoBarrierOptionAsOneAssetOption(QlQuantoBarrierOption *o);
void qlFreeQuantoForwardVanillaOption(QlQuantoForwardVanillaOption *o);
QlOption* qlQuantoForwardVanillaOptionAsOption(QlQuantoForwardVanillaOption *o);
QlBarrierOption* qlBarrierOption(int barrierType, double barrier, double rebate, QlStrikedTypePayoff* payoff, QlExercise* exercise, char **e);
double qlBarrierOptionImpliedVolatility(QlBarrierOption* o, double price, QlGeneralizedBlackScholesProcess* process, unsigned dividendsLen, QlDividend** dividends, double accuracy, unsigned maxEvaluations, double minVol, double maxVol, char **e);
QlOneAssetOption* qlPartialTimeBarrierOption(int barrierType, int barrierRange, double barrier, double rebate, int coverEventDate, QlStrikedTypePayoff* payoff, QlExercise* exercise, char **e);
QlDoubleBarrierOption* qlDoubleBarrierOption(int barrierType, double barrierLo, double barrierHi, double rebate, QlStrikedTypePayoff* payoff, QlExercise* exercise, char **e);
double qlDoubleBarrierOptionImpliedVolatility(QlDoubleBarrierOption* o, double price, QlGeneralizedBlackScholesProcess* process, double accuracy, unsigned maxEvaluations, double minVol, double maxVol, char **e);
QlOneAssetOption* qlForwardVanillaOption(double moneyness, int resetDate, QlStrikedTypePayoff* payoff, QlExercise* exercise, char **e);
QlOneAssetOption* qlCompoundOption(QlStrikedTypePayoff* motherPayoff, QlExercise* motherExercise, QlStrikedTypePayoff* daughterPayoff, QlExercise* daughterExercise, char **e);
double qlMargrabeOptionDelta1(QlMargrabeOption* o, char **e);
double qlMargrabeOptionDelta2(QlMargrabeOption* o, char **e);
double qlMargrabeOptionGamma1(QlMargrabeOption* o, char **e);
double qlMargrabeOptionGamma2(QlMargrabeOption* o, char **e);
QlMargrabeOption* qlMargrabeOption(int Q1, int Q2, QlExercise* x2, char **e);
double qlMultiAssetOptionDelta(QlMultiAssetOption* o, char **e);
double qlMultiAssetOptionDividendRho(QlMultiAssetOption* o, char **e);
double qlMultiAssetOptionGamma(QlMultiAssetOption* o, char **e);
QlMultiAssetOption* qlMultiAssetOption(QlPayoff* x0, QlExercise* x1, char **e);
double qlMultiAssetOptionRho(QlMultiAssetOption* o, char **e);
double qlMultiAssetOptionTheta(QlMultiAssetOption* o, char **e);
double qlMultiAssetOptionVega(QlMultiAssetOption* o, char **e);
double qlOneAssetOptionDelta(QlOneAssetOption* o, char **e);
double qlOneAssetOptionDeltaForward(QlOneAssetOption* o, char **e);
double qlOneAssetOptionDividendRho(QlOneAssetOption* o, char **e);
double qlOneAssetOptionElasticity(QlOneAssetOption* o, char **e);
double qlOneAssetOptionGamma(QlOneAssetOption* o, char **e);
double qlOneAssetOptionItmCashProbability(QlOneAssetOption* o, char **e);
QlOneAssetOption* qlOneAssetOption(QlPayoff* x0, QlExercise* x1, char **e);
double qlOneAssetOptionRho(QlOneAssetOption* o, char **e);
double qlOneAssetOptionStrikeSensitivity(QlOneAssetOption* o, char **e);
double qlOneAssetOptionTheta(QlOneAssetOption* o, char **e);
double qlOneAssetOptionThetaPerDay(QlOneAssetOption* o, char **e);
double qlOneAssetOptionVega(QlOneAssetOption* o, char **e);
double qlQuantoBarrierOptionQlambda(QlQuantoBarrierOption* o, char **e);
double qlQuantoBarrierOptionQrho(QlQuantoBarrierOption* o, char **e);
QlQuantoBarrierOption* qlQuantoBarrierOption(int barrierType, double barrier, double rebate, QlStrikedTypePayoff* payoff, QlExercise* exercise, char **e);
double qlQuantoBarrierOptionQvega(QlQuantoBarrierOption* o, char **e);
double qlQuantoForwardVanillaOptionQlambda(QlQuantoForwardVanillaOption* o, char **e);
double qlQuantoForwardVanillaOptionQrho(QlQuantoForwardVanillaOption* o, char **e);
QlQuantoForwardVanillaOption* qlQuantoForwardVanillaOption(double moneyness, int resetDate, QlStrikedTypePayoff* x2, QlExercise* x3, char **e);
double qlQuantoForwardVanillaOptionQvega(QlQuantoForwardVanillaOption* o, char **e);
double qlQuantoVanillaOptionQlambda(QlQuantoVanillaOption* o, char **e);
double qlQuantoVanillaOptionQrho(QlQuantoVanillaOption* o, char **e);
QlQuantoVanillaOption* qlQuantoVanillaOption(QlStrikedTypePayoff* x0, QlExercise* x1, char **e);
double qlQuantoVanillaOptionQvega(QlQuantoVanillaOption* o, char **e);
double qlVanillaOptionImpliedVolatility(QlVanillaOption* o, double price, QlGeneralizedBlackScholesProcess* process, unsigned dividendsLen, QlDividend** dividends, double accuracy, unsigned maxEvaluations, double minVol, double maxVol, char **e);
QlVanillaOption* qlVanillaOption(QlStrikedTypePayoff* x0, QlExercise* x1, char **e);
QlMultiAssetOption* qlBasketOption(QlBasketPayoff* x0, QlExercise* x1, char **e);
QlMultiAssetOption* qlHimalayaOption(unsigned fixingDatesLen, int* fixingDates, double strike, char **e);
QlMultiAssetOption* qlPagodaOption(unsigned fixingDatesLen, int* fixingDates, double roof, double fraction, char **e);
QlOneAssetOption* qlCliquetOption(QlPercentageStrikePayoff* x0, QlEuropeanExercise* maturity, unsigned resetDatesLen, int* resetDates, char **e);
QlOneAssetOption* qlContinuousAveragingAsianOption(int averageType, QlStrikedTypePayoff* payoff, QlExercise* exercise, char **e);
QlOneAssetOption* qlContinuousFixedLookbackOption(double currentMinmax, QlStrikedTypePayoff* payoff, QlExercise* exercise, char **e);
QlOneAssetOption* qlContinuousFloatingLookbackOption(double currentMinmax, QlTypePayoff* payoff, QlExercise* exercise, char **e);
QlOneAssetOption* qlDiscreteAveragingAsianOption(int averageType, double runningAccumulator, unsigned pastFixings, unsigned fixingDatesLen, int* fixingDates, QlStrikedTypePayoff* payoff, QlExercise* exercise, char **e);
QlOneAssetOption* qlVanillaStorageOption(QlBermudanExercise* ex, double capacity, double load, double changeRate, char **e);
QlOneAssetOption* qlVanillaSwingOption(QlStrikedTypePayoff* payoff, QlSwingExercise* ex, unsigned minExerciseRights, unsigned maxExerciseRights, char **e);
QlVanillaOption* qlEuropeanOption(QlStrikedTypePayoff* x0, QlExercise* x1, char **e);
QlBond *qlBond(unsigned settlDays, Calendar *calendar, int issueDate, Leg *coupons, char **e);
QlBond *qlBond1(unsigned settlDays, Calendar *calendar, double faceAmount, int maturityDate, int issueDate, Leg *cashFlows, char **e);
Leg* qlBondCashflows(QlBond* o, char **e);
Leg* qlBondRedemptions(QlBond* o, char **e);
int qlBondSettlementDate(QlBond* o, int d, char **e);
int qlBondStartDate(QlBond* o, char **e);
int qlBondMaturityDate(QlBond *bond);
QlInstrument *qlBondAsInstrument(QlBond *bond);
QlFixedRateBond *qlFixedRateBond(unsigned settlDays, double face, Schedule *schedule, unsigned cLen, double *coupons, DayCounter *counter, int payConv, double redemption, int issue, Calendar *payCal, int exCouponPeriodLen, int exCouponPeriodUnit, Calendar* exCouponCalendar, int exCouponConvention, int exCouponEndOfMonth, DayCounter* firstPeriodDayCounter, char **e);
QlBond *qlZeroCouponBond(int settlDays, Calendar *cal, double face, int maturity, int payConv, double redemption, int issue, char **e);
QlBond *qlFloatingRateBond(unsigned settlDays, double face, Schedule *sched, QlIborIndex *index, DayCounter *dc, int payConv, unsigned fixDays,
unsigned nGearings, double *gearings, unsigned nSpreads, double *spreads, unsigned nCaps, double *caps, unsigned nFloors, double *floors,
int inArrears, double redemption, int issue, int exCouponPeriodLen, int exCouponPeriodUnit, Calendar* exCouponCalendar, int exCouponConvention, int exCouponEndOfMonth, int fixingConvention, char **e);
QlBond *qlCmsRateBond(unsigned settlDays, double faceAmount, Schedule *sched, QlSwapIndex *index, DayCounter *dc,
int payConv, unsigned fixDays, unsigned nGearings, double *gearings, unsigned nSpreads, double *spreads,
unsigned nCaps, double *caps, unsigned nFloors, double *floors, int inArrears, double redemption, int issue, char **e);
QlBond *qlAmortizingCmsRateBond(unsigned settlementDays, unsigned notionalsLen, double *notionals, Schedule *sched,
QlSwapIndex *index, DayCounter *dc, int payConv, unsigned fixDays, unsigned nGearings, double *gearings,
unsigned nSpreads, double *spreads, unsigned nCaps, double *caps, unsigned nFloors, double *floors,
int inArrears, int issue, unsigned redemptionsLen, double *redemptions, char **e);
QlBond *qlFixedRateBondAsBond(QlFixedRateBond *bond);
QlCPIBond *qlCPIBond(unsigned settlementDays, double faceAmount, double baseCPI, int obsLagLen, int obsLagUnit, QlZeroInflationIndex* index, int observationInterpolation, Schedule *schedule, unsigned couponsLen, double *coupons, DayCounter *accrualDayCounter, int paymentConvention, int issueDate, Calendar *paymentCalendar, int exCouponPeriodLen, int exCouponPeriodUnit, Calendar* exCouponCalendar, int exCouponConvention, int exCouponEndOfMonth, char **e);
QlBond *qlCPIBondAsBond(QlCPIBond *bond);
QlBond *qlAmortizingFixedRateBond(unsigned settlementDays, unsigned notionalsLen, double *notionals, Schedule *schedule,
unsigned couponsLen, double *coupons, DayCounter *accrualDayCounter, int paymentConvention, int issueDate,
int exCouponPeriodLen, int exCouponPeriodUnit, Calendar* exCouponCalendar, int exCouponConvention, int exCouponEndOfMonth,
unsigned redemptionsLen, double *redemptions, int paymentLag, char **e);
QlBond *qlAmortizingFloatingRateBond(unsigned settlementDays, unsigned notionalLen, double *notional, Schedule *schedule,
QlIborIndex *index, DayCounter *accrualDayCounter, int paymentConvention, unsigned fixingDays,
unsigned nGearings, double *gearings, unsigned nSpreads, double *spreads, unsigned nCaps, double *caps, unsigned nFloors, double *floors,
int inArrears, int issueDate, int exCouponPeriodLen, int exCouponPeriodUnit, Calendar* exCouponCalendar, int exCouponConvention,
int exCouponEndOfMonth, unsigned redemptionsLen, double *redemptions, int paymentLag, char **e);
Schedule *qlSinkingSchedule(int startDate, int lengthLen, int lengthUnit, int frequency, Calendar *paymentCalendar, char **e);
void qlSinkingNotionals(int lengthLen, int lengthUnit, int frequency, double couponRate, double initialNotional,
unsigned *len, double **out, char **e);
double qlBondYield(QlBond* o, DayCounter* dc, int comp, int freq, double accuracy,
unsigned maxEvaluations, double guess, int priceType, char **e);
double qlBondAccruedAmount(QlBond* o, int d, char **e);
double qlBondCleanPrice(QlBond* o, char **e);
double qlBondCleanPrice1(QlBond* o, double yield, DayCounter* dc, int comp, int freq, int settlementDate, char **e);
double qlBondDirtyPrice(QlBond* o, char **e);
double qlBondDirtyPrice1(QlBond* o, double yield, DayCounter* dc, int comp, int freq, int settlementDate, char **e);
int qlBondNextCashFlowDate(QlBond* o, int d, char **e);
double qlBondNextCouponRate(QlBond* o, int d, char **e);
double qlBondNotional(QlBond* o, int d, char **e);
int qlBondPreviousCashFlowDate(QlBond* o, int d, char **e);
double qlBondPreviousCouponRate(QlBond* o, int d, char **e);
double qlBondSettlementValue1(QlBond* o, double cleanPrice, char **e);
double qlBondSettlementValue(QlBond* o, char **e);
double qlBondYield1(QlBond* o, double price, int, DayCounter* dc, int comp, int freq, int settlementDate, double accuracy, unsigned maxEvaluations, char **e);
int qlBondIsTradable(QlBond* o, int d, char **e);
void qlBondNotionals(QlBond* o, unsigned *len, double **ns, char **e);
int qlBondFunctionsAccrualDays(QlBond* bond, int settlementDate, char **e);
int qlBondFunctionsAccrualEndDate(QlBond* bond, int settlementDate, char **e);
double qlBondFunctionsAccrualPeriod(QlBond* bond, int settlementDate, char **e);
int qlBondFunctionsAccrualStartDate(QlBond* bond, int settlementDate, char **e);
int qlBondFunctionsAccruedDays(QlBond* bond, int settlementDate, char **e);
double qlBondFunctionsAccruedPeriod(QlBond* bond, int settlementDate, char **e);
double qlBondFunctionsAtmRate(QlBond* bond, QlYieldTermStructure* discountCurve, int settlementDate, double price, int, char **e);
double qlBondFunctionsBasisPointValue1(QlBond* bond, double yield, DayCounter* dayCounter, int compounding, int frequency, int settlementDate, char **e);
double qlBondFunctionsBasisPointValue(QlBond* bond, InterestRate* yield, int settlementDate, char **e);
double qlBondFunctionsBps1(QlBond* bond, InterestRate* yield, int settlementDate, char **e);
double qlBondFunctionsBps2(QlBond* bond, double yield, DayCounter* dayCounter, int compounding, int frequency, int settlementDate, char **e);
double qlBondFunctionsBps(QlBond* bond, QlYieldTermStructure* discountCurve, int settlementDate, char **e);
double qlBondFunctionsCleanPrice2(QlBond* bond, QlYieldTermStructure* discountCurve, int settlementDate, char **e);
double qlBondFunctionsCleanPrice3(QlBond* bond, QlYieldTermStructure* discount, double zSpread, int compounding, int frequency, int settlementDate, char **e);
double qlBondFunctionsCleanPrice4(QlBond* bond, InterestRate* yield, int settlementDate, char **e);
double qlBondFunctionsConvexity1(QlBond* bond, double yield, DayCounter* dayCounter, int compounding, int frequency, int settlementDate, char **e);
double qlBondFunctionsConvexity(QlBond* bond, InterestRate* yield, int settlementDate, char **e);
double qlBondFunctionsDuration1(QlBond* bond, double yield, DayCounter* dayCounter, int compounding, int frequency, int type, int settlementDate, char **e);
double qlBondFunctionsDuration(QlBond* bond, InterestRate* yield, int type, int settlementDate, char **e);
double qlBondFunctionsNextCashFlowAmount(QlBond* bond, int refDate, char **e);
double qlBondFunctionsPreviousCashFlowAmount(QlBond* bond, int refDate, char **e);
int qlBondFunctionsReferencePeriodEnd(QlBond* bond, int settlementDate, char **e);
int qlBondFunctionsReferencePeriodStart(QlBond* bond, int settlementDate, char **e);
double qlBondFunctionsYield2(QlBond* bond, double price, int, DayCounter* dayCounter, int compounding, int frequency, int settlementDate, double accuracy, unsigned maxIterations, double guess, char **e);
double qlBondFunctionsYieldValueBasisPoint1(QlBond* bond, double yield, DayCounter* dayCounter, int compounding, int frequency, int settlementDate, char **e);
double qlBondFunctionsYieldValueBasisPoint(QlBond* bond, InterestRate* yield, int settlementDate, char **e);
double qlBondFunctionsZSpread(QlBond* bond, double price, int, QlYieldTermStructure* x2, int compounding, int frequency, int settlementDate, double accuracy, unsigned maxIterations, double guess, char **e);
void qlFreeBond(QlBond *bond);
void qlFreeFixedRateBond(QlFixedRateBond *bond);
void qlFreeCPIBond(QlCPIBond *bond);
void qlFreeCallableBond(QlCallableBond *o);
QlBond* qlCallableBondAsBond(QlCallableBond *o);
void qlFreeConvertibleBond(QlConvertibleBond *o);
QlBond* qlConvertibleBondAsBond(QlConvertibleBond *o);
QlCallableBond* qlCallableFixedRateBond(unsigned settlementDays, double faceAmount, Schedule* schedule, unsigned couponsLen, double* coupons, DayCounter* accrualDayCounter, int paymentConvention, double redemption, int issueDate, unsigned putCallScheduleLen, QlCallability** putCallSchedule, int exCouponPeriodLen, int exCouponPeriodUnit, Calendar* exCouponCalendar, int exCouponConvention, int exCouponEndOfMonth, char **e);
QlCallableBond* qlCallableZeroCouponBond(unsigned settlementDays, double faceAmount, Calendar* calendar, int maturityDate, DayCounter* dayCounter, int paymentConvention, double redemption, int issueDate, unsigned putCallScheduleLen, QlCallability** putCallSchedule, char **e);
QlConvertibleBond* qlConvertibleFixedCouponBond(QlExercise* exercise, double conversionRatio, unsigned callabilityLen, QlCallability** callability, int issueDate, unsigned settlementDays, unsigned couponsLen, double* coupons, DayCounter* dayCounter, Schedule* schedule, double redemption, int exCouponPeriodLen, int exCouponPeriodUnit, Calendar* exCouponCalendar, int exCouponConvention, int exCouponEndOfMonth, char **e);
QlConvertibleBond* qlConvertibleFloatingRateBond(QlExercise* exercise, double conversionRatio, unsigned callabilityLen, QlCallability** callability, int issueDate, unsigned settlementDays, QlIborIndex* index, unsigned fixingDays, unsigned spreadsLen, double* spreads, DayCounter* dayCounter, Schedule* schedule, double redemption, int exCouponPeriodLen, int exCouponPeriodUnit, Calendar* exCouponCalendar, int exCouponConvention, int exCouponEndOfMonth, char **e);
QlConvertibleBond* qlConvertibleZeroCouponBond(QlExercise* exercise, double conversionRatio, unsigned callabilityLen, QlCallability** callability, int issueDate, unsigned settlementDays, DayCounter* dayCounter, Schedule* schedule, double redemption, char **e);
QlCallability* qlSoftCallability(double price, int priceType, int date, double trigger, char **e);
Leg *qlLeg(unsigned len, double *amounts, int *dates, char **e);
int qlLegStartDate(Leg *leg, char **e);
void qlFreeLeg(Leg *leg);
Leg *qlNextCashFlows(Leg *leg, int includeSettlementDateFlows, int settlementDate, char **e);
Leg *qlPreviousCashFlows(Leg *leg, int includeSettlementDateFlows, int settlementDate, char **e);
void qlLegCashFlows(Leg *leg, int includeSettlementDateFlows, int settlementDate, unsigned *al, double **amount, unsigned *dl, int **date, unsigned *hl, int **hasOccurred, char **e);
double qlCashFlowsDuration(Leg* leg, InterestRate* yield, int type, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
int qlCashFlowsAccrualDays(Leg* leg, int includeSettlementDateFlows, int settlementDate, char **e);
int qlCashFlowsAccrualEndDate(Leg* leg, int includeSettlementDateFlows, int settlementDate, char **e);
double qlCashFlowsAccrualPeriod(Leg* leg, int includeSettlementDateFlows, int settlementDate, char **e);
int qlCashFlowsAccrualStartDate(Leg* leg, int includeSettlementDateFlows, int settlDate, char **e);
double qlCashFlowsAccruedAmount(Leg* leg, int includeSettlementDateFlows, int settlementDate, char **e);
int qlCashFlowsAccruedDays(Leg* leg, int includeSettlementDateFlows, int settlementDate, char **e);
double qlCashFlowsAccruedPeriod(Leg* leg, int includeSettlementDateFlows, int settlementDate, char **e);
double qlCashFlowsAtmRate(Leg* leg, QlYieldTermStructure* discountCurve, int includeSettlementDateFlows, int settlementDate, int npvDate, double npv, char **e);
double qlCashFlowsBasisPointValue1(Leg* leg, double yield, DayCounter* dayCounter, int compounding, int frequency, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
double qlCashFlowsBasisPointValue(Leg* leg, InterestRate* yield, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
double qlCashFlowsBps1(Leg* leg, InterestRate* yield, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
double qlCashFlowsBps2(Leg* leg, double yield, DayCounter* dayCounter, int compounding, int frequency, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
double qlCashFlowsBps(Leg* leg, QlYieldTermStructure* discountCurve, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
double qlCashFlowsConvexity1(Leg* leg, double yield, DayCounter* dayCounter, int compounding, int frequency, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
double qlCashFlowsConvexity(Leg* leg, InterestRate* yield, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
double qlCashFlowsDuration1(Leg* leg, double yield, DayCounter* dayCounter, int compounding, int frequency, int type, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
int qlCashFlowsIsExpired(Leg* leg, int includeSettlementDateFlows, int settlementDate, char **e);
int qlCashFlowsMaturityDate(Leg* leg, char **e);
double qlCashFlowsNextCashFlowAmount(Leg* leg, int includeSettlementDateFlows, int settlementDate, char **e);
int qlCashFlowsNextCashFlowDate(Leg* leg, int includeSettlementDateFlows, int settlementDate, char **e);
double qlCashFlowsNextCouponRate(Leg* leg, int includeSettlementDateFlows, int settlementDate, char **e);
double qlCashFlowsNominal(Leg* leg, int includeSettlementDateFlows, int settlDate, char **e);
double qlCashFlowsNpv1(Leg* leg, InterestRate* yield, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
double qlCashFlowsNpv2(Leg* leg, double yield, DayCounter* dayCounter, int compounding, int frequency, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
double qlCashFlowsNpv3(Leg* leg, QlYieldTermStructure* discount, double zSpread, int compounding, int frequency, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
double qlCashFlowsNpv(Leg* leg, QlYieldTermStructure* discountCurve, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
void qlCashFlowsNpvbps(Leg* leg, QlYieldTermStructure* discountCurve, int includeSettlementDateFlows, int settlementDate, int npvDate, double *npv, double *bps, char **e);
double qlCashFlowsPreviousCashFlowAmount(Leg* leg, int includeSettlementDateFlows, int settlementDate, char **e);
int qlCashFlowsPreviousCashFlowDate(Leg* leg, int includeSettlementDateFlows, int settlementDate, char **e);
double qlCashFlowsPreviousCouponRate(Leg* leg, int includeSettlementDateFlows, int settlementDate, char **e);
int qlCashFlowsReferencePeriodEnd(Leg* leg, int includeSettlementDateFlows, int settlDate, char **e);
int qlCashFlowsReferencePeriodStart(Leg* leg, int includeSettlementDateFlows, int settlDate, char **e);
double qlCashFlowsYield(Leg* leg, double npv, DayCounter* dayCounter, int compounding, int frequency, int includeSettlementDateFlows, int settlementDate, int npvDate, double accuracy, unsigned maxIterations, double guess, char **e);
double qlCashFlowsYieldValueBasisPoint1(Leg* leg, double yield, DayCounter* dayCounter, int compounding, int frequency, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
double qlCashFlowsYieldValueBasisPoint(Leg* leg, InterestRate* yield, int includeSettlementDateFlows, int settlementDate, int npvDate, char **e);
double qlCashFlowsZSpread(Leg* leg, double npv, QlYieldTermStructure* x2, int compounding, int frequency, int includeSettlementDateFlows, int settlementDate, int npvDate, double accuracy, unsigned maxIterations, double guess, char **e);
void qlQuantLibSetCouponPricer(Leg* leg, QlFloatingRateCouponPricer* x1, char **e);
void qlQuantLibSetCouponPricers(Leg* leg, unsigned x1Len, QlFloatingRateCouponPricer** x1, char **e);
void qlCouponAccrualStartDates(CouponLeg* o, unsigned *len, int **days, char **e);
void qlFreeDividend(QlDividend *o);
QlDividend* qlFixedDividend(double amount, int date, char **e);
QlDividend* qlFractionalDividend1(double rate, double nominal, int date, char **e);
QlDividend* qlFractionalDividend(double rate, int date, char **e);
Leg* qlAverageBMALeg(Schedule* schedule, QlBMAIndex* index, unsigned notionalsLen, double* notionals, DayCounter* paymentDayCounter, int paymentAdjustment, unsigned gearingsLen, double* gearings, unsigned spreadsLen, double* spreads, char **e);
Leg* qlFixedRateLeg(Schedule* schedule, unsigned NotionalsLen, double* Notionals, unsigned couponRatesLen, InterestRate** couponRates, int paymentAdjustment, DayCounter* firstPeriodDayCounter, Calendar* paymentCalendar, char **e);
Leg* qlIborLeg(Schedule* schedule, QlIborIndex* index, unsigned notionalsLen, double* notionals, DayCounter* paymentDayCounter, int paymentAdjustment, unsigned fixingDaysLen, unsigned* fixingDays, unsigned gearingsLen, double* gearings, unsigned spreadsLen, double* spreads, unsigned capsLen, double* caps, unsigned floorsLen, double* floors, int inArrears, int zeroPayments,
int paymentLag, Calendar* paymentCalendar, int exCouponPeriodLen, int exCouponPeriodUnit, Calendar* exCouponCalendar, int exCouponConvention, int exCouponEndOfMonth, int fixingConvention, int useIndexedCoupons, char **e);
Leg* qlCmsLeg(Schedule* schedule, QlSwapIndex* swapIndex, unsigned notionalsLen, double* notionals, DayCounter* paymentDayCounter, int paymentAdjustment, unsigned fixingDaysLen, unsigned* fixingDays, unsigned gearingsLen, double* gearings, unsigned spreadsLen, double* spreads, unsigned capsLen, double* caps, unsigned floorsLen, double* floors, int inArrears, int zeroPayments,
int exCouponPeriodLen, int exCouponPeriodUnit, Calendar* exCouponCalendar, int exCouponConvention, int exCouponEndOfMonth, int fixingConvention, char **e);
Leg* qlOvernightLeg(Schedule* schedule, QlOvernightIndex* overnightIndex, unsigned notionalsLen, double* notionals, DayCounter* paymentDayCounter, int paymentAdjustment, unsigned gearingsLen, double* gearings, unsigned spreadsLen, double* spreads, char **e);
Leg* qlRangeAccrualLeg(Schedule* schedule, QlIborIndex* index, unsigned notionalsLen, double* notionals, DayCounter* paymentDayCounter, int paymentAdjustment, unsigned fixingDaysLen, unsigned* fixingDays, unsigned gearingsLen, double* gearings, unsigned spreadsLen, double* spreads, unsigned lowerTriggersLen, double* lowerTriggers, unsigned upperTriggersLen, double* upperTriggers, int, int, int observationConvention, char **e);
void qlFreeCouponLeg(CouponLeg *o);
Leg* qlCouponLegAsLeg(CouponLeg *o);
CouponLeg* qlLegToCouponLeg(Leg *o, char **e);
Leg* qlCPILeg(Schedule* schedule, QlZeroInflationIndex* index, double baseCPI, int obsLagLen, int obsLagUnit, unsigned notionalsLen, double* notionals, unsigned fixedRatesLen, double* fixedRates, DayCounter* paymentDayCounter, int paymentAdjustment, Calendar* paymentCalendar, int observationInterpolation, int subtractInflationNominal, char **e);
Leg* qlYoYInflationLeg(Schedule* schedule, Calendar* cal, QlYoYInflationIndex* index, int obsLagLen, int obsLagUnit, int interpolation, unsigned notionalsLen, double* notionals, DayCounter* paymentDayCounter, int paymentAdjustment, unsigned fixingDaysLen, unsigned* fixingDays, unsigned gearingsLen, double* gearings, unsigned spreadsLen, double* spreads, char **e);
void qlFreeZeroInflationCashFlow(QlZeroInflationCashFlow *o);
QlZeroInflationCashFlow* qlZeroInflationCashFlow(double notional, QlZeroInflationIndex* index, int observationInterpolation, int startDate, int endDate, int obsLagLen, int obsLagUnit, int paymentDate, int growthOnly, char **e);
double qlZeroInflationCashFlowAmount(QlZeroInflationCashFlow* o, char **e);
double qlZeroInflationCashFlowBaseFixing(QlZeroInflationCashFlow* o, char **e);
double qlZeroInflationCashFlowIndexFixing(QlZeroInflationCashFlow* o, char **e);
void qlFreeCPICashFlow(QlCPICashFlow *o);
QlCPICashFlow* qlCPICashFlow(double notional, QlZeroInflationIndex* index, int baseDate, double baseFixing, int observationDate, int obsLagLen, int obsLagUnit, int interpolation, int paymentDate, int growthOnly, char **e);
double qlCPICashFlowAmount(QlCPICashFlow* o, char **e);
double qlCPICashFlowBaseFixing(QlCPICashFlow* o, char **e);
double qlCPICashFlowIndexFixing(QlCPICashFlow* o, char **e);
void qlFreeEquityCashFlow(QlEquityCashFlow *o);
QlEquityCashFlow* qlEquityCashFlow(double notional, QlEquityIndex* index, int baseDate, int fixingDate, int paymentDate, int growthOnly, char **e);
double qlEquityCashFlowAmount(QlEquityCashFlow* o, char **e);
double qlEquityCashFlowBaseFixing(QlEquityCashFlow* o, char **e);
double qlEquityCashFlowIndexFixing(QlEquityCashFlow* o, char **e);
void qlEquityCashFlowSetPricer(QlEquityCashFlow* o, QlEquityCashFlowPricer* pricer, char **e);
void qlFreeEquityCashFlowPricer(QlEquityCashFlowPricer *o);
QlEquityCashFlowPricer* qlEquityQuantoCashFlowPricer(QlYieldTermStructure* quantoCurrencyTermStructure, QlBlackVolTermStructure* equityVolatility, QlBlackVolTermStructure* fxVolatility, QlQuote* correlation, char **e);
void qlQuantLibSetEquityCashFlowPricer(Leg* leg, QlEquityCashFlowPricer* pricer, char **e);
QlFloatingRateCouponPricer *qlBlackIborCouponPricer(QlOptionletVolatilityStructure *vol, int timingAdjustment, QlQuote *correlation, int useIndexedCoupon, char **e);
void qlFreeFloatingCouponPricer(QlFloatingRateCouponPricer *p);
QlFloatingRateCouponPricer* qlAnalyticHaganPricer(QlSwaptionVolatilityStructure* swaptionVol, int modelOfYieldCurve, QlQuote* meanReversion, char **e);
QlFloatingRateCouponPricer* qlNumericHaganPricer(QlSwaptionVolatilityStructure* swaptionVol, int modelOfYieldCurve, QlQuote* meanReversion, double lowerLimit, double upperLimit, double precision, double hardUpperLimit, char **e);
QlFloatingRateCouponPricer* qlLinearTsrPricer(QlSwaptionVolatilityStructure* swaptionVol, QlQuote* meanReversion, QlYieldTermStructure* couponDiscountCurve, int strategy, double param, int haveBounds, double lowerBound, double upperBound, char **e);
QlFloatingRateCouponPricer* qlRangeAccrualPricerByBgm(double correlation, QlSmileSection* smilesOnExpiry, QlSmileSection* smilesOnPayment, int withSmile, int byCallSpread, char **e);
void qlFreeVarianceSwap(QlVarianceSwap *o);
QlInstrument* qlVarianceSwapAsInstrument(QlVarianceSwap *o);
QlVarianceSwap* qlVarianceSwap(int position, double strike, double notional, int startDate, int maturityDate, char **e);
double qlVarianceSwapVariance(QlVarianceSwap* o, char **e);
void qlFreeVarianceOption(QlVarianceOption *o);
QlInstrument* qlVarianceOptionAsInstrument(QlVarianceOption *o);
QlVarianceOption* qlVarianceOption(QlPayoff* payoff, double notional, int startDate, int maturityDate, char **e);
#ifdef __cplusplus
}
#endif
/* vim: set ft=cpp ff=unix ts=8 sts=2 sw=2 et: */