// $Id: StructType.java,v 1.3 1999/11/05 04:36:00 msato Exp $
// $RWC_Release: Omni-1.6 $
// $RWC_Copyright:
//  Omni Compiler Software Version 1.5-1.6
//  Copyright (C) 2002 PC Cluster Consortium
//  
//  This software is free software; you can redistribute it and/or modify
//  it under the terms of the GNU Lesser General Public License version
//  2.1 published by the Free Software Foundation.
//  
//  Omni Compiler Software Version 1.0-1.4
//  Copyright (C) 1999, 2000, 2001.
//   Tsukuba Research Center, Real World Computing Partnership, Japan.
//  
//  Please check the Copyright and License information in the files named
//  COPYRIGHT and LICENSE under the top  directory of the Omni Compiler
//  Software release kit.
//  
//  
//  $
package exc.object;

public class StructType extends Xtype {
  Ident tag_name;
  Xobject id_list;
  StructType copy_ref;

  public StructType(int id, Xobject id_list, int size,byte align,
	boolean ic, boolean iv){
    super(Xtype.STRUCT,id,size,align,ic,iv);
    this.id_list = id_list;
  }

  public StructType(Xobject id_list){
    // bug: size, align must be calculated 
    super(Xtype.STRUCT,0,0,(byte)0,false,false);
  }

  public Xobject getMemberList() { return id_list; }
  public void setTagIdent(Ident name) { tag_name = name; }
  public Ident getTagIdent() { 
    if(tag_name == null){
      if(copy_ref != null) return copy_ref.getTagIdent();
      return null;
    }
    return tag_name; 
  }
  public String getTagName() {
    Ident id = getTagIdent();
    return id == null ? null : id.getName(); 
  }
  public Xtype copy() { 
    StructType t =  new StructType(0,id_list,size,align,is_const,is_volatile);
    t.copy_ref = this;
    return t;
  }
  public String toString(){
      return "S"+ Integer.toHexString(type_id);
  }
}

