Copyright (C) 1994, Digital Equipment Corp.
MODULE MultiFilter;
IMPORT Filter, MultiClass, VBT;
PROCEDURE Child (v: VBT.T): VBT.T =
BEGIN
WITH m = MultiClass.Resolve(v) DO
IF m = NIL THEN RETURN Filter.Child(v) ELSE RETURN m.succ(NIL) END
END
END Child;
PROCEDURE Replace (v, ch: VBT.T): VBT.T =
VAR old: VBT.T;
BEGIN
WITH m = MultiClass.Resolve(v) DO
IF m = NIL THEN
RETURN Filter.Replace(v, ch)
ELSE
IF ch # NIL THEN MultiClass.BeChild(v, ch); END;
old := m.succ(NIL);
m.replace(old, ch);
IF old # NIL THEN MultiClass.UnChild(v, old) END;
RETURN old;
END
END
END Replace;
BEGIN
END MultiFilter.