Hi,
I'm experiencing strange problems with rootcint. Adding one (empty!) line
to a certain header file removes/enables rootcint to work inproperly. I'm
wondering if this is due to the fact my ClassDef statements are NOT at the
end of a class declaration. Is this required?
The header file causing the problem is included. In the state this file
is in now at compilation time the by rootcint generate dictionary
(OTTDict.C) gives the following error messages:
---------------
GENERATING OBJECT FILE ...
aCC -c -g +Z -I/group/bfys/bfys/stage/root/include -I/user/r36/include
/user/r36/work/lhcb/ott/src/new/OTTDict.C -o
/user/r36/work/lhcb/ott/obj/OTTDict.o
Error 226: "/user/r36/work/lhcb/ott/src/new/OTTDict.C", line 6762 # No
appropriate function found for call of 'operator >>'. Last viable
candidate was "TBuffer &operator >>(TBuffer &,TStorage *&)"
["/group/bfys/bfys/stage/root/include/TStorage.h", line 65]. Argument
of
type 'TFile *' could not be converted to 'TStorage *&'.
R__b >> fSpyFile;
^^^^^^^^^^^^^^^^
Error 226: "/user/r36/work/lhcb/ott/src/new/OTTDict.C", line 6763 # No
appropriate function found for call of 'operator >>'. Last viable
candidate was "TBuffer &operator >>(TBuffer &,TStorage *&)"
["/group/bfys/bfys/stage/root/include/TStorage.h", line 65]. Argument
of
type 'TTree *' could not be converted to 'TStorage *&'.
R__b >> fSpyTree;
^^^^^^^^^^^^^^^^
Error 226: "/user/r36/work/lhcb/ott/src/new/OTTDict.C", line 6766 # No
appropriate function found for call of 'operator >>'. Last viable
candidate was "TBuffer &operator >>(TBuffer &,TStorage *&)"
["/group/bfys/bfys/stage/root/include/TStorage.h", line 65]. Argument
of
type 'TServerSocket *' could not be converted to 'TStorage *&'.
R__b >> fServerSocket;
^^^^^^^^^^^^^^^^^^^^^
Error 226: "/user/r36/work/lhcb/ott/src/new/OTTDict.C", line 6779 # No
appropriate function found for call of 'operator <<'. Last viable
candidate was "TBuffer &operator <<(TBuffer &,const TObject *)"
["/group/bfys/bfys/stage/root/include/TBuffer.h", line 335]. Argument
of
type 'TFile *' could not be converted to 'const TObject *'.
R__b << fSpyFile;
^^^^^^^^^^^^^^^^
Error 226: "/user/r36/work/lhcb/ott/src/new/OTTDict.C", line 6780 # No
appropriate function found for call of 'operator <<'. Last viable
candidate was "TBuffer &operator <<(TBuffer &,const TObject *)"
["/group/bfys/bfys/stage/root/include/TBuffer.h", line 335]. Argument
of
type 'TTree *' could not be converted to 'const TObject *'.
R__b << fSpyTree;
^^^^^^^^^^^^^^^^
Error 226: "/user/r36/work/lhcb/ott/src/new/OTTDict.C", line 6783 # No
appropriate function found for call of 'operator <<'. Last viable
candidate was "TBuffer &operator <<(TBuffer &,const TObject *)"
["/group/bfys/bfys/stage/root/include/TBuffer.h", line 335]. Argument
of
type 'TServerSocket *' could not be converted to 'const TObject *'.
R__b << fServerSocket;
^^^^^^^^^^^^^^^^^^^^^
gmake: *** [/user/r36/work/lhcb/ott/obj/OTTDict.o] Error 2
-------------------
Looking at the dictionary I rootcint created a complete streamer for the
OTRCM class which it should not do (ClassDef(OTRCM, 0!!! )). As said
adding just an empty line (for example after the class OTRawEvetn;
statement, solves the problem.
Am I doing something wrong?
Rutger
#ifndef _OTRCM_H_
#define _OTRCM_H_
//
// This File contains the declaration of the OTRCM-class
//
// C++ code for 'LHC-B Outer Tracker Testbeam Monitoring + Analyses'
//
// Author: Rutger van der Eijk
// Version: V1.1.2 (03-06-98)
#ifndef ROOT_TObject
#include "TObject.h"
#endif
class TServerSocket;
class TSocket;
class OTLowLevelDAQ;
class OTRunSettings;
class OTMonitoringSettings;
class OTHistogrammer;
class OTUpdateHistogrammerTimer;
class OTUpdateRCMTimer;
class TFile;
class TTree;
class OTRawEvent;
class OTRCM: public TObject {
public:
// ...
OTRCM(UInt_t port);
virtual ~OTRCM();
virtual void Print(Option_t *option = "");
void Run();
Bool_t Update();
ClassDef(OTRCM, 0) // OTRCM class
private:
//
Bool_t fServerShutdown; // kTRUE if OTRCM should be shutdown
OTUpdateRCMTimer *fRCMUpdateTimer; // timer to update RCM
// Run datamembers
Bool_t fRunActive; // kTRUE if a run is active.
OTLowLevelDAQ *fDAQ; // pointer to low level DAQ
OTRunSettings *fRunSettings; // Run settings
OTMonitoringSettings *fMonSettings; // (online) monitoring settings
OTHistogrammer *fHistogrammer; // (online) monitoring histogrammer
OTUpdateHistogrammerTimer *fHistoUpdateTimer; // timer to update histogrammer
// Spy related datamembers
Bool_t fGetSpy; // kTRUE if spy should be taken
TFile *fSpyFile; // SpyData file
TTree *fSpyTree; // SpyData tree
OTRawEvent *fSpyEvent; // pointer to last spy event
ULong_t fNSpyBytes; // # bytes SpyData processed
// TSocket based members
void StartRun(TSocket *s);
void StopRun(TSocket *s);
void GetRunStatistics(TSocket *s);
void GetLastSpyEvent(TSocket *s);
TServerSocket *fServerSocket; //pointer to server socket
};
#endif // _OTRCM_H_
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:33 MET