PageRenderTime 46ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/tags/rel-1-3-15/SWIG/Examples/test-suite/template_ns4.i

#
Swig | 66 lines | 55 code | 11 blank | 0 comment | 0 complexity | 99634660bf0d8aac347340d8d91144ae MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module template_ns4
  2. %inline %{
  3. namespace hello {
  4. class Double {
  5. };
  6. template <class ArgType, class ResType>
  7. struct Function
  8. {
  9. char *test() { return (char *) "test"; }
  10. };
  11. template <class AF, class RF>
  12. struct ArithFunction : Function<AF, RF>
  13. {
  14. };
  15. template <class ArgType, class ResType>
  16. struct traits
  17. {
  18. };
  19. template <class ArgType>
  20. struct traits<ArgType, double>
  21. {
  22. typedef ArgType arg_type;
  23. typedef double res_type;
  24. typedef ArithFunction<ArgType, double> base;
  25. };
  26. template <class ArgType>
  27. struct traits<ArgType, Double>
  28. {
  29. typedef ArgType arg_type;
  30. typedef Double res_type;
  31. typedef ArithFunction<ArgType, Double> base;
  32. };
  33. template <class AF, class RF>
  34. class Class : public ArithFunction< typename traits<AF, RF>::arg_type,
  35. typename traits<AF, RF>::res_type >
  36. {
  37. };
  38. template <class AF, class RF>
  39. typename traits<AF, RF>::base
  40. make_Class()
  41. {
  42. return Class<AF, RF>();
  43. }
  44. }
  45. %}
  46. namespace hello {
  47. //
  48. // This complains only when using a namespace
  49. //
  50. %template() traits<Double,Double>;
  51. %template(Function_DD) Function <Double, Double>;
  52. %template(ArithFunction_DD) ArithFunction <Double, Double>;
  53. %template(Class_DD) Class <Double, Double>;
  54. %template(make_Class_DD) make_Class <Double, Double>;
  55. }