2 import java.util.Vector;
3 import IR.TypeDescriptor;
4 import IR.MethodDescriptor;
5 import IR.Tree.ExpressionNode;
7 public class CreateObjectNode extends ExpressionNode {
14 ArrayInitializerNode ain;
15 //The next 2 are unused but i will delete them once i am fully done with inner classes.
16 TypeDescriptor surroundingClass;
17 boolean isCreatedFromSurroundingClassName;
19 ExpressionNode surroundingClassObject;
20 boolean isSurroundingClassExpSet;
22 public CreateObjectNode(TypeDescriptor type, boolean isglobal, String disjointId) {
24 // surroundingClass = new TypeDescriptor("becauseTDdoesnthavedefaultconstructor");
25 argumentlist=new Vector();
26 this.isglobal=isglobal;
27 this.disjointId=disjointId;
29 isSurroundingClassExpSet = false;
32 public boolean isGlobal() {
36 public String getDisjointId() {
40 public void addFlagEffects(FlagEffects fe) {
44 public FlagEffects getFlagEffects() {
48 public void addArgument(ExpressionNode en) {
52 public void setConstructor(MethodDescriptor md) {
56 public MethodDescriptor getConstructor() {
60 public TypeDescriptor getType() {
64 public int numArgs() {
65 return argumentlist.size();
68 public ExpressionNode getArg(int i) {
69 return (ExpressionNode) argumentlist.get(i);
72 public void addArrayInitializer(ArrayInitializerNode ain) {
76 public ArrayInitializerNode getArrayInitializer() {
80 public String printNode(int indent) {
82 boolean isarray=td.isArray();
84 st="new "+td.toString()+"[";
86 st="new "+td.toString()+"(";
87 for(int i=0; i<argumentlist.size(); i++) {
88 ExpressionNode en=(ExpressionNode)argumentlist.get(i);
89 st+=en.printNode(indent);
90 if ((i+1)!=argumentlist.size()) {
101 if(isarray && this.ain != null) {
103 st += this.ain.printNode(indent);
110 return Kind.CreateObjectNode;
113 public Long evaluate() {
118 public void setSurroundingExpression( ExpressionNode en ) {
120 //System.out.println( "The expression node is : " + en );
121 surroundingClassObject = en ;
122 //System.out.println( "The expression node is : " + surroundingClassObject );
123 isSurroundingClassExpSet = true;
126 public ExpressionNode getSurroundingClassExpression() {
127 if( false == isSurroundingClassExpSet )
129 return surroundingClassObject;