Re: RE:[CINT] [ROOT] Problems with CINT (fwd)

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Thu May 02 2002 - 19:22:26 MEST


This is only for typing exit() on the cint command line. The behaviour
is the same as typing .q except that the exit() argument is passed back
to the shell, which is needed in shell scripts where one wants to test
for script exit status. If you want to handle multiple threads you will
have to do that in your code.

-- Fons



On Thu, 2002-05-02 at 19:08, Valeri Fine wrote:
> Hello Fons,
> 
> What about multithread env. Is there any assumption of the order the different 
> threads are terminated.
> 
> For example if "GUI" thread  would be  terminated and then another thread deletes 
> some TCanvas then we may have ROOT crashed (after exit)
> 
>  I believe to deal with thread ROOT have to define:
> 
>    1.  a ROOT main thread (that should be terminated last) and that should instantiate other threads.
>    2.  "base" thread class and a container of the "threads" to be able 
>        to get a control and terminated it in the proper order if needed.
> 
>                Valeri
> -----
> Dr.Valeri Fine
> STAR/US Atlas                                    E-mail: fine@bnl.gov
> Brookhaven National Lab                Phone: +1 631 344 7806
> Upton, NY 11973-5000                       FAX:     +1 631 344 4206
> USA
> 
> 
> 
> ----- Original Message ----- 
> From: "Fons Rademakers" <Fons.Rademakers@cern.ch>
> To: "Masaharu Goto" <MXJ02154@nifty.ne.jp>
> Cc: "Rene Brun" <Rene.Brun@cern.ch>; <dbertini@lxg0402.gsi.de>; <cint@pcroot.cern.ch>; <roottalk@pcroot.cern.ch>
> Sent: Thursday, May 02, 2002 5:48 AM
> Subject: Re: RE:[CINT] [ROOT] Problems with CINT (fwd)
> 
> 
> > Hi Masa,
> > 
> >    exit() is now implemented in ROOT and it exits to the shell
> > propagating the value passed to exit() to the shell.
> > 
> > -- Fons.
> > 
> > 
> > On Thu, 2002-05-02 at 11:29, Masaharu Goto wrote:
> > > Hello Denis,
> > > 
> > > Thank you for reporting this problem.  I'll fix the problem 1) 
> > > in cint5.15.37.  For 2), we need to discuss how exit() should 
> > > behave in ROOT.
> > > 
> > > Masaharu Goto
> > > 
> > > 
> > > 
> > > >Date: Tue, 30 Apr 2002 23:37:51 +0200 (METDST)
> > > >From: Rene Brun <Rene.Brun@cern.ch>
> > > >To: cint@pcroot.cern.ch
> > > >Subject: [CINT] [ROOT] Problems with CINT  (fwd)
> > > >
> > > >
> > > >
> > > >---------- Forwarded message ----------
> > > >Date: Tue, 30 Apr 2002 20:08:57 +0200 (CEST)
> > > >From: Denis Bertini <dbertini@lxg0402.gsi.de>
> > > >To: roottalk@cern.ch
> > > >Subject: [ROOT] Problems with CINT 
> > > >
> > > >
> > > > Hi Rooters, 
> > > > 
> > > > 
> > > > 1)
> > > >
> > > > I am facing a problem to access the pointers in my 
> > > > event structure via CINT. I think it link to the way 
> > > > CINT interprets level of indirection. 
> > > > Let me explain briefly: 
> > > > I have th following class "Composite"
> > > > 
> > > >     class Composite: public Element
> > > >      {
> > > >      protected:
> > > >      TObjArray *fEventElements;
> > > >     // something ... 
> > > >           
> > > >     // specific [] operator 
> > > >     Element& operator[](Int_t i) {
> > > >      return *static_cast<TGo4EventElement*>((*fEventElements)[i]);
> > > >    //something
> > > >     };
> > > >   
> > > >   Now with this overloaded [] operator i want to access my pointers, 
> > > >   using macros commands like:
> > > >    {
> > > >      Composite * event = new Composite(); 
> > > >      // .. initialize my structure composite
> > > >      // access one element  
> > > >      Element* sub_event= &(*event)[i][j][k];
> > > >    }  
> > > > 
> > > >   I tested this access with pure compiled C++ code and it works fine. 
> > > >   But, CINT can only access (using this syntax) one level of indirection. 
> > > >   I need to do explicitely the following trick:
> > > > 
> > > >    {
> > > >      Composite * event = new Composite();
> > > >      // .. initialize my structure composite
> > > >      // access one element
> > > >      Element* sub_event= &(((*event)[i])
> > > >                            .operator[](j))
> > > >                            .operator[](k);     
> > > >     }
> > > >   ... in order to get the correct result. But it is not very nice !
> > > >
> > > >    So what am i doing wrong there?  
> > > >                                            
> > > >   2) In the last version of CINT (ROOT 303.04 22 April 2002) the
> > > >      command exit(0) hangs for ever. In root 303.02 it was working 
> > > >      correclty. 
> > > >      
> > > >                                 any hints ? 
> > > >                                            thanks
> > > >                                               Denis
> > > >
> > -- 
> > 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
> > 
-- 
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:50:52 MET