Re: CINT problem with constructors

From: Rene Brun (Rene.Brun@cern.ch)
Date: Wed Sep 30 1998 - 10:24:26 MEST


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



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:38 MET