dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #21924
Re: Passing MeshFunction as shared_ptr
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.
--
Anders
Follow ups
References