package net.sourceforge.phpdt.internal.compiler.ast; /** * This class is my Class declaration for php. * It is similar to org.eclipse.jdt.internal.compiler.ast.TypeDeclaration * It directly extends AstNode because a class cannot appear anywhere in php * @author Matthieu Casanova */ public class Class extends AstNode { /** The name of the class. */ public char[] name; /** The superclass. */ public char[] superclass; /** The fields of the class. */ public VariableDeclaration[] fields; public int declarationSourceStart; public int declarationSourceEnd; public int bodyStart; public int bodyEnd; public MethodDeclaration[] methods; public MethodDeclaration constructor; /** * Tell if the class has a constructor. * @return a boolean */ public boolean hasConstructor() { return constructor != null; } public String toString(int tab) { return tabString(tab) + toStringHeader() + toStringBody(tab); } public String toStringBody(int tab) { final StringBuffer buff = new StringBuffer(" {");//$NON-NLS-1$ if (fields != null) { for (int fieldI = 0; fieldI < fields.length; fieldI++) { if (fields[fieldI] != null) { buff.append("\n"); //$NON-NLS-1$ buff.append(fields[fieldI].toString(tab + 1)); buff.append(";");//$NON-NLS-1$ } } } if (methods != null) { for (int i = 0; i < methods.length; i++) { if (methods[i] != null) { buff.append("\n");//$NON-NLS-1$ buff.append(methods[i].toString(tab + 1)); } } } buff.append("\n").append(tabString(tab)).append("}"); //$NON-NLS-2$ //$NON-NLS-1$ return buff.toString(); } public String toStringHeader() { final StringBuffer buff = new StringBuffer("class").append(name); if (superclass != null) { buff.append(" extends "); //$NON-NLS-1$ buff.append(superclass); } return buff.toString(); } }