/src/wrappers/common/library/globally_cached.e

http://github.com/tybor/Liberty · Specman e · 53 lines · 41 code · 9 blank · 3 comment · 2 complexity · f3112b748d1865e06463a93e109e77ec MD5 · raw file

  1. note
  2. description:
  3. "."
  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 GLOBALLY_CACHED
  21. -- A wrapper for an globally cached object. Until disposed by Eiffel the
  22. -- wrapper registered in wrappers dictionary will be the one and only
  23. -- wrapper linked to the given address pointer.
  24. inherit
  25. WRAPPER
  26. undefine fill_tagged_out_memory
  27. redefine from_external_pointer
  28. end
  29. insert
  30. GLOBAL_CACHE
  31. feature {WRAPPER, WRAPPER_HANDLER} -- Implementation
  32. from_external_pointer (a_ptr: POINTER)
  33. do
  34. Precursor(a_ptr)
  35. wrappers.put(Current, a_ptr)
  36. end
  37. feature {}
  38. dispose
  39. do
  40. wrappers.remove(handle)
  41. end
  42. invariant
  43. stored: wrappers.has(handle)
  44. end -- class GLOBALLY_CACHED