From: Ivor C. <Ivo...@pb...> - 2008-12-10 07:55:44
|
Hi all, I am using Swig to wrap C++ classes in python. I have a templated class declared as template<class Type, template<class> PatchField, class GeoMesh> class GeometricField { ... } I would like to extend the class with a function returning PatchField<Type>, along the lines of template<class Type, template<class> PatchField, class GeoMesh> class GeometricField { ... %extend { PatchField<Type>& boundaryField(...) { ... } } } %template(volScalarField) GeometricField<scalar, fvPatchField, volMesh); Swig accepts this but the C++ code generated for volScalarField doesn't contain the correct expansion of the types. I expect the return type to be fvPatchField<scalar> but instead the code contains PatchField<scalar> (i.e. the first template class isn't expanded). I have tried numerous typedefs and other tricks to get around this but Swig seems to forget that PatchField is a template parameter when I put <Type> behind it and the resulting C++ code is incorrect. Is this a bug? Is there a workaround to this problem? Thanks in advance! Ivor The perusal, use, dissemination, copying or storing of this message or its attachments and the opening of attachments is subject to PBMR's standard email disclaimer available at internet address: Pebble Bed Modular Reactor (Pty) Ltd - Disclaimer or on request from the sender. |