Thread Previous • Date Previous • Date Next • Thread Next |
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, AndreI 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
Thread Previous • Date Previous • Date Next • Thread Next |