PageRenderTime 40ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

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

#
Swig | 77 lines | 62 code | 15 blank | 0 comment | 0 complexity | 4910b28eec9b9ceb0fb70e256f48aefd 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. %{
  47. namespace hello {
  48. template struct Function_ <Double, Double>;
  49. template struct ArithFunction <Double, Double>;
  50. template class Class_ <Double, Double>;
  51. }
  52. %}
  53. namespace hello {
  54. //
  55. // This complains only when using a namespace
  56. //
  57. %template() traits<Double,Double>;
  58. %template(Function_DD) Function_ <Double, Double>;
  59. %template(ArithFunction_DD) ArithFunction <Double, Double>;
  60. %template(Class_DD) Class_ <Double, Double>;
  61. %template(make_Class_DD) make_Class <Double, Double>;
  62. }