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

From: Rene Brun (Rene.Brun@cern.ch)
Date: Tue May 14 2002 - 18:44:21 MEST


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