DIRECTORY CirioTypes USING[BasicTypeInfo, CompilerContext, Node, Type], RefTab USING [Ref]; CNumericTypes: CEDAR DEFINITIONS = BEGIN CC: TYPE = CirioTypes.CompilerContext; BasicTypeInfo: TYPE = CirioTypes.BasicTypeInfo; NumericDescriptor: TYPE = REF NumericDescriptorBody; NumericDescriptorBody: TYPE = RECORD[ primary: PrimaryTag, secondary: SecondaryTag ¬ null, enumerationConstants: RefTab.Ref]; PrimaryTag: TYPE = {signed, unsigned, float, double, longDouble}; SecondaryTag: TYPE = {character, shortInteger, integer, enumeration, longInteger, null}; CreateNumericType: PROC[desc: NumericDescriptor, cc: CC, bti: BasicTypeInfo] RETURNS[CirioTypes.Type]; GetDescriptorFromCNumericType: PUBLIC PROC[type: CirioTypes.Type, cc: CC] RETURNS[NumericDescriptor]; CreateNumericNode: PROC[type: CirioTypes.Type, rep: REF ANY] RETURNS[CirioTypes.Node]; END.. ˆ CNumericTypes.mesa Copyright Σ 1991, 1992 by Xerox Corporation. All rights reserved. Hopcroft, July 25, 1989 10:56:52 am PDT Spreitze, August 13, 1991 7:45 pm PDT At the moment, the numeric stuff is Cedar specific (not Mimosa) CirioCode.GetTypeClass[type] = $numeric rep must have certain properties. If type is real, then rep must be REF REAL. If type is full-signed or subRange-signed, then rep must be REF INT. If type is full-unsigned or subRange-unsigned then rep must be REF CARD. In any case, the intended value of the node will be stored in the target of the REF ANY. Further, CedarCode.GetNodeRepresentation will return rep. Κv•NewlineDelimiter –(cedarcode) style™code™Kšœ Οeœ7™BK™'K™%—K˜šΟk ˜ Kšœ žœ-˜=Kšœžœ˜—K˜šΟn œžœž œ˜"Kšž˜K˜Kšžœžœ˜&Kšœžœ˜/K˜Kšœ?™?K˜K˜Kšœžœžœ˜4šœžœžœ˜%K˜K˜K˜"—K˜Kšœ žœ1˜AšœžœF˜XK™—šŸœžœžœžœ˜fKšœ'™'—K˜Kš Ÿœžœžœžœžœ˜eK˜š Ÿœžœžœžœžœ˜VKšœσ™σ—K˜Kšžœ˜——…—^\