| %module template_enum |
| |
| %warnfilter(SWIGWARN_RUBY_WRONG_NAME) foo<int>; /* Ruby, wrong class name */ |
| %warnfilter(SWIGWARN_RUBY_WRONG_NAME) foo<double>; /* Ruby, wrong class name */ |
| |
| %inline %{ |
| template<class T> class foo { |
| public: |
| enum { FOO, BAR }; |
| }; |
| %} |
| |
| %template(foo_i) foo<int>; |
| %template(foo_d) foo<double>; |
| |
| #ifdef SWIGD |
| // Workaround for the D module which uses the literal value in the generated wrapper code. |
| %dconstvalue("3") Manta::ColorSpace<Manta::RGBTraits>::NumComponents; |
| #endif |
| |
| %inline { |
| |
| namespace Manta { |
| template<typename Traits> class ColorSpace { |
| public: |
| typedef typename Traits::ComponentType ComponentType; |
| enum { NumComponents = Traits::NumComponents}; |
| |
| ComponentType data[NumComponents]; |
| }; |
| } |
| |
| namespace Manta { |
| class RGBTraits { |
| public: |
| typedef float ComponentType; |
| enum {NumComponents = 3}; |
| }; |
| } |
| } |
| |
| |
| namespace Manta { |
| %template(Color) ColorSpace<RGBTraits>; |
| }; |