001 package edu.rice.cs.javalanglevels.tree;
002
003 import edu.rice.cs.javalanglevels.SourceInfo;
004
005 /**
006 * Class ParenthesizedExpressionList, a component of the JExpressionIF composite hierarchy.
007 * Note: null is not allowed as a value for any field.
008 * @version Generated automatically by ASTGen at Sun Mar 04 23:01:28 CST 2012
009 */
010 public class ParenthesizedExpressionList extends ExpressionList {
011
012 /**
013 * Constructs a ParenthesizedExpressionList.
014 * @throws java.lang.IllegalArgumentException If any parameter to the constructor is null.
015 */
016 public ParenthesizedExpressionList(SourceInfo in_sourceInfo, Expression[] in_expressions) {
017 super(in_sourceInfo, in_expressions);
018 }
019
020
021 public <RetType> RetType visit(JExpressionIFVisitor<RetType> visitor) { return visitor.forParenthesizedExpressionList(this); }
022 public void visit(JExpressionIFVisitor_void visitor) { visitor.forParenthesizedExpressionList(this); }
023
024 /**
025 * Implementation of toString that uses
026 * {@link #output} to generated nicely tabbed tree.
027 */
028 public java.lang.String toString() {
029 java.io.StringWriter w = new java.io.StringWriter();
030 output(w);
031 return w.toString();
032 }
033
034 /**
035 * Prints this object out as a nicely tabbed tree.
036 */
037 public void output(java.io.Writer writer) {
038 outputHelp(new TabPrintWriter(writer, 2));
039 }
040
041 public void outputHelp(TabPrintWriter writer) {
042 writer.print("ParenthesizedExpressionList" + ":");
043 writer.indent();
044
045 writer.startLine("");
046 writer.print("sourceInfo = ");
047 SourceInfo temp_sourceInfo = getSourceInfo();
048 if (temp_sourceInfo == null) {
049 writer.print("null");
050 } else {
051 writer.print(temp_sourceInfo);
052 }
053
054 writer.startLine("");
055 writer.print("expressions = ");
056 writer.print("{");
057 writer.indent();
058 for (int i = 0; i < getExpressions().length; i++) {
059 Expression temp_expressions = getExpressions()[i];
060 writer.startLine("#" + i + ": ");
061 if (temp_expressions == null) {
062 writer.print("null");
063 } else {
064 temp_expressions.outputHelp(writer);
065 }
066 }
067 writer.unindent();
068 if (getExpressions().length > 0) {
069 writer.startLine("");
070 }
071 writer.print("}");
072 writer.unindent();
073 }
074
075 /**
076 * Implementation of equals that is based on the values
077 * of the fields of the object. Thus, two objects
078 * created with identical parameters will be equal.
079 */
080 public boolean equals(java.lang.Object obj) {
081 if (obj == null) return false;
082 if ((obj.getClass() != this.getClass()) || (obj.hashCode() != this.hashCode())) {
083 return false;
084 } else {
085 ParenthesizedExpressionList casted = (ParenthesizedExpressionList) obj;
086 if (this.getExpressions().length != casted.getExpressions().length) return false;
087 for (int i = 0; i < getExpressions().length; i++) if (! getExpressions()[i].equals(casted.getExpressions()[i])) return false;
088 return true;
089 }
090 }
091
092 /**
093 * Implementation of hashCode that is consistent with
094 * equals. The value of the hashCode is formed by
095 * XORing the hashcode of the class object with
096 * the hashcodes of all the fields of the object.
097 */
098 protected int generateHashCode() {
099 int code = getClass().hashCode();
100 code ^= 0;
101 for (int i = 0; i < getExpressions().length; i++) code ^= getExpressions()[i].hashCode();
102 return code;
103 }
104 }