Generation of Reflex Dictionaries

Hi Rooters,

I am trying with genreflex to build the REFLEX dictionaries for some classes inheriting inheriting from TObject using ROOT 5.22.

Basically I get the following complaint from g++ during the compilation:

In member function RooAbsArg& RooAbsArg::operator=(const RooAbsArg&)': /afs/cern.ch/cms/sw/slc4_ia32_gcc345/lcg/root/5.22.00-cms/include/TList.h:62: error:TList& TList::operator=(const TList&)’ is private

I can also reproduce the problem using the RooFit class RooRealVar (see the attachment for the file lcg_xml.xml):

genreflex $ROOTSYS/include/RooRealVar.h -s lcg_xml.xml
g++ RooRealVar_rflx.cpp root-config --libs --cflags -O -o RooRealVar_rflx.o

Am I doing something wrong? Has someone an idea?

I must add that no problem rises generating the cint dictionaries.

All the best,
Danilo

Hi,

yes, that’s a bug in GCCXML, the C++ parser used for the reflex dictionaries. I will report it. Until then you’re better off with a CINT dictionary if that’s an option. Or alternatively you can veto that function via the selection file.

Cheers, Axel.

Hi Axel,
many thanks for the suggestion and the fast feedback.

I tried to insist with the Reflex dictionaries (indeed necessary for my usecase).
Specifying the filed:

<exclusion> <class pattern="RooAbsArg"/> <method name="operator="/> <class/> </exclusion>
in the xml file does not prevent the problem to show up.

Moreover it is very curious to observe that the symbol

RooAbsArg& RooAbsArg::operator=(const RooAbsArg&)
does not appear at all in the C++ code of roofit (root.cern.ch/root/html/RooAbsArg.html).

Am I missing something?

Cheers,
Danilo

Hi,

could you try exclusion pattern operator*?

GCCXML generates a list of functions that it “sees”. And the artificial default c’tor, copy c’tor and assignment op are added when “legal”. GCCXML misidentifies op= as legal in this case.

You should also be able to circumvent the issue by declaring an op= in your derived class.

Cheers, Axel.

Hey Axel,

in the end I implemented an = operator and it did the trick.
Many thanks for all your hints.

Best,
D