[ROOT] signal/slots and dictionnary

From: Colin Bernet (bernet@kph.uni-mainz.de)
Date: Wed May 02 2001 - 13:30:46 MEST


Hi,

I'm trying to convert a GUI (compiled program) to the signal/slot
communication mechanism. The signals being not catched by the slots, I
was wondering if a dictionnary is necessary to use signal/slots.

This brings me to a second question, concerning rootcint. Trying to
generate the dictionnary for this program's classes, I run into the
following problems :

- maps don't look to be correctly handled by rootcint. I have a
map<string, TCanvas*> and a map<string, bool>, and I get the following
message for both of them when compiling the dictionnary :

Dict.cc:1123: `R__t2' undeclared (first use this function)
Dict.cc:1123: (Each undeclared identifier is reported only once
Dict.cc:1123: for each function it appears in.)

I had a look in the generated code : R__t2 is not declared, and I found
some other strange uses of these maps too, eg :

R__b << int(fDetInTree.size());
map<string,bool>::iterator R__k;
for (R__k = fDetInTree.begin(); R__k != fDetInTree.end(); ++R__k) {

      static TString R__str = (*R__k).c_str();
      //  should be static TString R__str = ((*R__k).first).c_str(); ?

      R__str.Streamer(R__b);
}


- streams also seem to be a problem
Dict.cc:1130: no match for `TBuffer & >> ifstream *&'

Am I doing a mistake ? Are these types currently supported by root ?
Thanks,
Colin

Here are the messages I get when the dictionnary is generated and
compiled :

/usr/local/root/3.01-00/root/bin/rootcint -f Dict.cc -c
\
-Wall -O2 -I/usr/local/root/3.01-00/root/include -g -I../../src
-I../../expat/xmlparse -ansi Plane.h Plane1V.h PlaneTrigTime.h
PlaneDriftChamber.h PlaneFiberHodo.h PlaneMicromegas.h PlaneTrigHodo.h
PlaneMwpc.h PlaneScifi.h PlaneBMS.h PlaneRICH1.h MainFrame.h
StartFrame.h Monitor.h  LinkDef.h
Warning: File "Monitor.h" already loaded
*** Datamember Plane1V::fChannelKept: no size indication!
*** Datamember Plane1V::fChannelKept: pointer to fundamental type (need
manual intervention)
*** Datamember Plane1V::fTimeKept: no size indication!
*** Datamember Plane1V::fTimeKept: pointer to fundamental type (need
manual intervention)
*** Datamember Plane1V::fChannel: no size indication!
*** Datamember Plane1V::fChannel: pointer to fundamental type (need
manual intervention)
*** Datamember Plane1V::fTime: no size indication!
*** Datamember Plane1V::fTime: pointer to fundamental type (need manual
intervention)
c++ -I. -Wall -O2 -I/usr/local/root/3.01-00/root/include -g -I../../src
-I../../expat/xmlparse -ansi -c Dict.cc -o Dict.o
Dict.cc: In method `void MainFrame::Streamer(class TBuffer &)':
Dict.cc:853: warning: `char * R__t' might be used uninitialized in this
function
Dict.cc:854: warning: `Char_t * c' might be used uninitialized in this
function
Dict.cc: In method `void Monitor::Streamer(class TBuffer &)':
Dict.cc:1123: `R__t2' undeclared (first use this function)
Dict.cc:1123: (Each undeclared identifier is reported only once
Dict.cc:1123: for each function it appears in.)
Dict.cc:1130: no match for `TBuffer & >> ifstream *&'
/usr/local/root/3.01-00/root/include/TBuffer.h:278: candidates are:
TBuffer::operator >>(Char_t &)
/usr/local/root/3.01-00/root/include/TBuffer.h:340:
TBuffer::operator >>(UChar_t &)
/usr/local/root/3.01-00/root/include/TBuffer.h:285:
TBuffer::operator >>(Short_t &)
... and so on ....

Colin Bernet
Tel. +49-6131/39-23192
Fax  +49-6131/39-22964



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:44 MET