blob: f994fd5400fb9e66a4d87d657cb70b1155a72632 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
-- File: MMgt_TShared.cdl
-- Created: Tue Oct 13 17:51:30 1992
-- Author: Ramin BARRETO, CLE (1994 Standard Light)
-- <rba@sdsun4>
---Copyright: Matra Datavision 1992
--
deferred class TShared from MMgt
inherits Transient from Standard
---Purpose:
-- The abstract class TShared is the root class of
-- managed objects. TShared objects are managed
-- by a memory manager based on reference
-- counting. They have handle semantics. In other
-- words, the reference counter is transparently
-- incremented and decremented according to the
-- scope of handles. When all handles, which
-- reference a single object are out of scope, the
-- reference counter becomes null and the object is
-- automatically deleted. The deallocated memory is
-- not given back to the system though. It is
-- reclaimed for new objects of the same size.
-- Warning
-- This memory management scheme does not
-- work for cyclic data structures. In such cases
-- (with back pointers for example), you should
-- interrupt the cycle in a class by using a full C++
-- pointer instead of a handle.
uses
Integer from Standard
raises
OutOfMemory from Standard
is
Delete(me) is redefined;
end TShared from MMgt;
|