package org.eclipse.jdt.internal.compiler; | |
import org.eclipse.jdt.core.compiler.IProblem; | |
/* | |
* (c) Copyright IBM Corp. 2000, 2001. | |
* All Rights Reserved. | |
*/ | |
/** | |
* 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 IDocumentElementRequestor { | |
/** | |
* @param declarationStart - a source position corresponding to the start of the package | |
* declaration | |
* @param declarationEnd - a source position corresponding to the end of the package | |
* declaration | |
* @param javaDocPositions - answer back an array of sourceStart/sourceEnd | |
* positions of the available JavaDoc comments. The array is a flattened | |
* structure: 2*n entries with consecutives start and end positions. | |
* If no JavaDoc is available, then null is answered instead of an empty array. | |
* e.g. { 10, 20, 25, 45 } --> javadoc1 from 10 to 20, javadoc2 from 25 to 45 | |
* The array is equals to null if there are no javadoc comments | |
* @param name - the name of the package | |
* @param nameStartPosition - a source position corresponding to the first character of the | |
* name | |
* @param onDemand - a boolean equals to true if the import is an import on demand | |
*/ | |
void acceptImport( | |
int declarationStart, | |
int declarationEnd, | |
int[] javaDocPositions, | |
char[] name, | |
int nameStartPosition, | |
boolean onDemand); | |
/** | |
* @param declarationStart - a source position corresponding to the start of the package | |
* declaration | |
* @param declarationEnd - a source position corresponding to the end of the package | |
* declaration | |
* @param javaDocPositions - answer back an array of sourceStart/sourceEnd | |
* positions of the available JavaDoc comments. The array is a flattened | |
* structure: 2*n entries with consecutives start and end positions. | |
* If no JavaDoc is available, then null is answered instead of an empty array. | |
* e.g. { 10, 20, 25, 45 } --> javadoc1 from 10 to 20, javadoc2 from 25 to 45 | |
* The array is equals to null if there are no javadoc comments | |
* @param modifiers - the modifiers for this initializer | |
* @param modifiersStart - a source position corresponding to the start | |
* of the textual modifiers, is < 0 if there are no textual modifiers | |
* @param bodyStart - the position of the '{' | |
* @param bodyEnd - the position of the '}' | |
*/ | |
void acceptInitializer( | |
int declarationStart, | |
int declarationEnd, | |
int[] javaDocPositions, | |
int modifiers, | |
int modifiersStart, | |
int bodyStart, | |
int bodyEnd); | |
/* | |
* 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); | |
/** | |
* @param declarationStart - a source position corresponding to the start of the package | |
* declaration | |
* @param declarationEnd - a source position corresponding to the end of the package | |
* declaration | |
* @param javaDocPositions - answer back an array of sourceStart/sourceEnd | |
* positions of the available JavaDoc comments. The array is a flattened | |
* structure: 2*n entries with consecutives start and end positions. | |
* If no JavaDoc is available, then null is answered instead of an empty array. | |
* e.g. { 10, 20, 25, 45 } --> javadoc1 from 10 to 20, javadoc2 from 25 to 45 | |
* The array is equals to null if there are no javadoc comments | |
* @param name - the name of the package | |
* @param nameStartPosition - a source position corresponding to the first character of the | |
* name | |
*/ | |
void acceptPackage( | |
int declarationStart, | |
int declarationEnd, | |
int[] javaDocPositions, | |
char[] name, | |
int nameStartPosition); | |
/** | |
* @param problem - Used to report a problem while running the JDOM | |
*/ | |
void acceptProblem(IProblem problem); | |
/** | |
* @param declarationStart - a source position corresponding to the start | |
* of this class. | |
* @param javaDocPositions - answer back an array of sourceStart/sourceEnd | |
* positions of the available JavaDoc comments. The array is a flattened | |
* structure: 2*n entries with consecutives start and end positions. | |
* If no JavaDoc is available, then null is answered instead of an empty array. | |
* e.g. { 10, 20, 25, 45 } --> javadoc1 from 10 to 20, javadoc2 from 25 to 45 | |
* The array is equals to null if there are no javadoc comments | |
* @param modifiers - the modifiers for this class | |
* @param modifiersStart - a source position corresponding to the start | |
* of the textual modifiers, is < 0 if there are no textual modifiers | |
* @param classStart - a source position corresponding to the start | |
* of the keyword 'class' | |
* @param name - the name of the class | |
* @param nameStart - a source position corresponding to the start of the name | |
* @param nameEnd - a source position corresponding to the end of the name | |
* @param superclass - the name of the superclass | |
* @param superclassStart - a source position corresponding to the start | |
* of the superclass name | |
* @param superclassEnd - a source position corresponding to the end of the | |
* superclass name | |
* @param superinterfaces - the name of the superinterfaces | |
* @param superinterfaceStarts - an array of source positions corresponding | |
* to the start of their respective superinterface names | |
* @param superinterfaceEnds - an array of source positions corresponding | |
* to the end of their respective superinterface names | |
* @param bodyStart - a source position corresponding to the open bracket | |
* of the class body | |
*/ | |
void enterClass( | |
int declarationStart, | |
int[] javaDocPositions, | |
int modifiers, | |
int modifiersStart, | |
int classStart, | |
char[] name, | |
int nameStart, | |
int nameEnd, | |
char[] superclass, | |
int superclassStart, | |
int superclassEnd, | |
char[][] superinterfaces, | |
int[] superinterfaceStarts, | |
int[] superinterfaceEnds, | |
int bodyStart); | |
void enterCompilationUnit(); | |
/** | |
* @param declarationStart - a source position corresponding to the first character | |
* of this constructor declaration | |
* @param javaDocPositions - answer back an array of sourceStart/sourceEnd | |
* positions of the available JavaDoc comments. The array is a flattened | |
* structure: 2*n entries with consecutives start and end positions. | |
* If no JavaDoc is available, then null is answered instead of an empty array. | |
* e.g. { 10, 20, 25, 45 } --> javadoc1 from 10 to 20, javadoc2 from 25 to 45 | |
* The array is equals to null if there are no javadoc comments | |
* @param modifiers - the modifiers for this constructor converted to a flag | |
* @param modifiersStart - a source position corresponding to the first character of the | |
* textual modifiers | |
* @param name - the name of this constructor | |
* @param nameStart - a source position corresponding to the first character of the name | |
* @param nameEnd - a source position corresponding to the last character of the name | |
* @param parameterTypes - a list of parameter type names | |
* @param parameterTypeStarts - a list of source positions corresponding to the | |
* first character of each parameter type name | |
* @param parameterTypeEnds - a list of source positions corresponding to the | |
* last character of each parameter type name | |
* @param parameterNames - a list of the names of the parameters | |
* @param parametersEnd - a source position corresponding to the last character of the | |
* parameter list | |
* @param exceptionTypes - a list of the exception types | |
* @param exceptionTypeStarts - a list of source positions corresponding to the first | |
* character of the respective exception types | |
* @param exceptionTypeEnds - a list of source positions corresponding to the last | |
* character of the respective exception types | |
* @param bodyStart - a source position corresponding to the start of this | |
* constructor's body | |
*/ | |
void enterConstructor( | |
int declarationStart, | |
int[] javaDocPositions, | |
int modifiers, | |
int modifiersStart, | |
char[] name, | |
int nameStart, | |
int nameEnd, | |
char[][] parameterTypes, | |
int [] parameterTypeStarts, | |
int [] parameterTypeEnds, | |
char[][] parameterNames, | |
int [] parameterNameStarts, | |
int [] parameterNameEnds, | |
int parametersEnd, | |
char[][] exceptionTypes, | |
int [] exceptionTypeStarts, | |
int [] exceptionTypeEnds, | |
int bodyStart); | |
/** | |
* @param declarationStart - a source position corresponding to the first character | |
* of this field | |
* @param javaDocPositions - answer back an array of sourceStart/sourceEnd | |
* positions of the available JavaDoc comments. The array is a flattened | |
* structure: 2*n entries with consecutives start and end positions. | |
* If no JavaDoc is available, then null is answered instead of an empty array. | |
* e.g. { 10, 20, 25, 45 } --> javadoc1 from 10 to 20, javadoc2 from 25 to 45 | |
* The array is equals to null if there are no javadoc comments | |
* @param modifiers - the modifiers for this field converted to a flag | |
* @param modifiersStart - a source position corresponding to the first character of the | |
* textual modifiers | |
* @param type - the name of the field type | |
* @param typeStart - a source position corresponding to the start of the fields type | |
* @param typeEnd - a source position corresponding to the end of the fields type | |
* @param typeDimensionCount - the array dimension indicated on the type, i.e. int[] v | |
* @param name - the name of this constructor | |
* @param nameStart - a source position corresponding to the first character of the name | |
* @param nameEnd - a source position corresponding to the last character of the name | |
* @param extendedTypeDimensionCount - the array dimension indicated on the variable, | |
* i.e. int v[] | |
* @param extendedTypeDimnesionEnd - a source position corresponding to the end of | |
* the extened type dimension. This position should be -1 in case there is no extended | |
* dimension for the type. | |
*/ | |
void enterField( | |
int declarationStart, | |
int[] javaDocPositions, | |
int modifiers, | |
int modifiersStart, | |
char[] type, | |
int typeStart, | |
int typeEnd, | |
int typeDimensionCount, | |
char[] name, | |
int nameStart, | |
int nameEnd, | |
int extendedTypeDimensionCount, | |
int extendedTypeDimensionEnd); | |
/** | |
* @param declarationStart - a source position corresponding to the start | |
* of this class. | |
* @param javaDocPositions - answer back an array of sourceStart/sourceEnd | |
* positions of the available JavaDoc comments. The array is a flattened | |
* structure: 2*n entries with consecutives start and end positions. | |
* If no JavaDoc is available, then null is answered instead of an empty array. | |
* e.g. { 10, 20, 25, 45 } --> javadoc1 from 10 to 20, javadoc2 from 25 to 45 | |
* The array is equals to null if there are no javadoc comments | |
* @param modifiers - the modifiers for this class | |
* @param modifiersStart - a source position corresponding to the start | |
* of the textual modifiers, is < 0 if there are no textual modifiers | |
* @param interfaceStart - a source position corresponding to the start | |
* of the keyword 'interface' | |
* @param name - the name of the class | |
* @param nameStart - a source position corresponding to the start of the name | |
* @param nameEnd - a source position corresponding to the end of the name | |
* @param superinterfaces - the name of the superinterfaces | |
* @param superinterfaceStarts - an array of source positions corresponding | |
* to the start of their respective superinterface names | |
* @param superinterfaceEnds - an array of source positions corresponding | |
* to the end of their respective superinterface names | |
* @param bodyStart - a source position corresponding to the open bracket | |
* of the class body | |
*/ | |
void enterInterface( | |
int declarationStart, | |
int[] javaDocPositions, | |
int modifiers, | |
int modifiersStart, | |
int interfaceStart, | |
char[] name, | |
int nameStart, | |
int nameEnd, | |
char[][] superinterfaces, | |
int[] superinterfaceStarts, | |
int[] superinterfaceEnds, | |
int bodyStart); | |
/** | |
* @param declarationStart - a source position corresponding to the first character | |
* of this constructor declaration | |
* @param javaDocPositions - answer back an array of sourceStart/sourceEnd | |
* positions of the available JavaDoc comments. The array is a flattened | |
* structure: 2*n entries with consecutives start and end positions. | |
* If no JavaDoc is available, then null is answered instead of an empty array. | |
* e.g. { 10, 20, 25, 45 } --> javadoc1 from 10 to 20, javadoc2 from 25 to 45 | |
* The array is equals to null if there are no javadoc comments | |
* @param modifiers - the modifiers for this constructor converted to a flag | |
* @param modifiersStart - a source position corresponding to the first character of the | |
* textual modifiers | |
* @param returnType - the name of the return type | |
* @param returnTypeStart - a source position corresponding to the first character | |
* of the return type | |
* @param returnTypeEnd - a source position corresponding to the last character | |
* of the return type | |
* @param returnTypeDimensionCount - the array dimension count as supplied on the | |
* return type, i.e. public int[] foo() {} | |
* @param name - the name of this constructor | |
* @param nameStart - a source position corresponding to the first character of the name | |
* @param nameEnd - a source position corresponding to the last character of the name | |
* @param parameterTypes - a list of parameter type names | |
* @param parameterTypeStarts - a list of source positions corresponding to the | |
* first character of each parameter type name | |
* @param parameterTypeEnds - a list of source positions corresponding to the | |
* last character of each parameter type name | |
* @param parameterNames - a list of the names of the parameters | |
* @param parametersEnd - a source position corresponding to the last character of the | |
* parameter list | |
* @param extendedReturnTypeDimensionCount - the array dimension count as supplied on the | |
* end of the parameter list, i.e. public int foo()[] {} | |
* @param extendedReturnTypeDimensionEnd - a source position corresponding to the last character | |
* of the extended return type dimension. This position should be -1 in case there is no extended | |
* dimension for the type. | |
* @param exceptionTypes - a list of the exception types | |
* @param exceptionTypeStarts - a list of source positions corresponding to the first | |
* character of the respective exception types | |
* @param exceptionTypeEnds - a list of source positions corresponding to the last | |
* character of the respective exception types | |
* @param bodyStart - a source position corresponding to the start of this | |
* method's body | |
*/ | |
void enterMethod( | |
int declarationStart, | |
int[] javaDocPositions, | |
int modifiers, | |
int modifiersStart, | |
char[] returnType, | |
int returnTypeStart, | |
int returnTypeEnd, | |
int returnTypeDimensionCount, | |
char[] name, | |
int nameStart, | |
int nameEnd, | |
char[][] parameterTypes, | |
int [] parameterTypeStarts, | |
int [] parameterTypeEnds, | |
char[][] parameterNames, | |
int [] parameterNameStarts, | |
int [] parameterNameEnds, | |
int parametersEnd, | |
int extendedReturnTypeDimensionCount, | |
int extendedReturnTypeDimensionEnd, | |
char[][] exceptionTypes, | |
int [] exceptionTypeStarts, | |
int [] exceptionTypeEnds, | |
int bodyStart); | |
/** | |
* @param bodyEnd - a source position corresponding to the closing bracket of the class | |
* @param declarationEnd - a source position corresponding to the end of the class | |
* declaration. This can include whitespace and comments following the closing bracket. | |
*/ | |
void exitClass( | |
int bodyEnd, | |
int declarationEnd); | |
/** | |
* @param declarationEnd - a source position corresponding to the end of the compilation unit | |
*/ | |
void exitCompilationUnit( | |
int declarationEnd); | |
/** | |
* @param bodyEnd - a source position corresponding to the closing bracket of the method | |
* @param declarationEnd - a source position corresponding to the end of the method | |
* declaration. This can include whitespace and comments following the closing bracket. | |
*/ | |
void exitConstructor( | |
int bodyEnd, | |
int declarationEnd); | |
/** | |
* @param bodyEnd - a source position corresponding to the end of the field. | |
* @param declarationEnd - a source position corresponding to the end of the field. | |
* This can include whitespace and comments following the semi-colon. | |
*/ | |
void exitField( | |
int bodyEnd, | |
int declarationEnd); | |
/** | |
* @param bodyEnd - a source position corresponding to the closing bracket of the interface | |
* @param declarationEnd - a source position corresponding to the end of the interface | |
* declaration. This can include whitespace and comments following the closing bracket. | |
*/ | |
void exitInterface( | |
int bodyEnd, | |
int declarationEnd); | |
/** | |
* @param bodyEnd - a source position corresponding to the closing bracket of the method | |
* @param declarationEnd - a source position corresponding to the end of the method | |
* declaration. This can include whitespace and comments following the closing bracket. | |
*/ | |
void exitMethod( | |
int bodyEnd, | |
int declarationEnd); | |
} |