PageRenderTime 37ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

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

#
Swig | 72 lines | 54 code | 18 blank | 0 comment | 0 complexity | 9fc86356adfa1138b2a00c4d20fa34a7 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module callback
  2. %callback(1) foo;
  3. %callback(1) foof;
  4. %callback(1) A::bar;
  5. %callback(1) A::foom;
  6. %callback("%s_Cb_Ptr") foo_T; // old style, still works.
  7. %inline %{
  8. int foo(int a) {
  9. return a;
  10. }
  11. int foof(int a) {
  12. return 3*a;
  13. }
  14. struct A
  15. {
  16. static int bar(int a) {
  17. return 2*a;
  18. }
  19. int foom(int a)
  20. {
  21. return -a;
  22. }
  23. //friend int foof(int a);
  24. };
  25. extern "C" int foobar(int a, int (*pf)(int a)) {
  26. return pf(a);
  27. }
  28. extern "C" int foobarm(int a, A ap, int (A::*pf)(int a)) {
  29. return (ap.*pf)(a);
  30. }
  31. template <class T>
  32. T foo_T(T a)
  33. {
  34. return a;
  35. }
  36. template <class T>
  37. T foo_T(T a, T b)
  38. {
  39. return a + b;
  40. }
  41. template <class T>
  42. T foobar_T(T a, T (*pf)(T a)) {
  43. return pf(a);
  44. }
  45. template <class T>
  46. const T& ident(const T& x) {
  47. return x;
  48. }
  49. %}
  50. %template(foo_i) foo_T<int>;
  51. %template(foobar_i) foobar_T<int>;
  52. %template(foo_d) foo_T<double>;
  53. %template(foobar_d) foobar_T<double>;
  54. %template(ident_d) ident<double>;