← Back to team overview

dolfin team mailing list archive

Re: suitable container for list of meshes in DOLFIN?

 



Johan Hake wrote:
On Monday 18 January 2010 12:58:19 Anders Logg wrote:
On Mon, Jan 18, 2010 at 09:47:38PM +0100, Andre Massing wrote:
Hi,

I am looking for suitable container in C++ (list, vector, array,
something ordered, not a set) which is suitable to contain (shared)
pointer or references to meshes *and* is willing to nicely interplay
with the swig built python interface. I just want to pass a list of
meshes to a constructor of a class. Is there any suitable classes
around DOLFIN? Or it is now easy to wrap a say
std::vector<boost::shared_ptr<Mesh> >  or something similiar?

Regards,
Andre
I think the dolfin::Array class is the best option.

I'm not sure of the status of the wrapping of Array to Python but the
idea is that Array should be designed particularly for simple wrapping
to Python. Hake or Garth knows more.

The transition is only done for ArrayDouble and maybe ArrayUInt I guess.
For now you should be able to just add:

IN_TYPEMAPS_STD_VECTOR_OF_POINTERS(Mesh) in std_vector_typemaps.i where the other similar macros are run. Then you should be able to pass list of Mesh objects to the wrapped C++ method/function. The signature of the C++ function can be any of:

  bar([const] std::vector< [const] Mesh&> >)

Ok, that might also be an option (and a good opportunity to recall the things you taught me :) but did you mean

bar([const] std::vector< [const] Mesh *> >) ?
				     ^^^	


where the const are optional (but for now you need at least one of them).

We need to reiterate where we want to use the Array<Foo> class. It was primarily introduced to handle std::vector<double>, double* <-> NumPy typemaps. Not std::vector<Foo&> <-> PythonSequence(Foo). But I guess Garth also want's the latter ;).

Johan

--
Anders




Follow ups

References