On Tue, Feb 01, 2011 at 03:46:01PM -0800, Johan Hake wrote: > On Tuesday February 1 2011 15:39:17 Anders Logg wrote: > > On Tue, Feb 01, 2011 at 11:35:28PM +0000, Garth N. Wells wrote: > > > On 01/02/11 23:19, Johan Hake wrote: > > > > On Tuesday February 1 2011 15:14:21 Anders Logg wrote: > > > >> On Tue, Feb 01, 2011 at 03:12:05PM -0800, Johan Hake wrote: > > > >>> On Tuesday February 1 2011 14:53:55 Anders Logg wrote: > > > >>>> Something seems to go wrong with the Hierarchical Python wrappers. > > > >>>> > > > >>>> C++ program: > > > >>>> UnitSquare mesh(3, 3); > > > >>>> mesh._debug(); > > > >>>> > > > >>>> Output: > > > >>>> > > > >>>> Debugging hierarchical object. > > > >>>> > > > >>>> has_parent() = 0 > > > >>>> _parent.get() = 0 > > > >>>> _parent.count() = 0 > > > >>>> has_child() = 0 > > > >>>> _child.get() = 0 > > > >>>> _child.count() = 0 > > > >>>> > > > >>>> Debugging hierarchical object. > > > >>>> > > > >>>> has_parent() = 0 > > > >>>> _parent.get() = 0 > > > >>>> _parent.count() = 0 > > > >>>> has_child() = 0 > > > >>>> _child.get() = 0 > > > >>>> _child.count() = 0 > > > >>>> > > > >>>> Python program: > > > >>>> mesh = UnitSquare(3, 3) > > > >>>> mesh._debug() > > > >>>> > > > >>>> Debugging hierarchical object. > > > >>>> > > > >>>> has_parent() = 0 > > > >>>> _parent.get() = 0 > > > >>>> _parent.count() = 0 > > > >>>> has_child() = 0 > > > >>>> _child.get() = 0 > > > >>>> _child.count() = 0 > > > >>>> > > > >>>> Debugging hierarchical object. > > > >>>> > > > >>>> has_parent() = 1 > > > >>>> _parent.get() = cbd47290 > > > >>>> _parent.count() = -878438560 > > > >>>> has_child() = 1 > > > >>>> _child.get() = cbd47290 > > > >>>> _child.count() = -878438560 > > > >>>> > > > >>>> The first call to Hierarchical::_debug is made from the constructor > > > >>>> of Hierarchical and is correct in both C++ and Python, but then the > > > >>>> Python object seems to lose contact with the reality. > > > >>> > > > >>> Yes quite so... > > > >>> > > > >>> I changed locally to swig 2.0 and the problem went away. shared_ptr > > > >>> support has been rewritten in 2.0. I might be able to hack the > > > >>> interface of Hierarchical in a similar manner as I did for > > > >>> Variables. Just implementing the interface again in the C++ layer. > > > >>> > > > >>> But I am not sure. The shared_ptr part of the SWIG interface starts > > > >>> to be quite complex now with supporting SWIG version 1.3.37 to > > > >>> 1.3.40 and 2.0 > > > >>> > > > >>> Maybe we should force SWIG 2.0? > > > >> > > > >> Is that possible? It's not in Ubuntu yet, or is it? > > > > > > It's in 11.04 > > > > > > Swig is super easy to install. > > > > If we can include SWIG installation in Dorsal and Johannes is able to > > make packages that rely on SWIG 2.0 then we might as well move to 2.0 > > to save us (mainly Johan) a lot of trouble. > > I can see if I can hack the interface of Hierarchical for DOLFIN 0.9.10. If > that work we can make the move to SWIG 2.0 for the 1.0 release? It will clean > up some IF statements in the SWIG interface code :)
Seems to work fine now! Thanks! -- Anders _______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : [email protected] Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp

