dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #21185
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