INTERFACEType ; IMPORT ID, Node; TYPE T <: Tx; Tx = Node.T OBJECT name : ID.T := ID.NoID; home : ID.T := ID.NoID; uid : UID := 0; alias: T := NIL; (* named types with same UID *) END; TYPE UID = INTEGER; (* Int32 would be good enough... *) CONST UnknownKind = '\000'; TYPE Info = REF RECORD uid : UID := 0; home : ID.T := ID.NoID; kind : CHAR := UnknownKind; info_file : TEXT := NIL; info_offset : INTEGER := 0; names : T := NIL; END; TYPE ObjectInfo = REF RECORD opaque : UID := NO_UID; concrete : UID := NO_UID; supertype : UID := NO_UID; subtypes : UID := NO_UID; next_peer : UID := NO_UID; END; CONST NO_UID = 0; INTEGER_UID = 16_195c2a74; REFANY_UID = 16_1c1c45e6; ADDRESS_UID = 16_08402063; ROOT_UID = 16_9d8fb489; UNROOT_UID = 16_898ea789; NULL_UID = 16_48ec756e; CONST BuiltinName = "<Modula-3 builtins>"; BuiltinInfo = "$ 0\n" & "@**PREDEFINED**\n" & "BM3_BUILTIN\n" & "?195c2a74 INTEGER\n" & "?97e237e2 CARDINAL\n" & "?1e59237d BOOLEAN\n" & "?08402063 ADDRESS\n" & "?56e16863 CHAR\n" & "?48e16572 REAL\n" & "?94fe32f6 LONGREAL\n" & "?9ee024e3 EXTENDED\n" & "?48ec756e NULL\n" & "?1c1c45e6 REFANY\n" & "?00000000 VOID\n" & "V9d8fb489 00000000 0 0 0 4\n" (* ROOT = OBJECT END *) & "E9d8fb489 ROOT\n" & "U898ea789 00000000 0 0 0 4\n" (* UNTRACED ROOT = UNTRACED OBJECT END *) & "E898ea789 UNTRACED-ROOT\n" & "Y50f86574 1c1c45e6\n" (* TEXT <: REFANY *) & "E50f86574 TEXT\n" & "Y1541f475 9d8fb489\n" (* MUTEX <: ROOT *) & "E1541f475 MUTEX\n" ; PROCEDURE Init (); END Type.