Posted by
Lluis Pujol Bajador on
URL: http://quantlib.414.s1.nabble.com/SWIG-AssetSwap-interface-tp8762.html
Hi,
This time I am trying to port to Python the asset swap C++ test. I am stuck with the Bond input.
Using the following interface (just copy paste the C++ header with the Ptr rearrange)
%rename(AssetSwap) AssetSwapPtr;
class AssetSwapPtr : public SwapPtr {
public:
%extend {
AssetSwapPtr(bool payFixedRate,
const boost::shared_ptr<Bond>& bond,
Real bondCleanPrice,
const boost::shared_ptr<IborIndex>& index,
Spread spread,
const Schedule& floatSchedule = Schedule(),
const DayCounter& floatingDayCount = DayCounter(),
bool parAssetSwap = true){
return new AssetSwapPtr(
new AssetSwap(payFixedRate,bond,bondCleanPrice,
index,spread, floatSchedule, floatingDayCount,parAssetSwap));
}
}
};
I get the following error:
QuantLib/quantlib_wrap.cpp(10115) : error C2065: 'Bond' : identificador no declarado
QuantLib/quantlib_wrap.cpp(10118) : error C2664: 'QuantLib::AssetSwap::AssetSwap (bool,const boost::shared_ptr<T> &,QuantLib::Real,const boost::shared_ptr<QuantL
ib::IborIndex> &,QuantLib::Spread,const QuantLib::Schedule &,const QuantLib::DayCounter &,bool)' : no se puede convertir el parámetro 2 de 'const boost::shared_ptr' a 'const boost::shared_ptr<T> &'
with
[
T=QuantLib::Bond
]
Razón: no se puede realizar la conversión de 'const boost::shared_ptr' a 'const boost::shared_ptr<T>'
with
[
T=QuantLib::Bond
]
No hay disponible ningún operador de conversión definido por el usuario que pueda realizar esta conversión, o bien no se puede llamar al operador
QuantLib/quantlib_wrap.cpp(140011) : error C2664: 'new_AssetSwapPtr__SWIG_0' : no se puede convertir el parámetro 2 de 'const boost::shared_ptr<T>' a 'const boo
st::shared_ptr &'
with
[
T=QuantLib::Bond
]
Razón: no se puede realizar la conversión de 'const boost::shared_ptr<T>' a 'const boost::shared_ptr'
with
[
T=QuantLib::Bond
]
No hay disponible ningún operador de conversión definido por el usuario que pueda realizar esta conversión, o bien no se puede llamar al operador
QuantLib/quantlib_wrap.cpp(140109) : error C2664: 'new_AssetSwapPtr__SWIG_0' : no se puede convertir el parámetro 2 de 'const boost::shared_ptr<T>' a 'const boo
st::shared_ptr &'
with
[
T=QuantLib::Bond
]
Razón: no se puede realizar la conversión de 'const boost::shared_ptr<T>' a 'const boost::shared_ptr'
with
[
T=QuantLib::Bond
]
No hay disponible ningún operador de conversión definido por el usuario que pueda realizar esta conversión, o bien no se puede llamar al operador
QuantLib/quantlib_wrap.cpp(140195) : error C2664: 'new_AssetSwapPtr__SWIG_0' : no se puede convertir el parámetro 2 de 'const boost::shared_ptr<T>' a 'const boo
st::shared_ptr &'
with
[
T=QuantLib::Bond
]
Razón: no se puede realizar la conversión de 'const boost::shared_ptr<T> ' a 'const boost::shared_ptr'
with
[
T=QuantLib::Bond
]
No hay disponible ningún operador de conversión definido por el usuario que pueda realizar esta conversión, o bien no se puede llamar al operador
QuantLib/quantlib_wrap.cpp(140269) : error C2664: 'new_AssetSwapPtr__SWIG_0' : no se puede convertir el parámetro 2 de 'const boost::shared_ptr<T>' a 'const boo
st::shared_ptr &'
with
[
T=QuantLib::Bond
]
Razón: no se puede realizar la conversión de 'const boost::shared_ptr<T>' a 'const boost::shared_ptr'
with
[
T=QuantLib::Bond
]
No hay disponible ningún operador de conversión definido por el usuario que pueda realizar esta conversión, o bien no se puede llamar al operador
error: command '"c:\Archivos de programa\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' failed with exit status 2
If, like other interfaces, I try to cast to Bond with the following interface:
%rename(AssetSwap) AssetSwapPtr;
class AssetSwapPtr : public SwapPtr {
public:
%extend {
AssetSwapPtr(bool payFixedRate,
const BondPtr& bond,
Real bondCleanPrice,
const boost::shared_ptr<IborIndex>& index,
Spread spread,
const Schedule& floatSchedule = Schedule(),
const DayCounter& floatingDayCount = DayCounter(),
bool parAssetSwap = true){
boost::shared_ptr<Bond> bo =
boost::dynamic_pointer_cast<Bond>(bond);
return new AssetSwapPtr(
new AssetSwap(payFixedRate,bo,bondCleanPrice,
index,spread, floatSchedule, floatingDayCount,parAssetSwap));
}
}
};
I get the following error:
QuantLib/quantlib_wrap.cpp(10114) : error C2061: error de sintaxis : identificador 'BondPtr'
QuantLib/quantlib_wrap.cpp(10114) : error C2059: error de sintaxis : ')'
QuantLib/quantlib_wrap.cpp(10114) : error C2143: error de sintaxis : falta ')' delante de '{'
QuantLib/quantlib_wrap.cpp(10115) : error C2065: 'Bond' : identificador no declarado
QuantLib/quantlib_wrap.cpp(10116) : error C2065: 'Bond' : identificador no declarado
QuantLib/quantlib_wrap.cpp(10116) : error C2065: 'bond' : identificador no declarado
QuantLib/quantlib_wrap.cpp(10116) : error C2512: 'boost::shared_ptr' : no hay disponible un constructor predeterminado adecuado
QuantLib/quantlib_wrap.cpp(10118) : error C2065: 'bondCleanPrice' : identificador no declarado
QuantLib/quantlib_wrap.cpp(10119) : error C2065: 'index' : identificador no declarado
QuantLib/quantlib_wrap.cpp(10119) : error C2065: 'spread' : identificador no declarado
QuantLib/quantlib_wrap.cpp(10119) : error C2065: 'floatSchedule' : identificador no declarado
QuantLib/quantlib_wrap.cpp(10119) : error C2065: 'floatingDayCount' : identificador no declarado
QuantLib/quantlib_wrap.cpp(10119) : error C2065: 'parAssetSwap' : identificador no declarado
QuantLib/quantlib_wrap.cpp(140012) : error C2660: 'new_AssetSwapPtr__SWIG_0' : la función no acepta 8 argumentos
QuantLib/quantlib_wrap.cpp(140110) : error C2660: 'new_AssetSwapPtr__SWIG_0' : la función no acepta 7 argumentos
QuantLib/quantlib_wrap.cpp(140196) : error C2660: 'new_AssetSwapPtr__SWIG_0' : la función no acepta 6 argumentos
QuantLib/quantlib_wrap.cpp(140270) : error C2660: 'new_AssetSwapPtr__SWIG_0' : la función no acepta 5 argumentos
error: command '"c:\Archivos de programa\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' failed with exit status 2
Sincerely I cannot understand why I get a syntax error in BondPtr. (I included the bonds.i interface in the swap.i.)
Any help is appreciated.
Lluís
------------------------------------------------------------------------------
Got Input? Slashdot Needs You.
Take our quick survey online. Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users