1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
/*
Copyright (C) 2000, 2001, 2002 RiskMap srl
This file is part of QuantLib, a free-software/open-source library
for financial quantitative analysts and developers - http://quantlib.org/
QuantLib is free software: you can redistribute it and/or modify it under the
terms of the QuantLib license. You should have received a copy of the
license along with this program; if not, please email ferdinando@ametrano.net
The license is also available online at http://quantlib.org/html/license.html
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the license for more details.
*/
// $Id: Swap.i,v 1.22 2002/03/07 14:06:32 lballabio Exp $
#ifndef quantlib_swap_i
#define quantlib_swap_i
%include Instruments.i
%include TermStructures.i
%include CashFlows.i
%{
using QuantLib::Instruments::Swap;
using QuantLib::Instruments::SimpleSwap;
typedef Handle<Swap> SwapHandle;
typedef Handle<SimpleSwap> SimpleSwapHandle;
%}
// fake inheritance between handles
%name(Swap) class SwapHandle
: public InstrumentHandle {
public:
// constructor redefined below
~SwapHandle();
};
%addmethods SwapHandle {
SwapHandle(CashFlowHandleVector firstLeg,
CashFlowHandleVector secondLeg,
TermStructureRelinkableHandle termStructure,
String isinCode, String description) {
return new SwapHandle(
new Swap(firstLeg, secondLeg, termStructure,
isinCode, description));
}
}
// fake inheritance between handles
%name(SimpleSwap) class SimpleSwapHandle
: public InstrumentHandle {
public:
// constructor redefined below
~SimpleSwapHandle();
};
%addmethods SimpleSwapHandle {
SimpleSwapHandle(bool payFixedRate, Date startDate, int n, TimeUnit unit,
Calendar calendar, RollingConvention rollingConvention,
double nominal, int fixedFrequency, Rate fixedRate,
bool fixedIsAdjusted, DayCounter fixedDayCount,
int floatingFrequency, XiborHandle index, int indexFixingDays,
Spread spread, TermStructureRelinkableHandle termStructure,
String isinCode, String description) {
QL_REQUIRE(!index.isNull(), "null index given");
Handle<Xibor> h = index;
QL_REQUIRE(!h.isNull(), "index not of Libor type");
return new SimpleSwapHandle(
new SimpleSwap(payFixedRate, startDate, n, unit, calendar,
rollingConvention, nominal, fixedFrequency, fixedRate,
fixedIsAdjusted, fixedDayCount, floatingFrequency,
h, indexFixingDays, spread, termStructure,
isinCode, description));
}
Rate fairRate() {
return (*self)->fairRate();
}
double fixedLegBPS() {
return (*self)->fixedLegBPS();
}
double floatingLegBPS() {
return (*self)->floatingLegBPS();
}
Date maturity() {
return (*self)->maturity();
}
}
#endif
|