SWIG: AssetSwap interface

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

SWIG: AssetSwap interface

Lluis Pujol Bajador
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