new version with WorkingCopy Management
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / ISourceElementRequestor.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ISourceElementRequestor.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/compiler/ISourceElementRequestor.java
new file mode 100644 (file)
index 0000000..dea0622
--- /dev/null
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2003 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package net.sourceforge.phpdt.internal.compiler;
+
+import net.sourceforge.phpdt.core.compiler.IProblem;
+
+/*
+ * Part of the source element parser responsible for building the output.
+ * It gets notified of structural information as they are detected, relying
+ * on the requestor to assemble them together, based on the notifications it got.
+ *
+ * The structural investigation includes:
+ * - package statement
+ * - import statements
+ * - top-level types: package member, member types (member types of member types...)
+ * - fields
+ * - methods
+ *
+ * If reference information is requested, then all source constructs are
+ * investigated and type, field & method references are provided as well.
+ *
+ * Any (parsing) problem encountered is also provided.
+ *
+ * All positions are relative to the exact source fed to the parser.
+ *
+ * Elements which are complex are notified in two steps:
+ * - enter<Element> : once the element header has been identified
+ * - exit<Element> : once the element has been fully consumed
+ *
+ * other simpler elements (package, import) are read all at once:
+ * - accept<Element>
+ */
+
+public interface ISourceElementRequestor {
+  void acceptConstructorReference(char[] typeName, int argCount, int sourcePosition);
+  //void acceptFieldReference(char[] fieldName, int sourcePosition);
+  /**
+   * @param declarationStart This is the position of the first character of the
+   *                                              import keyword.
+   * @param declarationEnd This is the position of the ';' ending the import statement
+   *                                            or the end of the comment following the import.
+   * @param name This is the name of the import like specified in the source including the dots. The '.*'
+   *             is never included in the name.
+   * @param onDemand set to true if the import is an import on demand (e.g. import java.io.*). False otherwise.
+   */
+  //void acceptImport(
+  //   int declarationStart,
+  //   int declarationEnd,
+  //   char[] name,
+  //   boolean onDemand);
+  /*
+   * Table of line separator position. This table is passed once at the end
+   * of the parse action, so as to allow computation of normalized ranges.
+   *
+   * A line separator might corresponds to several characters in the source,
+   * 
+   */
+  void acceptLineSeparatorPositions(int[] positions);
+  void acceptMethodReference(char[] methodName, int argCount, int sourcePosition);
+  //void acceptPackage(
+  //   int declarationStart,
+  //   int declarationEnd,
+  //   char[] name);
+  void acceptProblem(IProblem problem);
+  void acceptTypeReference(char[][] typeName, int sourceStart, int sourceEnd);
+  void acceptTypeReference(char[] typeName, int sourcePosition);
+  void acceptUnknownReference(char[][] name, int sourceStart, int sourceEnd);
+  void acceptUnknownReference(char[] name, int sourcePosition);
+  void enterClass(
+    int declarationStart,
+    int modifiers,
+    char[] name,
+    int nameSourceStart,
+    int nameSourceEnd,
+    char[] superclass,
+    char[][] superinterfaces);
+  void enterCompilationUnit();
+  void enterConstructor(
+    int declarationStart,
+    int modifiers,
+    char[] name,
+    int nameSourceStart,
+    int nameSourceEnd,
+    char[][] parameterTypes,
+    char[][] parameterNames,
+    char[][] exceptionTypes);
+  void enterField(int declarationStart, int modifiers, char[] type, char[] name, int nameSourceStart, int nameSourceEnd);
+  //void enterInitializer(
+  //   int declarationStart,
+  //   int modifiers);
+  void enterInterface(
+    int declarationStart,
+    int modifiers,
+    char[] name,
+    int nameSourceStart,
+    int nameSourceEnd,
+    char[][] superinterfaces);
+  void enterMethod(
+    int declarationStart,
+    int modifiers,
+    char[] returnType,
+    char[] name,
+    int nameSourceStart,
+    int nameSourceEnd,
+    char[][] parameterTypes,
+    char[][] parameterNames,
+    char[][] exceptionTypes);
+  void exitClass(int declarationEnd);
+  void exitCompilationUnit(int declarationEnd);
+  void exitConstructor(int declarationEnd);
+  /*
+   * initializationStart denotes the source start of the expression used for initializing
+   * the field if any (-1 if no initialization).
+   */
+  //void exitField(int initializationStart, int declarationEnd, int declarationSourceEnd);
+  void exitInitializer(int declarationEnd);
+  void exitInterface(int declarationEnd);
+  void exitMethod(int declarationEnd);
+}