On Thursday 29 May 2003 1:15 am, Paul F. Kunz wrote:
>    In my PlotterBase.zip file I have
>
> class PlotterBase
> {
>
> public:
>
>   PlotterBase ( const std::string & );
>   void setRange ( const std::string &, double, double );
>   virtual void setBinWidth ( const std::string &, double );
>
> In the C++ code there's an implementation that is overridden by a
> number of derived classes of PlotterBase.   The Python user gets his
> handle on them via
>
> class DisplayController
> {
>
> public:
>
>   static DisplayController * instance ();
>   PlotterBase * createDisplay ( const std::string &,
>                                 const NTuple &,
>                                 const std::vector<std::string> & ) const;
>
> Where the Python class will have a pinter to a C++ derived class of
> PlotterBase.
>
> The SIP generated code for setBinWidth member function contains...
>
>               PlotterBase *sipCpp;
>
>               if
> (sipParseArgs(&sipArgsParsed,sipArgs,"mM1d",sipThisObj,sipClass_PlotterBase
>,&sipCpp,sipConvertTo_std_string,&a0,&a0IsTemp,&a1)) {
>                       Py_BEGIN_ALLOW_THREADS
>                       sipCpp -> PlotterBase::setBinWidth(*a0,a1);
>                       Py_END_ALLOW_THREADS
>
> The C++ call to setBinWidth is scoped, the the virtual function table
> of the derived class is not used.
>
>    Is this a know bug in SIP code generation?

No, that's what it is supposed to be. Deciding which is the right 
implementation of setBinWidth() to call happens ealier on in the process.

Phil

_______________________________________________
PyKDE mailing list    [EMAIL PROTECTED]
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde

Reply via email to