/src/wrappers/common/library/eiffel_owned.e

http://github.com/tybor/Liberty · Specman e · 46 lines · 38 code · 7 blank · 1 comment · 3 complexity · 7964f5b3c8469a53b7c3747a0b2cab6f MD5 · raw file

  1. note
  2. description:
  3. "A wrapper for a C object whose memory is handled by the Eiffel library "
  4. copyright:
  5. "[
  6. Copyright (C) 2008-2017: Paolo Redaelli
  7. This library is free software; you can redistribute it and/or
  8. modify it under the terms of the GNU Lesser General Public License
  9. as published by the Free Software Foundation; either version 2.1 of
  10. the License, or (at your option) any later version.
  11. This library is distributed in the hope that it will be useful, but
  12. WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. Lesser General Public License for more details.
  15. You should have received a copy of the GNU Lesser General Public
  16. License along with this library; if not, write to the Free Software
  17. Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  18. 02110-1301 USA
  19. ]"
  20. deferred class EIFFEL_OWNED
  21. -- A wrapper for a C object whose memory is handled by the Eiffel library
  22. inherit
  23. WRAPPER
  24. undefine from_external_pointer
  25. end
  26. insert
  27. STDLIB_EXTERNALS
  28. feature {} -- Disposing
  29. dispose
  30. do
  31. debug
  32. print(once "Disposing an Eiffel owned ")
  33. print(generating_type)
  34. print(once " and freeing handle.%N")
  35. end
  36. free(handle) -- Note: free(NULL) is a NOP and has no side-effects
  37. handle := default_pointer -- make sure the C object is not used anymore
  38. end
  39. end -- class EIFFEL_OWNED