Re: [ROOT] new PlugginManager and Qt layer

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Sun Sep 01 2002 - 17:00:20 MEST


Hi Valery,

  could you try using dynamic_cast<TVirtualX*> instead in TApplication
to see if that works.

-- Fons


On Thu, Aug 29, 2002 at 07:55:17PM -0400, Valeri Fine wrote:
> Hello team,
> 
> I have been spending 2 weeks trying to incorporate the brand new
> technique dealing with the various implementation of TVirtualX classes.
> It sounded one could eliminate TApplication.cxx class corrections needed
> to switch from the "native" to for example "qt" layer.
> See:
> http://root.cern.ch/root/htmldoc/src/TApplication.cxx.html#TApplication:
> LoadGraphicsLibs 
> 
> I found the statement there:
> 
> gVirtualX = (TVirtualX *) h->ExecPlugin(2, name.Data(), title.Data());
> 
> returns the wrong value of gVirtualX in the case of the Qt-based
> implementation http://www.usatlas.bnl.gov/~fine/QtRootDownload.html 
> 
> This is because of the wrong cast of the multiply inheritance of
> TQtThread class made by ExecPlugin method.
> The problem manifests just one tries to instantiate via PluginManager
> the object of the class derived from several others, and when the first
> base class is not a TObject.
> In my case that can not be eliminated and the inheritance order can not
> be changed due Qt-restriction either.
> 
> I wonder if it is possible to fix this. At least I myself have found no
> way to fix things "honestly". This is because I had to hide the fact of
> the multiply inheritance from Cint compiler to be able to generate
> RootCint dictionary entry. That PluginManager approach requires.
> 
> I do:
> 
> class TQtThread :
> #ifndef __CINT__
>   public QObject, 
> #endif
>   public TQt {
> #ifndef __CINT__
>   Q_OBJECT
> #endif
> 
> I'd like to call your attention that the problem is a general. One might
> have gotten a wrong pointer just he tried to use PluginManager to
> plug-in the class with the multiply inheirtance in certain order.
> 
> I am begging a pardon for delay with Qt-based ROOT 3.03/08 version due
> the problem described above.
> 
>   My best regards, 
>                               Valeri
> 

-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
WWW:    http://root.cern.ch/~rdm/            Fax:   +41 22 7679480



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:06 MET