PageRenderTime 49ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

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

#
Swig | 47 lines | 37 code | 10 blank | 0 comment | 0 complexity | b231ee23be0ccfc017ef374f19a705e2 MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
  1. %module disown
  2. %{
  3. #include <iostream>
  4. %}
  5. #pragma SWIG nowarn=SWIGWARN_TYPEMAP_APPLY_UNDEF
  6. %apply SWIGTYPE *DISOWN { A *disown };
  7. %inline {
  8. struct A
  9. {
  10. ~A()
  11. {
  12. // std::cout <<"delete A" << std::endl;
  13. }
  14. };
  15. class B
  16. {
  17. A *_a;
  18. public:
  19. B() : _a(0)
  20. {
  21. }
  22. ~B()
  23. {
  24. if (_a) {
  25. // std::cout <<"delete A from B" << std::endl;
  26. delete _a;
  27. }
  28. // std::cout <<"delete B" << std::endl;
  29. }
  30. int acquire(A *disown)
  31. {
  32. // std::cout <<"acquire A" << std::endl;
  33. _a = disown;
  34. return 5;
  35. }
  36. };
  37. }