+++ /dev/null
-package net.sourceforge.phpdt.internal.compiler.ast;
-
-import net.sourceforge.phpdt.internal.compiler.parser.Outlineable;
-import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren;
-import net.sourceforge.phpdt.internal.ui.PHPUiImages;
-import org.eclipse.jface.resource.ImageDescriptor;
-
-import java.util.ArrayList;
-import java.util.Enumeration;
-
-
-/**
- * This class is my ClassDeclaration 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 ClassDeclaration extends Statement implements OutlineableWithChildren {
-
- /** The name of the class. */
- public char[] name;
- /** The superclass. */
- public char[] superclass;
-
- public int declarationSourceStart;
- public int declarationSourceEnd;
- public int bodyStart;
- public int bodyEnd;
- /** The methods of the class. */
- private ArrayList methods = new ArrayList();
- /** The constructor of the class. */
- public MethodDeclaration constructor;
- /** The fields of the class. */
- private ArrayList fields = new ArrayList();
-
- private Object parent;
- /** The outlineable children (those will be in the node array too. */
- private ArrayList children = new ArrayList();
-
- /**
- * Create a class giving starting and ending offset
- * @param sourceStart starting offset
- * @param sourceEnd ending offset
- */
- public ClassDeclaration(Object parent,
- char[] name,
- char[] superclass,
- int sourceStart,
- int sourceEnd) {
- super(sourceStart, sourceEnd);
- this.parent = parent;
- this.name = name;
- this.superclass = superclass;
- }
-
- /**
- * Create a class giving starting and ending offset
- * @param sourceStart starting offset
- * @param sourceEnd ending offset
- */
- public ClassDeclaration(Object parent,
- char[] name,
- int sourceStart,
- int sourceEnd) {
- super(sourceStart, sourceEnd);
- this.parent = parent;
- this.name = name;
- }
-
- public void addMethod(MethodDeclaration method) {
- method.add(method);
- children.add(method);
- if (method.name.equals(name)) {
- constructor = method;
- }
- }
-
- public void addVariable(FieldDeclaration var) {
- for (int i = 0; i < var.vars.length; i++) {
- VariableDeclaration c = var.vars[i];
- children.add(c);
- }
- fields.add(var);
- }
-
- /**
- * Tell if the class has a constructor.
- * @return a boolean
- */
- public boolean hasConstructor() {
- return constructor != null;
- }
-
- /**
- * Return the class as String.
- * @param tab how many tabs before the class
- * @return the code of this class into String
- */
- public String toString(int tab) {
- return tabString(tab) + toStringHeader() + toStringBody(tab);
- }
-
- /**
- * Return the body of the class as String
- * @param tab how many tabs before the body of the class
- * @return the body as String
- */
- public String toStringBody(int tab) {
- final StringBuffer buff = new StringBuffer(" {");//$NON-NLS-1$
- if (fields != null) {
- for (int i = 0; i < fields.size(); i++) {
- FieldDeclaration field = (FieldDeclaration) fields.get(i);
- buff.append("\n"); //$NON-NLS-1$
- buff.append(field.toString(tab + 1));
- buff.append(";");//$NON-NLS-1$
- }
- }
- if (methods != null) {
- for (int i = 0; i < methods.size(); i++) {
- MethodDeclaration o = (MethodDeclaration) methods.get(i);
- buff.append("\n");//$NON-NLS-1$
- buff.append(o.toString(tab + 1));
- }
- }
- buff.append("\n").append(tabString(tab)).append("}"); //$NON-NLS-2$ //$NON-NLS-1$
- return buff.toString();
- }
-
- /**
- * Return the header of the class as String.
- * @return the header of the class
- */
- public String toStringHeader() {
- final StringBuffer buff = new StringBuffer("class").append(name);//$NON-NLS-1$
- if (superclass != null) {
- buff.append(" extends "); //$NON-NLS-1$
- buff.append(superclass);
- }
- return buff.toString();
- }
-
- /**
- * Get the image of a class.
- * @return the image that represents a php class
- */
- public ImageDescriptor getImage() {
- return PHPUiImages.DESC_CLASS;
- }
-
- public Object getParent() {
- return parent;
- }
-
- public boolean add(Outlineable o) {
- return children.add(o);
- }
-
- public Outlineable get(int index) {
- return (Outlineable) children.get(index);
- }
-
- public int size() {
- return children.size();
- }
-}