(* Copyright (C) 1989, Digital Equipment Corporation *) (* All rights reserved. *) (* See the file COPYRIGHT for a full description. *) (* File: ValueRep.i3 *) (* Last modified on Fri Feb 23 03:41:40 1990 by muller *) (* modified on Sat Feb 10 20:55:48 1990 by kalsow *) INTERFACE ValueRep; IMPORT Wr, FPrint, M3, String, Type, Value; TYPE V = M3.Value; Flag = BITS 1 FOR BOOLEAN; REVEAL M3.Value = UNTRACED BRANDED OBJECT origin : INTEGER; name : String.T; extName : String.T; scope : M3.Scope; type : Type.T; checked : Flag; incheck : Flag; readonly : Flag; declared : Flag; bound : Flag; compiled : Flag; imported : Flag; exported : Flag; external : Flag; used : Flag; usedAtTop : Flag; unused : Flag; obsolete : Flag; inFrame : Flag; fprint : FPrint.T; METHODS bind (); typeCheck (); class (): Value.Class; fingerprint (map: Type.Map; wr: Wr.T); load (): M3.Temp := NoLoader; write () := NoWriter; select (v: V): V := NoDuplicates; declare0 (): BOOLEAN := Never; declare1 () := NoDeclarer; declare2 () := NoDeclarer; needsDecl (): BOOLEAN := Always; toExpr (): M3.Expr := NoExpr; toType (): M3.Type := NoType; END; PROCEDURE Init (v: V; name: String.T); (* initializes a Value.T *) PROCEDURE NoDuplicates (a, b: V): V; (* a Selector that always complains *) PROCEDURE NoExpr (v: V): M3.Expr; (* == ASSERT (FALSE) *) PROCEDURE NoType (v: V): M3.Type; (* == ASSERT (FALSE) *) PROCEDURE NoLoader (v: V): M3.Temp; (* == ASSERT (FALSE) *) PROCEDURE NoWriter (v: V); (* == ASSERT (FALSE) *) PROCEDURE NoDeclarer (v: V); (* == noop *) PROCEDURE Never (v: V): BOOLEAN; (* returns FALSE *) PROCEDURE Always (v: V): BOOLEAN; (* returns TRUE *) END ValueRep.