DIRECTORY Interscript USING [Id, Value]; Bindings: CEDAR DEFINITIONS = BEGIN Id: TYPE ~ Interscript.Id; Value: TYPE ~ Interscript.Value; BTHandle: TYPE ~ REF BindingTable; BindingTable: TYPE; Binding: TYPE ~ REF BindingRec; BindingRec: TYPE ~ RECORD[id: Id, m: BindingMode, v: Value]; BindingMode: TYPE ~ {local, global} _ local; InitBindingTable: PROCEDURE [z: ZONE] RETURNS [bt: BTHandle]; AddBinding: PROCEDURE [self: BTHandle, b: Binding]; GetBinding: PROCEDURE [self: BTHandle, id: Id] RETURNS [binding: Binding]; GetBindings: PROCEDURE [self: BTHandle, ids: LIST OF Id] RETURNS [bindings: LIST OF Binding]; Scope: TYPE ~ RECORD[uid: INT]; NewScope: PROCEDURE [self: BTHandle] RETURNS [s: Scope]; PopScope: PROCEDURE [self: BTHandle, s: Scope]; END. τBindings.mesa Last Edited by Mitchell, February 7, 1983 3:24 pm adds the binding to the table in the current scope. Any extant binding for the same id in the current scope is overwritten. Returns id's binding, or NIL if unbound for each id in the list, returns its binding, or NIL if unbound pushes a new scope and returns a handle for it Pops the current scope, which s must identify (else error ScopeError[inputError] is generated). Change Log Created by Mitchell, February 7, 1983 11:07 am Κx˜J™ J™1unitšΟk ˜ Jšœ œ ˜—Kšœ œ œ˜Jš˜Kšœœ˜Kšœœ˜ Kšœ œœ˜"Kšœœ˜Kšœ œœ ˜Kšœ œœ#˜