353ab00f4da5dd9cb6851163957fd16ede24e733
[IRC.git] / Robust / src / IR / ClassDescriptor.java
1 package IR;
2 import java.util.*;
3 import IR.Tree.*;
4 import IR.FieldDescriptor;
5 import IR.MethodDescriptor;
6 import IR.NameDescriptor;
7
8 public class ClassDescriptor {
9     public ClassDescriptor() {
10         classname=null;
11         superclass=null;
12         fields=new Vector();
13         methods=new Vector();
14     }
15     String classname;
16     NameDescriptor superclass;
17     Modifiers modifiers;
18     Vector fields;
19     Vector methods;
20     
21     public Iterator getMethods() {
22         return methods.iterator();
23     }
24     
25     public String printTree(State state) {
26         int indent;
27         String st=modifiers.toString()+"class "+classname;
28         if (superclass!=null) 
29             st+="extends "+superclass.toString();
30         st+=" {\n";
31         indent=TreeNode.INDENT;
32         for(int i=0;i<fields.size();i++) {
33             FieldDescriptor fd=(FieldDescriptor)fields.get(i);
34             st+=TreeNode.printSpace(indent)+fd.toString()+"\n";
35         }
36         if (fields.size()>0)
37             st+="\n";
38
39         for(int i=0;i<methods.size();i++) {
40             MethodDescriptor md=(MethodDescriptor)methods.get(i);
41             st+=TreeNode.printSpace(indent)+md.toString()+" ";
42             BlockNode bn=state.getMethodBody(md);
43             st+=bn.printNode(indent)+"\n\n";
44         }
45         st+="}\n";
46         return st;
47     }
48
49     public void addField(FieldDescriptor fd) {
50         fields.add(fd);
51     }
52
53     public void addMethod(MethodDescriptor md) {
54         methods.add(md);
55     }
56   
57     public void setModifiers(Modifiers modifiers) {
58         this.modifiers=modifiers;
59     }
60
61     public void setName(String name) {
62         classname=name;
63     }
64
65     public void setSuper(NameDescriptor superclass) {
66         this.superclass=superclass;
67     }
68 }