← Back to team overview

dolfin team mailing list archive

Re: Hierarchical wrapping troubles

 

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?

No, then we probably need to keep the mess...

Johan



Follow ups

References