(* Copyright (C) 1992, Digital Equipment Corporation *) (* All rights reserved. *) (* See the file COPYRIGHT for a full description. *) (* File: Reel.m3 *) (* Last Modified On Mon Mar 2 10:35:39 PST 1992 by kalsow *) (* Modified On Wed Sep 26 19:18:56 1990 by muller *) MODULE Reel; IMPORT Type, TypeRep, Target, MBuf, Tipe, Emit; TYPE P = Type.T BRANDED "Reel.T" OBJECT OVERRIDES (*check := ALREADY DONE *) base := TypeRep.SelfBase; isEqual := TypeRep.NeverEqual; isSubtype := TypeRep.NoSubtypes; count := TypeRep.NotOrdinal; bounds := TypeRep.NotBounded; size := Sizer; minSize := Sizer; alignment := Aligner; isEmpty := TypeRep.IsNever; dependsOn := TypeRep.DependsOnNone; compile := Compiler; initCost := InitCoster; initValue := GenInit; mapper := TypeRep.NoMapper; fprint := FPrinter; class := MyClass; END; PROCEDURE MyClass (<*UNUSED*> t: Type.T): TypeRep.Class = BEGIN RETURN TypeRep.Class.None; END MyClass; PROCEDURE Sizer (<*UNUSED*> t: Type.T): INTEGER = BEGIN RETURN Target.REALSIZE; END Sizer; PROCEDURE Aligner (<*UNUSED*> t: Type.T): INTEGER = BEGIN RETURN Target.REALALIGN; END Aligner; PROCEDURE Compiler (t: Type.T) = BEGIN Emit.OpF ("\003#define @ _REAL\n", t); IF TypeRep.StartLinkInfo (t) THEN RETURN END; Emit.Op ("C\n"); Emit.OpF ("\003#define @ _REAL\n", t); Emit.Op ("*\n"); END Compiler; PROCEDURE InitCoster (<*UNUSED*> t: Type.T; zeroed: BOOLEAN): INTEGER = BEGIN (* not every bit pattern is a legal REAL *) IF zeroed THEN RETURN 0 ELSE RETURN 1 END; END InitCoster; PROCEDURE GenInit (<*UNUSED*> t: Type.T) = BEGIN Emit.Op ("0.0"); END GenInit; PROCEDURE FPrinter (<*UNUSED*>t: Type.T; <*UNUSED*>map: Type.FPMap; wr: MBuf.T) = BEGIN MBuf.PutText (wr, "$real"); END FPrinter; PROCEDURE Initialize () = BEGIN T := NEW (P); TypeRep.Init (T); T.checked := TRUE; T.hash := 1; Tipe.Define ("REAL", T, TRUE); END Initialize; BEGIN END Reel.