cm3ide/src/nodes/Type.i3


 Copyright 1996 Critical Mass, Inc. All rights reserved.    

INTERFACE Type;

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.

Type's implementation is in:


interface ID is in:


opaque type Type.T is in:


procedure Type.Init is in: