PageRenderTime 40ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/tags/rel-1-3-26/SWIG/Examples/test-suite/template_extend_overload.i

#
Swig | 44 lines | 34 code | 10 blank | 0 comment | 0 complexity | d036eae6c625b7ad747d86f2332d45de MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module template_extend_overload
  2. %inline %{
  3. template <class T>
  4. struct A
  5. {
  6. };
  7. template <class Arg, class Res>
  8. struct B
  9. {
  10. };
  11. %}
  12. %define __compose_unary(Class, ArgType, ResType)
  13. Class<ResType> compose(const B<ArgType, ResType>& f)
  14. {
  15. return Class<ResType>();
  16. }
  17. %enddef
  18. %define __compose_unary_3(Class, Type)
  19. %extend Class<Type>
  20. {
  21. __compose_unary(Class, Type, bool);
  22. __compose_unary(Class, Type, double);
  23. __compose_unary(Class, Type, int);
  24. }
  25. %enddef
  26. %define compose_unary(Class)
  27. __compose_unary_3(Class, bool)
  28. __compose_unary_3(Class, double)
  29. __compose_unary_3(Class, int)
  30. %enddef
  31. compose_unary(A);
  32. %template(A_double) A<double>;
  33. %template(A_int) A<int>;
  34. %template(A_bool) A<bool>;