CINT problem with constructors

Damir Buskulic (buskulic@lapp.in2p3.fr)
Tue, 29 Sep 1998 14:59:17 +0200


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