m3tk/src/ast/M3AST_TM_F.i3


*************************************************************************
                      Copyright (C) Olivetti 1989                        
                          All Rights reserved                            
                                                                         
 Use and copy of this software and preparation of derivative works based 
 upon this software are permitted to any person, provided this same      
 copyright notice and the following Olivetti warranty disclaimer are      
 included in any copy of the software or any modification thereof or     
 derivative work therefrom made by any person.                           
                                                                         
 This software is made available AS IS and Olivetti disclaims all        
 warranties with respect to this software, whether expressed or implied  
 under any law, including all implied warranties of merchantibility and  
 fitness for any purpose. In no event shall Olivetti be liable for any   
 damages whatsoever resulting from loss of use, data or profits or       
 otherwise arising out of or in connection with the use or performance   
 of this software.                                                       
*************************************************************************

 Copyright (C) 1991, Digital Equipment Corporation           
 All rights reserved.                                        
 See the file COPYRIGHT for a full description.              

INTERFACE M3AST_TM_F;

IMPORT IntRefTbl;
IMPORT M3AST_AS, M3AST_SM;
IMPORT SeqM3AST_AS_TYPE_SPEC;
IMPORT M3AST_SM_F AS Previous_View;
This interface is a companion to M3AST_TM, in which the attributes are revealed to be object fields.

TYPE

  TYPE_SPEC = Previous_View.TYPE_SPEC OBJECT
    tmp_unit_id: M3AST_AS.UNIT_ID := NIL;
    tmp_type_code := 0;
  END;

  DEF_ID = Previous_View.DEF_ID OBJECT
    tmp_unit_id: M3AST_AS.UNIT_ID := NIL;
    tmp_recursive := FALSE;
  END;

  Type_id = Previous_View.Type_id OBJECT
    tmp_type: M3AST_AS.M3TYPE_NULL := NIL;
  END;
  Exc_id = Previous_View.Exc_id OBJECT
    tmp_type: M3AST_AS.M3TYPE_NULL := NIL;
  END;

  METHOD_OVERRIDE = Previous_View.METHOD_OVERRIDE OBJECT
    tmp_type: M3AST_AS.Object_type := NIL;
  END;

  Opaque_type_Revln = Previous_View.Opaque_type_Revln OBJECT
    tmp_count := 0;
    tmp_concrete_rev: M3AST_SM.TYPE_SPEC_UNSET := NIL; (* concrete revelation*)
    tmp_opaque_rev_s := SeqM3AST_AS_TYPE_SPEC.Null;    (* opaque revelations *)
  END;

  Opaque_type = Previous_View.Opaque_type OBJECT
    tmp_rev_type_spec: M3AST_SM.TYPE_SPEC_UNSET := NIL;
  END;

  Interface = Previous_View.Interface OBJECT
    tmp_def_id_table: IntRefTbl.T := NIL;
  END;

  Interface_AS_id = Previous_View.Interface_AS_id OBJECT
    tmp_used_id: M3AST_AS.Used_interface_id;
  END;

  Proc_decl = Previous_View.Proc_decl OBJECT
    tmp_needs_raises := FALSE;
    tmp_needs_return_check := FALSE;
  END;

  Raise_st = Previous_View.Raise_st OBJECT
    tmp_fatal := FALSE;
  END;

REVEAL
  M3AST_AS.TYPE_SPEC <: TYPE_SPEC;
  M3AST_AS.DEF_ID <: DEF_ID;
  M3AST_AS.Type_id <: Type_id;
  M3AST_AS.Interface_AS_id <: Interface_AS_id;
  M3AST_AS.Exc_id <: Exc_id;
  M3AST_AS.METHOD_OVERRIDE <: METHOD_OVERRIDE;
  M3AST_AS.Opaque_type <: Opaque_type;
  M3AST_AS.Interface <: Interface;
  M3AST_AS.Proc_decl <: Proc_decl;
  M3AST_AS.Raise_st <: Raise_st;

  M3AST_SM.Opaque_type_Revln <: Opaque_type_Revln;
pass through names

TYPE
  NODE = Previous_View.NODE;
  SRC_NODE = Previous_View.SRC_NODE;
  SRC_NODE_C = Previous_View.SRC_NODE_C;
  LITERAL = Previous_View.LITERAL;
  ID = Previous_View.ID;
  Whitespace = Previous_View.Whitespace;
  Comment = Previous_View.Comment;
  Pragma = Previous_View.Pragma;
  BadChar = Previous_View.BadChar;
  Token = Previous_View.Token;
DEF_ID = Previous_View.DEF_ID;
UNIT_ID = Previous_View.UNIT_ID;
  Module_id = Previous_View.Module_id;
  Interface_id = Previous_View.Interface_id;
Interface_AS_id = Previous_View.Interface_AS_id;
  F_Interface_id = Previous_View.F_Interface_id;
  TYPED_ID = Previous_View.TYPED_ID;
  FORMAL_ID = Previous_View.FORMAL_ID;
  F_Value_id = Previous_View.F_Value_id;
  F_Var_id = Previous_View.F_Var_id;
  F_Readonly_id = Previous_View.F_Readonly_id;
Type_id = Previous_View.Type_id;
  Const_id = Previous_View.Const_id;
  Var_id = Previous_View.Var_id;
  Proc_id = Previous_View.Proc_id;
  Enum_id = Previous_View.Enum_id;
  METHOD_OVERRIDE_ID = Previous_View.METHOD_OVERRIDE_ID;
  Method_id = Previous_View.Method_id;
  Override_id = Previous_View.Override_id;
  Field_id = Previous_View.Field_id;
  For_id = Previous_View.For_id;
  Handler_id = Previous_View.Handler_id;
  Tcase_id = Previous_View.Tcase_id;
  With_id = Previous_View.With_id;
Exc_id = Previous_View.Exc_id;
  USED_ID = Previous_View.USED_ID;
  Used_interface_id = Previous_View.Used_interface_id;
  Used_def_id = Previous_View.Used_def_id;
  Qual_used_id = Previous_View.Qual_used_id;
  Compilation_Unit = Previous_View.Compilation_Unit;
  UNIT = Previous_View.UNIT;
  UNIT_WITH_BODY = Previous_View.UNIT_WITH_BODY;
  UNIT_GEN_DEF = Previous_View.UNIT_GEN_DEF;
  Interface_gen_def = Previous_View.Interface_gen_def;
  Module_gen_def = Previous_View.Module_gen_def;
  UNIT_NORMAL = Previous_View.UNIT_NORMAL;
Interface = Previous_View.Interface;
  Module = Previous_View.Module;
  UNIT_GEN_INS = Previous_View.UNIT_GEN_INS;
  Interface_gen_ins = Previous_View.Interface_gen_ins;
  Module_gen_ins = Previous_View.Module_gen_ins;
  Unsafe = Previous_View.Unsafe;
  IMPORTED = Previous_View.IMPORTED;
  Simple_import = Previous_View.Simple_import;
  Import_item = Previous_View.Import_item;
  From_import = Previous_View.From_import;
  DECL_REVL = Previous_View.DECL_REVL;
  DECL = Previous_View.DECL;
  Const_decl_s = Previous_View.Const_decl_s;
  Type_decl_s = Previous_View.Type_decl_s;
  Var_decl_s = Previous_View.Var_decl_s;
  Exc_decl_s = Previous_View.Exc_decl_s;
Proc_decl = Previous_View.Proc_decl;
  Const_decl = Previous_View.Const_decl;
  TYPE_DECL = Previous_View.TYPE_DECL;
  Subtype_decl = Previous_View.Subtype_decl;
  Concrete_decl = Previous_View.Concrete_decl;
  Var_decl = Previous_View.Var_decl;
  Exc_decl = Previous_View.Exc_decl;
  Revelation_s = Previous_View.Revelation_s;
  REVELATION = Previous_View.REVELATION;
  Subtype_reveal = Previous_View.Subtype_reveal;
  Concrete_reveal = Previous_View.Concrete_reveal;
  EXP_TYPE = Previous_View.EXP_TYPE;
  M3TYPE = Previous_View.M3TYPE;
  Named_type = Previous_View.Named_type;
TYPE_SPEC = Previous_View.TYPE_SPEC;
  FLOAT_TYPE = Previous_View.FLOAT_TYPE;
  Real_type = Previous_View.Real_type;
  LongReal_type = Previous_View.LongReal_type;
  Extended_type = Previous_View.Extended_type;
  INT_TYPE = Previous_View.INT_TYPE;
  Integer_type = Previous_View.Integer_type;
  Longint_type = Previous_View.Longint_type;
  WideChar_type = Previous_View.WideChar_type;
  Null_type = Previous_View.Null_type;
  RefAny_type = Previous_View.RefAny_type;
  Address_type = Previous_View.Address_type;
  Root_type = Previous_View.Root_type;
  Untraced = Previous_View.Untraced;
  Packed_type = Previous_View.Packed_type;
  Array_type = Previous_View.Array_type;
  Enumeration_type = Previous_View.Enumeration_type;
  Set_type = Previous_View.Set_type;
  Subrange_type = Previous_View.Subrange_type;
  RANGE_EXP = Previous_View.RANGE_EXP;
  Range_EXP = Previous_View.Range_EXP;
  Range = Previous_View.Range;
  Record_type = Previous_View.Record_type;
  Fields = Previous_View.Fields;
  BRANDED_TYPE = Previous_View.BRANDED_TYPE;
  Brand = Previous_View.Brand;
  Ref_type = Previous_View.Ref_type;
  Object_type = Previous_View.Object_type;
METHOD_OVERRIDE = Previous_View.METHOD_OVERRIDE;
  Method = Previous_View.Method;
  Override = Previous_View.Override;
  Procedure_type = Previous_View.Procedure_type;
  Formal_param = Previous_View.Formal_param;
  RAISEES = Previous_View.RAISEES;
  Raisees_some = Previous_View.Raisees_some;
  Raisees_any = Previous_View.Raisees_any;
Opaque_type = Previous_View.Opaque_type;
  EXP = Previous_View.EXP;
  NUMERIC_LITERAL = Previous_View.NUMERIC_LITERAL;
  Integer_literal = Previous_View.Integer_literal;
  Longint_literal = Previous_View.Longint_literal;
  Real_literal = Previous_View.Real_literal;
  LongReal_literal = Previous_View.LongReal_literal;
  Extended_literal = Previous_View.Extended_literal;
  Char_literal = Previous_View.Char_literal;
  WideChar_literal = Previous_View.WideChar_literal;
  Text_literal = Previous_View.Text_literal;
  WideText_literal = Previous_View.WideText_literal;
  Nil_literal = Previous_View.Nil_literal;
  Exp_used_id = Previous_View.Exp_used_id;
  Call = Previous_View.Call;
  NEWCall = Previous_View.NEWCall;
  Actual = Previous_View.Actual;
  Index = Previous_View.Index;
  Constructor = Previous_View.Constructor;
  Propagate = Previous_View.Propagate;
  CONS_ELEM = Previous_View.CONS_ELEM;
  RANGE_EXP_elem = Previous_View.RANGE_EXP_elem;
  Actual_elem = Previous_View.Actual_elem;
  BINARY = Previous_View.BINARY;
  Plus = Previous_View.Plus;
  Minus = Previous_View.Minus;
  Times = Previous_View.Times;
  Rdiv = Previous_View.Rdiv;
  Textcat = Previous_View.Textcat;
  Div = Previous_View.Div;
  Mod = Previous_View.Mod;
  Eq = Previous_View.Eq;
  Ne = Previous_View.Ne;
  Gt = Previous_View.Gt;
  Lt = Previous_View.Lt;
  Ge = Previous_View.Ge;
  Le = Previous_View.Le;
  And = Previous_View.And;
  Or = Previous_View.Or;
  In = Previous_View.In;
  Select = Previous_View.Select;
  UNARY = Previous_View.UNARY;
  Not = Previous_View.Not;
  Unaryplus = Previous_View.Unaryplus;
  Unaryminus = Previous_View.Unaryminus;
  Deref = Previous_View.Deref;
  STM = Previous_View.STM;
  STM_WSS = Previous_View.STM_WSS;
  SUBSTM_WSS = Previous_View.SUBSTM_WSS;
  Assign_st = Previous_View.Assign_st;
  Call_st = Previous_View.Call_st;
  Case_st = Previous_View.Case_st;
  Case = Previous_View.Case;
  Else_stm = Previous_View.Else_stm;
  Eval_st = Previous_View.Eval_st;
  Exit_st = Previous_View.Exit_st;
Raise_st = Previous_View.Raise_st;
  Typecase_st = Previous_View.Typecase_st;
  Tcase = Previous_View.Tcase;
  Handler = Previous_View.Handler;
  Return_st = Previous_View.Return_st;
  For_st = Previous_View.For_st;
  By = Previous_View.By;
  If_st = Previous_View.If_st;
  Elsif = Previous_View.Elsif;
  Lock_st = Previous_View.Lock_st;
  Loop_st = Previous_View.Loop_st;
  Repeat_st = Previous_View.Repeat_st;
  Try_st = Previous_View.Try_st;
  TRY_TAIL = Previous_View.TRY_TAIL;
  Try_except = Previous_View.Try_except;
  Try_finally = Previous_View.Try_finally;
  While_st = Previous_View.While_st;
  With_st = Previous_View.With_st;
  Binding = Previous_View.Binding;
  Block = Previous_View.Block;
  Bad_EXP = Previous_View.Bad_EXP;
  Bad_M3TYPE = Previous_View.Bad_M3TYPE;
  Bad_STM = Previous_View.Bad_STM;
Opaque_type_Revln = Previous_View.Opaque_type_Revln;
  INIT_ID = Previous_View.INIT_ID;
  CCV_ID = Previous_View.CCV_ID;
  RECOBJ_ID = Previous_View.RECOBJ_ID;
  REDEF_ID = Previous_View.REDEF_ID;
  Type_type = Previous_View.Type_type;
  Any_type = Previous_View.Any_type;
  Void_type = Previous_View.Void_type;
  TypeActual = Previous_View.TypeActual;
  SCOPE = Previous_View.SCOPE;

END M3AST_TM_F.