Copyright (C) 1994, Digital Equipment Corp.
<*PRAGMA LL*>
A CostableVBT.T
is a filter whose size range is determined so as
to avoid changing the pref except as necessary, similar to a StableVBT.
In addition, a CostableVBT.T
works with other buddies to maintain a
shared version of their current size.
INTERFACE CostableVBT;
IMPORT Filter, VBT;
TYPE
Link <: LinkPublic;
LinkPublic = MUTEX OBJECT METHODS
init(): Link
END;
T <: Public;
Public = Filter.T OBJECT METHODS
<* LL.sup <= VBT.mu *>
init(ch: VBT.T; project := TRUE; link: Link := NIL): T
END;
The call v.init(ch, b)
initializes v
as a CostableVBT
with
child ch
. v is projecting if b is TRUE. If link
is non-NIL,
v
shares shape computations with other VBTs using link
.
PROCEDURE New(ch: VBT.T; project := TRUE; link: Link := NIL): T;
New(...)
is equivalent to NEW(T).init(...)
.
PROCEDURE Disable(v: VBT.T); <* LL.sup < v *>
Temporarily disable the lowest (possibly improper) ancestor of v
that is a CostableVBT.T
, if any, and all linked VBTs.
While disabled, the filter reports its preferred size as the
child's preferred size. The filter will be reenabled as soon
as it is reshaped to a non-empty domain.
PROCEDURE SetShape (v: VBT.T; hPref, vPref: CARDINAL); <* LL.sup < v *>
Set the preferred shape of the lowest CostableVBT.T
ancestor of v
. A
value of 0
leaves the current value unchanged.
PROCEDURE GetProjecting(v: VBT.T): BOOLEAN; <* LL.sup < v *>
Return TRUE if the lowest CostableVBT.T
ancestor of v
is projecting
PROCEDURE SetProjecting(v: VBT.T; project: BOOLEAN); <* LL.sup < v *>
Set the lowest CostableVBT.T
ancestor of v
to be projecting
END CoStableVBT.