← Back to team overview

dolfin team mailing list archive

Re: Passing MeshFunction as shared_ptr

 


On 11/03/11 00:24, Anders Logg wrote:
> On Thu, Mar 10, 2011 at 04:20:51PM -0800, Johan Hake wrote:
>> On Thursday March 10 2011 16:17:49 Anders Logg wrote:
>>> On Fri, Mar 11, 2011 at 12:53:16AM +0100, Anders Logg wrote:
>>>> On Thu, Mar 10, 2011 at 11:39:52PM +0000, Garth N. Wells wrote:
>>>>> On 10/03/11 23:38, Anders Logg wrote:
>>>>>> I'm having trouble passing a MeshFunction from the Python interface
>>>>>> to
>>>>>>
>>>>>> the following function in the C++ Form class:
>>>>>>   void set_cell_domains(boost::shared_ptr<const MeshFunction<uint> >
>>>>>>   cell_domains);
>>>>>
>>>>> Change this to
>>>>>
>>>>>     void set_cell_domains(boost::shared_ptr<const MeshFunction<unsigned
>>>>>
>>>>> int> > cell_domains);
>>>>>
>>>>> (uint -> unsigned int)
>>>>
>>>> Same problem (but with uint --> unsigned int):
>>>>
>>>> TypeError: in method 'Form_set_cell_domains', argument 2 of type
>>>> 'boost::shared_ptr< dolfin::MeshFunction< unsigned int > const >'
>>>>
>>>> Printing out type() for the argument just prior to the call gives
>>>>
>>>> <class 'dolfin.cpp.MeshFunctionUInt'>
>>>>
>>>> So somehow it is not recognized that dolfin.cpp.MeshFunctionUint can
>>>> be used as a 'boost::shared_ptr< dolfin::MeshFunction< unsigned int >
>>>> const >.
>>>
>>> I have temporarily added pure pointer versions of the set_foo_domains
>>> functions in the Form class. These work fine from Python. These should
>>> be removed as soon as we figure out how to pass the arguments as
>>> shared ptrs.
>>
>> I need some time to get into the changes Garth has done. If it is not fixed by
>> then I can take a look at it, weekendish...
> 

I looks like shared_ptrs are not declared for MeshFunctions in the SWIG
version < 2 part of the interface.

When do we want to move to SWIG 2 only?

Garth

> ok, thanks.
> 
> --
> Anders




Follow ups

References