← Back to team overview

dolfin team mailing list archive

Re: Hierarchical wrapping troubles

 

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.

Harish



Follow ups

References