Re: CINT problem with constructors

Rene Brun (Rene.Brun@cern.ch)
Wed, 30 Sep 1998 10:24:26 +0200


Hi Damir,
I assume your class is compiled, not interpreted (a class defined
interactively cannot inherits from a compiled class).

If your class is compiled, the only thing I acn suspect is
some overwriting when your function DrawHist is called.
Let me know the result of your investigations when you remove
gradually statements from your DrawHist function.

Rene Brun

Damir Buskulic wrote:
>
> Hi,
> I believe I've found a problem in CINT with constructors (hope I'm
> wrong).
> I'm trying to build a Class called VSeries. This class contains a method
> DrawHist()
> When I invoke this function, nearly all the methods of the class
> disapear from the class. That is, if I look at this class before doing
> anything, I have :
>
> root [16] .class VSeries
>
> ===========================================================================
> class VSeries //General Series class
> size=0xc0
> (tagnum=16,voffset=-1,isabstract=0,parent=-1,gcomp=0,=~cd=0)
> List of base
> class--------------------------------------------------------
> 0x0 public: FclData
> 0x0 public: FclBasicModule
> 0x70 public: TNamed //The basis for a named object (name,
> title)
> 0x0 public: TObject //Basic ROOT object
> List of member
> variable---------------------------------------------------
> Defined in VSeries
> 0x0 protected: STRING mType , size=16 //Type of the serie : T
> (time), S (spectral) or TF (time-freq)
> 0x0 private: static Ssiz_t fgInitialCapac //Initial
> allocation Capacity
> 0x0 private: static Ssiz_t fgResizeInc //Resizing increment
> 0x0 private: static Ssiz_t fgFreeboard //Max empty space
> before reclaim
> 0x0 protected: char* fData //ref. counted data (TStringRef
> is in front)
> 0x14081d200 static const TString::EStripType kLeading
> 0x14081d220 static const TString::EStripType kTrailing
> 0x14081d240 static const TString::EStripType kBoth
> 0x14081d280 static const TString::ECaseCompare kExact
> 0x14081d2a0 static const TString::ECaseCompare kIgnoreCase
> 0x0 private: long G__virtualinfo
> 0x0 private: static TClass* fgIsA
> -- Press return for more -- (input [number] of lines, Cont,Step,More)
> 0x0 protected: TList* mPlots //List of VSPlots associated with
> this serie
> 0x0 protected: TList* mHistograms //List of Histograms
> associated with this serie
> 0x0 private: static TClass* fgIsA
> List of member
> function---------------------------------------------------
> Defined in VSeries
> filename line:size busy function type and name
> (compiled) 0:0 0 public: VSeries VSeries(void);
> (compiled) 0:0 0 public: VSeries VSeries(STRING
> nameVal,STRING typeVal,REAL_8 rateVal,Double_t
> offsetVal=0,Double_t deltaVal=0,Double_t* vector=0);
> (compiled) 0:0 0 public: VSeries VSeries(FclHeader*
> frame,Text_t* typeAndName);
> (compiled) 0:0 0 public: VSeries VSeries(VSeries& vs);
> (compiled) 0:0 0 public: virtual VSPlot*
> Draw(Float_t offset=-1e20,Float_t
> dur=1e20,Option_t* option);
> (compiled) 0:0 0 public: virtual void
> DrawHist(Float_t offset=-1e20,Float_t
> dur=1e20,Text_t* hwork,Option_t* option);
> (compiled) 0:0 0 public: virtual TList*
> GetListOfPlots(void) const;
> (compiled) 0:0 0 public: virtual TList*
> GetListOfHistograms(void) const;
> (compiled) 0:0 0 public: INT_2U GetTypeOfVect(void);
> (compiled) 0:0 0 public: STRING GetType(void);
> (compiled) 0:0 0 public: virtual void Copy(TObject& vs);
> (compiled) 0:0 0 public: const char* DeclFileName(void);
> (compiled) 0:0 0 public: int DeclFileLine(void);
> (compiled) 0:0 0 public: const char* ImplFileName(void);
> (compiled) 0:0 0 public: int ImplFileLine(void);
> (compiled) 0:0 0 public: Version_t Class_Version(void);
> (compiled) 0:0 0 public: TClass* Class(void);
> -- Press return for more -- (input [number] of lines, Cont,Step,More)
> (compiled) 0:0 0 public: void Dictionary(void);
> (compiled) 0:0 0 public: virtual TClass* IsA(void) const;
> (compiled) 0:0 0 public: virtual void
> ShowMembers(TMemberInspector& insp,char* parent);
> (compiled) 0:0 0 public: virtual void Streamer(TBuffer& b);
> (compiled) 0:0 0 public: void ~VSeries(void);
>
> and once I've used the DrawHist method, I see :
>
> root [18] .class VSeries
>
> ===========================================================================
> class VSeries //General Series class
> size=0xc0
> (tagnum=16,voffset=-1,isabstract=0,parent=-1,gcomp=0,=~cd=0)
> List of base
> class--------------------------------------------------------
> 0x0 public: FclData
> 0x0 public: FclBasicModule
> 0x70 public: TNamed //The basis for a named object (name,
> title)
> 0x0 public: TObject //Basic ROOT object
> List of member
> variable---------------------------------------------------
> Defined in VSeries
> 0x0 protected: STRING mType , size=16 //Type of the serie : T
> (time), S (spectral) or TF (time-freq)
> 0x0 private: static Ssiz_t fgInitialCapac //Initial
> allocation Capacity
> 0x0 private: static Ssiz_t fgResizeInc //Resizing increment
> 0x0 private: static Ssiz_t fgFreeboard //Max empty space
> before reclaim
> 0x0 protected: char* fData //ref. counted data (TStringRef
> is in front)
> 0x14081d200 static const TString::EStripType kLeading
> 0x14081d220 static const TString::EStripType kTrailing
> 0x14081d240 static const TString::EStripType kBoth
> 0x14081d280 static const TString::ECaseCompare kExact
> 0x14081d2a0 static const TString::ECaseCompare kIgnoreCase
> 0x0 private: long G__virtualinfo
> 0x0 private: static TClass* fgIsA
> -- Press return for more -- (input [number] of lines, Cont,Step,More)
> 0x0 protected: TList* mPlots //List of VSPlots associated with
> this serie
> 0x0 protected: TList* mHistograms //List of Histograms
> associated with this serie
> 0x0 private: static TClass* fgIsA
> List of member
> function---------------------------------------------------
> Defined in VSeries
> filename line:size busy function type and name
> (compiled) 0:0 0 public: virtual void Copy(TObject& vs);
> (compiled) 0:0 0 public: const char* DeclFileName(void);
> (compiled) 0:0 0 public: int DeclFileLine(void);
> (compiled) 0:0 0 public: const char* ImplFileName(void);
> (compiled) 0:0 0 public: int ImplFileLine(void);
> (compiled) 0:0 0 public: Version_t Class_Version(void);
> (compiled) 0:0 0 public: TClass* Class(void);
> (compiled) 0:0 0 public: void Dictionary(void);
> (compiled) 0:0 0 public: virtual TClass* IsA(void) const;
> (compiled) 0:0 0 public: virtual void
> ShowMembers(TMemberInspector& insp,char* parent);
> (compiled) 0:0 0 public: virtual void Streamer(TBuffer& b);
> (compiled) 0:0 0 public: void ~VSeries(void);
>
> Is this a known problem, or is it the first time somebody sees it ?
> I don't know why this happens only when using the DrawHist method. There
> is also a Draw method that doesn't show this behaviour.
>
> I'm sorry but I cannot show you a simple example. I'll try to track down
> the problem but this is not a trivial task. If there is a hint for a
> solution, I would prefer...
> Anyway, why should it be possible for CINT to remove some methods from
> it's dictionary ? This seems to be illogical.
>
> Cheers
>
> Damir
> --
> =====================================================================
> | Damir Buskulic | Universite de Savoie/LAPP |
> | | Chemin de Bellevue, B.P. 110 |
> | Tel : +33 (0)450091600 | F-74941 Annecy-le-Vieux Cedex |
> | e-mail: buskulic@lapp.in2p3.fr | FRANCE |
> =====================================================================
> mailto:buskulic@lapp.in2p3.fr