Re: [ROOT] Changes to ClassDef etc. in CVS head - nested classes

From: Valeri Fine (fine@bnl.gov)
Date: Wed May 15 2002 - 00:04:48 MEST


It sounds we can not compile any STAR TTable derived class with the new ROOT.
"as is".

Does this suggest we have to change our existent TTable classes  definitions ?
I understand the coming ROOT offers a new way to generate the class Dictionary.
but does this means the old approach will not work anymore.

I would vote for ROOT v.  4 as Christian suggested.

   Valeri


> Hi Christian,
> 
> The new version of ClassDef should be backward compatible.
> If you (or somebody else) have an evidence that this is not the case, please let
> us know asap.
> 
> The version now in CVS includes several enhancements (mainly by Philippe)
> The new ClassDef/ClassImp have been simplified , in particular
> when using templates and namespaces.
> 
> The main new development is the automatic support for classes
> not instrumented with ROOT ClassDef, TObject, nested classes, etc.
> 
> We will give more information on these new developments soon.
> 
> It is not our intention to increase the version number to 4 at this point.
> 
> Rene Brun
> 
> Christian Holm Christensen wrote:
> > 
> > Hi all,
> > 
> > I did a check out of ROOT today, and it seems that there's quite a lot
> > of changes in the definition of ClassDef and the like.  Also, there's
> > some namespace stuff in the generated dictionary and so.  Anyway, the
> > effect of all this, which I don't know if it's intentional or not, is
> > that now you can use nested classes directly.  That is, like for
> > example:
> > 
> >   class Mother : public TObject  {
> >   private:
> >     TClonesArray* fChildren;
> >   public:
> >     class Child : public TObject {
> >     private:
> >       Int_t fNumber;
> >     public:
> >       Child(Int_t n) : fNumber(n) {}
> >       Int_t GetNumber() const { return fNumber; }
> >       ClassDef(Child, 1);
> >     };
> > 
> >     Mother() : fChildren("Mother::Child") {}
> >     void AddChild() {
> >       Int_t n = fChildren.GetEntries();
> >       new(fChildren[n]) Child(n);
> >     }
> >     Child* GetChild(Int_t n) {
> >       if (n > fChildren.GetEntries() || n < 0) return 0;
> >       (Child*)return fChildren[n];
> >     }
> >     ClassDef(Foo,0) //
> >   };
> > 
> > Previously you had to redefine ClassDef so that CINT wouldn't choke on
> > some friend declarations and so on.
> > 
> > So my point is: Is this the intention of these changes or is it a
> > fortunate side effect?  Does the changes in ClassDef in anyway cause
> > compatiblity problems?  If so, I think ROOT should bump to version 4.
> > 
> > Yours,
> > 
> >  ____ |  Christian Holm Christensen
> >   |_| |  -------------------------------------------------------------
> >     | |  Address: Sankt Hansgade 23, 1. th.  Phone:  (+45) 35 35 96 91
> >      _|           DK-2200 Copenhagen N       Cell:   (+45) 24 61 85 91
> >     _|            Denmark                    Office: (+45) 353  25 305
> >  ____|   Email:   cholm@nbi.dk               Web:    www.nbi.dk/~cholm
> >  | |
> 



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