Author: Wim Lavrijsen <wlavrij...@lbl.gov> Branch: reflex-support Changeset: r46264:1e368b38ccd1 Date: 2011-08-03 18:09 -0700 http://bitbucket.org/pypy/pypy/changeset/1e368b38ccd1/
Log: - add fix to genreflex patch to allow proper code generation for inner union - more hsimple bench mark fixes diff --git a/pypy/module/cppyy/bench/Makefile b/pypy/module/cppyy/bench/Makefile --- a/pypy/module/cppyy/bench/Makefile +++ b/pypy/module/cppyy/bench/Makefile @@ -24,6 +24,6 @@ endif -bench02Dict_reflex.so: bench02.h bench02.xml +bench02Dict_reflex.so: bench02.h bench02.cxx bench02.xml $(genreflex) bench02.h $(genreflexflags) --selection=bench02.xml -I$(ROOTSYS)/include g++ -o $@ bench02.cxx bench02_rflx.cpp -I$(ROOTSYS)/include -shared -lReflex -lHistPainter `root-config --libs` $(cppflags) $(cppflags2) diff --git a/pypy/module/cppyy/bench/bench02.cxx b/pypy/module/cppyy/bench/bench02.cxx --- a/pypy/module/cppyy/bench/bench02.cxx +++ b/pypy/module/cppyy/bench/bench02.cxx @@ -15,6 +15,10 @@ #include <iostream> +TClass *TClass::GetClass(const char*, Bool_t, Bool_t) { + static TClass dummy("dummy"); + return &dummy; +} class TTestApplication : public TApplication { public: @@ -53,7 +57,7 @@ if (!gApplication) { int argc = 1; char* argv[1]; argv[0] = (char*)appname; - gApplication = new TTestApplication(appname, &argc, argv, kTRUE); + gApplication = new TTestApplication(appname, &argc, argv, kFALSE); } } diff --git a/pypy/module/cppyy/bench/bench02.h b/pypy/module/cppyy/bench/bench02.h --- a/pypy/module/cppyy/bench/bench02.h +++ b/pypy/module/cppyy/bench/bench02.h @@ -15,6 +15,7 @@ #include "TBasket.h" #include "TBox.h" #include "TBranchRef.h" +#include "TBrowser.h" #include "TClassGenerator.h" #include "TClassRef.h" #include "TClassStreamer.h" diff --git a/pypy/module/cppyy/bench/bench02.xml b/pypy/module/cppyy/bench/bench02.xml --- a/pypy/module/cppyy/bench/bench02.xml +++ b/pypy/module/cppyy/bench/bench02.xml @@ -5,11 +5,14 @@ <!-- ROOT classes --> <class pattern="T[A-Z]*" /> <class pattern="ROOT::T[A-Z]*" /> + <class pattern="ROOT::Fit::*" /> <!-- STL classes actually used --> + <class name="std::string" /> <class name="std::ostream" /> <class name="std::type_info" /> - <class pattern="std::_Vector_base<*> >" /> + <class pattern="std::vector<*>" /> + <class pattern="std::_Vector_base<*>" /> <!-- helper --> <class name="Bench02RootApp" /> @@ -18,15 +21,13 @@ <exclusion> + <struct pattern="TString::*" /> <class name="TString" > <field name="fRep" transient="true"/> </class> <class name="TUUID::uuid_time_t" /> - <class pattern="TString::*" /> - <class name="TString::Rep_t" /> - <class name="TClass::TNameMapNode" /> <class name="TFileOpenHandle" /> diff --git a/pypy/module/cppyy/genreflex-methptrgetter.patch b/pypy/module/cppyy/genreflex-methptrgetter.patch --- a/pypy/module/cppyy/genreflex-methptrgetter.patch +++ b/pypy/module/cppyy/genreflex-methptrgetter.patch @@ -1,6 +1,6 @@ Index: cint/reflex/python/genreflex/gendict.py =================================================================== ---- cint/reflex/python/genreflex/gendict.py (revision 40173) +--- cint/reflex/python/genreflex/gendict.py (revision 40448) +++ cint/reflex/python/genreflex/gendict.py (working copy) @@ -52,6 +52,7 @@ self.typedefs_for_usr = [] @@ -10,7 +10,25 @@ # The next is to avoid a known problem with gccxml that it generates a # references to id equal '_0' which is not defined anywhere self.xref['_0'] = {'elem':'Unknown', 'attrs':{'id':'_0','name':''}, 'subelems':[]} -@@ -1956,8 +1957,15 @@ +@@ -1281,6 +1282,8 @@ + bases = self.getBases( attrs['id'] ) + if inner and attrs.has_key('demangled') and self.isUnnamedType(attrs['demangled']) : + cls = attrs['demangled'] ++ if self.xref[attrs['id']]['elem'] == 'Union': ++ return 80*' ' + clt = '' + else: + cls = self.genTypeName(attrs['id'],const=True,colon=True) +@@ -1318,7 +1321,7 @@ + # Inner class/struct/union/enum. + for m in memList : + member = self.xref[m] +- if member['elem'] in ('Class','Struct','Union','Enumeration') \ ++ if member['elem'] in ('Class','Struct','Enumeration') \ + and member['attrs'].get('access') in ('private','protected') \ + and not self.isUnnamedType(member['attrs'].get('demangled')): + cmem = self.genTypeName(member['attrs']['id'],const=True,colon=True) +@@ -1956,8 +1959,15 @@ else : params = '0' s = ' .AddFunctionMember(%s, Reflex::Literal("%s"), %s%s, 0, %s, %s)' % (self.genTypeID(id), name, type, id, params, mod) s += self.genCommentProperty(attrs) @@ -26,7 +44,7 @@ def genMCODef(self, type, name, attrs, args): id = attrs['id'] cl = self.genTypeName(attrs['context'],colon=True) -@@ -2024,8 +2032,44 @@ +@@ -2024,8 +2034,44 @@ if returns == 'void' : body += ' }\n' else : body += ' }\n' body += '}\n' @@ -74,7 +92,7 @@ for a in args : Index: cint/reflex/python/genreflex/genreflex.py =================================================================== ---- cint/reflex/python/genreflex/genreflex.py (revision 40173) +--- cint/reflex/python/genreflex/genreflex.py (revision 40448) +++ cint/reflex/python/genreflex/genreflex.py (working copy) @@ -108,6 +108,10 @@ Print extra debug information while processing. Keep intermediate files\n _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit