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

# · Swig · 47 lines · 37 code · 10 blank · 0 comment · 0 complexity · b231ee23be0ccfc017ef374f19a705e2 MD5 · raw file

  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. }