PageRenderTime 50ms CodeModel.GetById 24ms RepoModel.GetById 1ms app.codeStats 0ms

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

#
Swig | 33 lines | 25 code | 8 blank | 0 comment | 0 complexity | 0537bfe723c92fd56e6a99b44f674104 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module funcptr_cpp
  2. %{
  3. #if defined(__SUNPRO_CC)
  4. #pragma error_messages (off, badargtype2w) /* Formal argument ... is being passed extern "C" ... */
  5. #endif
  6. %}
  7. %inline %{
  8. int addByValue(const int &a, int b) { return a+b; }
  9. int * addByPointer(const int &a, int b) { static int val; val = a+b; return &val; }
  10. int & addByReference(const int &a, int b) { static int val; val = a+b; return val; }
  11. int call1(int (*d)(const int &, int), int a, int b) { return d(a, b); }
  12. int call2(int * (*d)(const int &, int), int a, int b) { return *d(a, b); }
  13. int call3(int & (*d)(const int &, int), int a, int b) { return d(a, b); }
  14. %}
  15. %constant int (*ADD_BY_VALUE)(const int &, int) = addByValue;
  16. %constant int * (*ADD_BY_POINTER)(const int &, int) = addByPointer;
  17. %constant int & (*ADD_BY_REFERENCE)(const int &, int) = addByReference;
  18. %inline %{
  19. typedef int AddByValueTypedef(const int &a, int b);
  20. typedef int * AddByPointerTypedef(const int &a, int b);
  21. typedef int & AddByReferenceTypedef(const int &a, int b);
  22. void *typedef_call1(AddByValueTypedef *& precallback, AddByValueTypedef * postcallback) { return 0; }
  23. void *typedef_call2(AddByPointerTypedef *& precallback, AddByPointerTypedef * postcallback) { return 0; }
  24. void *typedef_call3(AddByReferenceTypedef *& precallback, AddByReferenceTypedef * postcallback) { return 0; }
  25. %}