PageRenderTime 15ms CodeModel.GetById 13ms app.highlight 0ms RepoModel.GetById 1ms app.codeStats 0ms

/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
 1note
 2   description:
 3      "."
 4   copyright:
 5      "[
 6               Copyright (C) 2008-2017: Paolo Redaelli
 7
 8               This library is free software; you can redistribute it and/or
 9               modify it under the terms of the GNU Lesser General Public License
10               as published by the Free Software Foundation; either version 2.1 of
11               the License, or (at your option) any later version.
12
13               This library is distributed in the hope that it will be useful, but
14               WITHOUT ANY WARRANTY; without even the implied warranty of
15               MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16               Lesser General Public License for more details.
17
18               You should have received a copy of the GNU Lesser General Public
19               License along with this library; if not, write to the Free Software
20               Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21               02110-1301 USA
22         ]"
23deferred class GLOBALLY_CACHED
24   -- A wrapper for an globally cached object. Until disposed by Eiffel the
25   -- wrapper registered in wrappers dictionary will be the one and only
26   -- wrapper linked to the given address pointer.
27
28inherit
29   WRAPPER
30      undefine fill_tagged_out_memory
31      redefine from_external_pointer
32      end
33
34insert
35   GLOBAL_CACHE
36
37feature {WRAPPER, WRAPPER_HANDLER} -- Implementation
38   from_external_pointer (a_ptr: POINTER)
39      do
40         Precursor(a_ptr)
41         wrappers.put(Current, a_ptr)
42      end
43
44feature {}
45   dispose
46      do
47         wrappers.remove(handle)
48      end
49
50invariant
51   stored: wrappers.has(handle)
52
53end -- class GLOBALLY_CACHED