First try, not finished
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / ast / Class.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Class.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ast/Class.java
new file mode 100644 (file)
index 0000000..cad94c9
--- /dev/null
@@ -0,0 +1,71 @@
+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();
+       }
+}