← Back to team overview

dolfin team mailing list archive

Re: Hierarchical wrapping troubles

 

On Wed, Feb 02, 2011 at 09:43:58AM +0100, Harish Narayanan wrote:
> On 2/2/11 12:39 AM, 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.
>
> Dorsal has long-supported swig because of genius distributions like Red
> Hat. In theory you should be able to version-bump swig.package and
> include it in the platform files.

ok, let's move to SWIG 2.0 after 0.9.10.

--
Anders



References