PageRenderTime 43ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/Examples/test-suite/template_default_class_parms.i

#
Swig | 33 lines | 29 code | 4 blank | 0 comment | 0 complexity | b4349a01fa1ab386f8217a20de65c113 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module template_default_class_parms
  2. %inline %{
  3. namespace Space {
  4. struct SomeType {};
  5. struct AnotherType {};
  6. template<typename C, typename D = SomeType, typename E = int> class Bar {
  7. public:
  8. C CType;
  9. D DType;
  10. E EType;
  11. Bar(C c, D d, E e) {}
  12. C method(C c, D d, E e) { return c; }
  13. };
  14. template<typename T = SomeType> class Foo {
  15. public:
  16. T TType;
  17. Foo(T t) {}
  18. T method(T t) { return t; }
  19. };
  20. template<typename T = int> class ATemplate {};
  21. }
  22. %}
  23. // Use defaults
  24. %template(DefaultBar) Space::Bar<double>;
  25. %template(DefaultFoo) Space::Foo<>;
  26. // Don't use all defaults
  27. %template(BarAnotherTypeBool) Space::Bar<Space::AnotherType, bool>;
  28. %template(FooAnotherType) Space::Foo<Space::AnotherType>;
  29. %template() Space::ATemplate<>;